%global _empty_manifest_terminate_build 0 Name: python-future-annotations Version: 1.0.0 Release: 1 Summary: A backport of __future__ annotations to python<3.7 License: MIT URL: https://github.com/asottile/future-annotations Source0: https://mirrors.nju.edu.cn/pypi/web/packages/45/3a/168feb6471a3142b1a501947e2f45afbbe9753e44f9d05317553ad7c04c0/future_annotations-1.0.0.tar.gz BuildArch: noarch Requires: python3-tokenize-rt Requires: python3-tokenize-rt %description A backport of \_\_future\_\_ annotations to python<3.7. ## Installation `pip install future-annotations` ## Usage Include the following encoding cookie at the top of your file (this replaces the utf-8 cookie if you already have it): ```python # -*- coding: future_annotations -*- ``` And then write python3.7+ forward-annotation code as usual! ```python # -*- coding: future_annotations -*- class C: @classmethod def make(cls) -> C: return cls() print(C.make()) ``` ```console $ python3.6 main.py <__main__.C object at 0x7fb50825dd90> $ mypy main.py Success: no issues found in 1 source file ``` ## Showing transformed source `future-annotations` also includes a cli to show transformed source. ```console $ future-annotations-show main.py # ****************************** -*- class C: @classmethod def make(cls) -> 'C': return cls() print(C.make()) ``` ## How does this work? `future-annotations` has two parts: 1. A utf-8 compatible `codec` which performs source manipulation - The `codec` first decodes the source bytes using the UTF-8 codec - The `codec` then leverages [tokenize-rt](https://github.com/asottile/tokenize-rt) to rewrite annotations. 2. A `.pth` file which registers a codec on interpreter startup. ## when you aren't using normal `site` registration in setups (such as aws lambda) where you utilize `PYTHONPATH` or `sys.path` instead of truly installed packages, the `.pth` magic above will not take. for those circumstances, you'll need to manually initialize `future-annotations` in a non-annotations wrapper. for instance: ```python import future_annotations future_annotations.register() from actual_main import main if __name__ == '__main__': exit(main()) ``` ## you may also like - [future-breakpoint](https://github.com/asottile/future-breakpoint) - [future-fstrings](https://github.com/asottile/future-fstrings) %package -n python3-future-annotations Summary: A backport of __future__ annotations to python<3.7 Provides: python-future-annotations BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-future-annotations A backport of \_\_future\_\_ annotations to python<3.7. ## Installation `pip install future-annotations` ## Usage Include the following encoding cookie at the top of your file (this replaces the utf-8 cookie if you already have it): ```python # -*- coding: future_annotations -*- ``` And then write python3.7+ forward-annotation code as usual! ```python # -*- coding: future_annotations -*- class C: @classmethod def make(cls) -> C: return cls() print(C.make()) ``` ```console $ python3.6 main.py <__main__.C object at 0x7fb50825dd90> $ mypy main.py Success: no issues found in 1 source file ``` ## Showing transformed source `future-annotations` also includes a cli to show transformed source. ```console $ future-annotations-show main.py # ****************************** -*- class C: @classmethod def make(cls) -> 'C': return cls() print(C.make()) ``` ## How does this work? `future-annotations` has two parts: 1. A utf-8 compatible `codec` which performs source manipulation - The `codec` first decodes the source bytes using the UTF-8 codec - The `codec` then leverages [tokenize-rt](https://github.com/asottile/tokenize-rt) to rewrite annotations. 2. A `.pth` file which registers a codec on interpreter startup. ## when you aren't using normal `site` registration in setups (such as aws lambda) where you utilize `PYTHONPATH` or `sys.path` instead of truly installed packages, the `.pth` magic above will not take. for those circumstances, you'll need to manually initialize `future-annotations` in a non-annotations wrapper. for instance: ```python import future_annotations future_annotations.register() from actual_main import main if __name__ == '__main__': exit(main()) ``` ## you may also like - [future-breakpoint](https://github.com/asottile/future-breakpoint) - [future-fstrings](https://github.com/asottile/future-fstrings) %package help Summary: Development documents and examples for future-annotations Provides: python3-future-annotations-doc %description help A backport of \_\_future\_\_ annotations to python<3.7. ## Installation `pip install future-annotations` ## Usage Include the following encoding cookie at the top of your file (this replaces the utf-8 cookie if you already have it): ```python # -*- coding: future_annotations -*- ``` And then write python3.7+ forward-annotation code as usual! ```python # -*- coding: future_annotations -*- class C: @classmethod def make(cls) -> C: return cls() print(C.make()) ``` ```console $ python3.6 main.py <__main__.C object at 0x7fb50825dd90> $ mypy main.py Success: no issues found in 1 source file ``` ## Showing transformed source `future-annotations` also includes a cli to show transformed source. ```console $ future-annotations-show main.py # ****************************** -*- class C: @classmethod def make(cls) -> 'C': return cls() print(C.make()) ``` ## How does this work? `future-annotations` has two parts: 1. A utf-8 compatible `codec` which performs source manipulation - The `codec` first decodes the source bytes using the UTF-8 codec - The `codec` then leverages [tokenize-rt](https://github.com/asottile/tokenize-rt) to rewrite annotations. 2. A `.pth` file which registers a codec on interpreter startup. ## when you aren't using normal `site` registration in setups (such as aws lambda) where you utilize `PYTHONPATH` or `sys.path` instead of truly installed packages, the `.pth` magic above will not take. for those circumstances, you'll need to manually initialize `future-annotations` in a non-annotations wrapper. for instance: ```python import future_annotations future_annotations.register() from actual_main import main if __name__ == '__main__': exit(main()) ``` ## you may also like - [future-breakpoint](https://github.com/asottile/future-breakpoint) - [future-fstrings](https://github.com/asottile/future-fstrings) %prep %autosetup -n future-annotations-1.0.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-future-annotations -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Sun Apr 23 2023 Python_Bot - 1.0.0-1 - Package Spec generated