diff options
Diffstat (limited to 'python-biodome.spec')
| -rw-r--r-- | python-biodome.spec | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/python-biodome.spec b/python-biodome.spec new file mode 100644 index 0000000..bc222c7 --- /dev/null +++ b/python-biodome.spec @@ -0,0 +1,177 @@ +%global _empty_manifest_terminate_build 0 +Name: python-biodome +Version: 2022.9.1 +Release: 1 +Summary: biodome +License: None +URL: https://github.com/cjrh/biodome +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/34/57/04095a851879aadf857c9f52d737863521220eab8b43ac15bee5ce100ebd/biodome-2022.9.1.tar.gz +BuildArch: noarch + + +%description +*Controlled environments* +Reading environment variables with ``os.environ`` is pretty easy, but after +a while one gets pretty tired of having to cast variables to the right types +and handling fallback to defaults. +This library provides a clean way read environment variables and fall back +to defaults in a sane way. +**How you were doing it:** + import os + try: + TIMEOUT = int(os.environ.get('TIMEOUT', 10)) + except ValueError: + TIMEOUT = 10 +Wordy, boilerplate, DRY violation, etc. +**How you will be doing it:** + import biodome + TIMEOUT = biodome.environ.get('TIMEOUT', 10) +That's right, it becomes a single line. But there's a magic trick here: how +does ``biodome`` know that ``TIMEOUT`` should be set to an ``int``? It knows +because it looks at the type of the default arguments. This works for a bunch +of different things: + # Lists + os.environ['IGNORE_KEYS'] = '[1, 2, 3]' + biodome.environ.get('TIMEOUT', []) == [1, 2, 3] + # Dicts + os.environ['SETTINGS'] = '{"a": 1, "b": 2}' + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) +If you look carefully at the above, you can see that we *set* the data via +the stdlib ``os.environ`` dictionary; that's right, ``biodome.environ`` is a +**drop-in replacement** for ``os.environ``. You don't even have to switch out +your entire codebase, you can do it piece by piece. +And while we're on the subject of *setting* env vars, with ``biodome`` you +don't have to cast them first, it does string casting internally automatically, +unlike ``os.environ``: + # Dicts + biodome.environ['SETTINGS'] = dict(b=2, a=1) # No cast required + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) + +%package -n python3-biodome +Summary: biodome +Provides: python-biodome +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-biodome +*Controlled environments* +Reading environment variables with ``os.environ`` is pretty easy, but after +a while one gets pretty tired of having to cast variables to the right types +and handling fallback to defaults. +This library provides a clean way read environment variables and fall back +to defaults in a sane way. +**How you were doing it:** + import os + try: + TIMEOUT = int(os.environ.get('TIMEOUT', 10)) + except ValueError: + TIMEOUT = 10 +Wordy, boilerplate, DRY violation, etc. +**How you will be doing it:** + import biodome + TIMEOUT = biodome.environ.get('TIMEOUT', 10) +That's right, it becomes a single line. But there's a magic trick here: how +does ``biodome`` know that ``TIMEOUT`` should be set to an ``int``? It knows +because it looks at the type of the default arguments. This works for a bunch +of different things: + # Lists + os.environ['IGNORE_KEYS'] = '[1, 2, 3]' + biodome.environ.get('TIMEOUT', []) == [1, 2, 3] + # Dicts + os.environ['SETTINGS'] = '{"a": 1, "b": 2}' + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) +If you look carefully at the above, you can see that we *set* the data via +the stdlib ``os.environ`` dictionary; that's right, ``biodome.environ`` is a +**drop-in replacement** for ``os.environ``. You don't even have to switch out +your entire codebase, you can do it piece by piece. +And while we're on the subject of *setting* env vars, with ``biodome`` you +don't have to cast them first, it does string casting internally automatically, +unlike ``os.environ``: + # Dicts + biodome.environ['SETTINGS'] = dict(b=2, a=1) # No cast required + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) + +%package help +Summary: Development documents and examples for biodome +Provides: python3-biodome-doc +%description help +*Controlled environments* +Reading environment variables with ``os.environ`` is pretty easy, but after +a while one gets pretty tired of having to cast variables to the right types +and handling fallback to defaults. +This library provides a clean way read environment variables and fall back +to defaults in a sane way. +**How you were doing it:** + import os + try: + TIMEOUT = int(os.environ.get('TIMEOUT', 10)) + except ValueError: + TIMEOUT = 10 +Wordy, boilerplate, DRY violation, etc. +**How you will be doing it:** + import biodome + TIMEOUT = biodome.environ.get('TIMEOUT', 10) +That's right, it becomes a single line. But there's a magic trick here: how +does ``biodome`` know that ``TIMEOUT`` should be set to an ``int``? It knows +because it looks at the type of the default arguments. This works for a bunch +of different things: + # Lists + os.environ['IGNORE_KEYS'] = '[1, 2, 3]' + biodome.environ.get('TIMEOUT', []) == [1, 2, 3] + # Dicts + os.environ['SETTINGS'] = '{"a": 1, "b": 2}' + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) +If you look carefully at the above, you can see that we *set* the data via +the stdlib ``os.environ`` dictionary; that's right, ``biodome.environ`` is a +**drop-in replacement** for ``os.environ``. You don't even have to switch out +your entire codebase, you can do it piece by piece. +And while we're on the subject of *setting* env vars, with ``biodome`` you +don't have to cast them first, it does string casting internally automatically, +unlike ``os.environ``: + # Dicts + biodome.environ['SETTINGS'] = dict(b=2, a=1) # No cast required + biodome.environ.get('SETTINGS', {}) == dict(a=1, b=2) + +%prep +%autosetup -n biodome-2022.9.1 + +%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-biodome -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 2022.9.1-1 +- Package Spec generated |
