summaryrefslogtreecommitdiff
path: root/python-biodome.spec
blob: 4fcb9ce49f3de016e3bcf648f750c595f4c5beaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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
* Tue May 30 2023 Python_Bot <Python_Bot@openeuler.org> - 2022.9.1-1
- Package Spec generated