diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-envyaml.spec | 610 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 612 insertions, 0 deletions
@@ -0,0 +1 @@ +/envyaml-1.10.211231.tar.gz diff --git a/python-envyaml.spec b/python-envyaml.spec new file mode 100644 index 0000000..e8612c7 --- /dev/null +++ b/python-envyaml.spec @@ -0,0 +1,610 @@ +%global _empty_manifest_terminate_build 0 +Name: python-envyaml +Version: 1.10.211231 +Release: 1 +Summary: Simple YAML configuration file parser with easy access for structured data +License: MIT +URL: https://github.com/thesimj/envyaml +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/aa/ce/bcc062f1d55368713674cf55851a4d9dfa77835c0258753d0f23dff70743/envyaml-1.10.211231.tar.gz +BuildArch: noarch + +Requires: python3-PyYAML + +%description +# EnvYAML | Easy configuration file parser for structured data + +[](https://pypi.python.org/pypi/envyaml/) +[](https://github.com/thesimj/envyaml/actions/workflows/main.yml) +[](https://coveralls.io/github/thesimj/envyaml?branch=master) + +[](https://github.com/psf/black) +[](https://lgtm.com/projects/g/thesimj/envyaml/alerts/) +[](https://lgtm.com/projects/g/thesimj/envyaml/context:python) +[](LICENSE) + + +### Motivation +Modern configuration files become to be more and more complex, flexible, and readable. +YAML file format is perfect to store configuration but had no option to pass environment variables. They give flexibility, readability and provide an option to store complex data structure. +This project goal is to simplify usage of the YAML file and environment variables as program configuration files with easy config key access. + + +### Install +```bash +pip install envyaml +``` + + +### Basic usage +Let's assume we had a project with this config file `env.yaml` + +```yaml +# env.yaml +project: + name: "${PROJECT_NAME}-${PROJECT_ID}" + +database: + host: $DATABASE_HOST + port: 3301 + username: username + password: $DATABASE_PASSWORD + database: test + + table: + user: table_user + blog: table_blog + + query: |- + SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + + insert: |- + INSERT INTO "{table}" (user, login) VALUES ($1, $2) + +redis: + host: $REDIS_HOST|127.0.0.1 + port: 5040 + db: $REDIS_DB|3 # with default value + + config: + expire: 300 + prefix: $REDIS_PREFIX + +escaped: $$.extra + +empty_env: $NOT_EXIST_ENV_VARIABLE +``` + +Environment variables set to +``` +PROJECT_NAME=simple-hello +PROJECT_ID=42 +DATABASE_HOST=xxx.xxx.xxx.xxx +DATABASE_PASSWORD=super-secret-password +REDIS_PREFIX=state +``` + +Parse file with `EnvYAML` + +```python +from envyaml import EnvYAML + +# read file env.yaml and parse config +env = EnvYAML('env.yaml') + +# access project name +print(env['project.name']) + +# >> simple-hello-42 + +# access whole database section +print(env['database']) + +# { +# 'database': 'test', +# 'host': 'xxx.xxx.xxx.xxx', +# 'password': 'super-secret-password', +# 'port': 3301, +# 'table': +# { +# 'blog': 'table_blog', +# 'user': 'table_user' +# }, +# 'username': 'username' +# } + +# access database host value as key item +print(env['database.host']) + +# >> xxx.xxx.xxx.xxx + +# access database user table value as key item +print(env['database.table.user']) + +# >> table_user + +# get sql query with $1,$2,$3 variables +print(env['database.query']) + +# >> SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + +# using default values if variable not defined +# one example is redis host and redis port, when $REDIS_HOST not set then default value will be used +print(env['redis.host']) + +# >> 127.0.0.1 + +# one example is redis host and redis port, when $REDIS_DB not set then default value will be used +print(env['redis.db']) + +# >> 3 + +# access list items by number +print(env['list_test'][0]) + +# >> one + +# access list items by number as key +print(env['list_test.1']) + +# >> two + +# test if you have key +print('redis.port' in env) + +# >> True + +``` + +Access config with `get` function and default value +```python +print(env.get('not.exist.value', 'default')) +# >> default + +print(env.get('empty_env', 'default')) +# >> default + +print(env['empty_env']) +# >> None +``` + +Use `format` function to update placeholder +```python +print(env.format('database.insert', table="users")) +# >> INSERT INTO "users" (user, login) VALUES ($1, $2) +``` + +### Strict mode +This mode is **enable by default** and prevents from declaring variables that do not exist in `environment variables` or `.env` file. This leads to having runtime `ValueError` exception when variables do not define with message `Strict mode enabled, variable $VAR not defined!`. To disable **strict** mode specify `strict=False` at EnvYAML object initialization. Another option to disable `strict` mode is to define `ENVYAML_STRICT_DISABLE` environment variable before initializing EnvYAML object. + + +### Escaped variables +In case of usage `$` in env.yaml file as value double `$$` should be used. Example: +Use `escaped` variable +```python +print(env['escaped']) +# >> $.extra +``` + + +### License +MIT licensed. See the [LICENSE](LICENSE) file for more details. + + + + +%package -n python3-envyaml +Summary: Simple YAML configuration file parser with easy access for structured data +Provides: python-envyaml +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-envyaml +# EnvYAML | Easy configuration file parser for structured data + +[](https://pypi.python.org/pypi/envyaml/) +[](https://github.com/thesimj/envyaml/actions/workflows/main.yml) +[](https://coveralls.io/github/thesimj/envyaml?branch=master) + +[](https://github.com/psf/black) +[](https://lgtm.com/projects/g/thesimj/envyaml/alerts/) +[](https://lgtm.com/projects/g/thesimj/envyaml/context:python) +[](LICENSE) + + +### Motivation +Modern configuration files become to be more and more complex, flexible, and readable. +YAML file format is perfect to store configuration but had no option to pass environment variables. They give flexibility, readability and provide an option to store complex data structure. +This project goal is to simplify usage of the YAML file and environment variables as program configuration files with easy config key access. + + +### Install +```bash +pip install envyaml +``` + + +### Basic usage +Let's assume we had a project with this config file `env.yaml` + +```yaml +# env.yaml +project: + name: "${PROJECT_NAME}-${PROJECT_ID}" + +database: + host: $DATABASE_HOST + port: 3301 + username: username + password: $DATABASE_PASSWORD + database: test + + table: + user: table_user + blog: table_blog + + query: |- + SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + + insert: |- + INSERT INTO "{table}" (user, login) VALUES ($1, $2) + +redis: + host: $REDIS_HOST|127.0.0.1 + port: 5040 + db: $REDIS_DB|3 # with default value + + config: + expire: 300 + prefix: $REDIS_PREFIX + +escaped: $$.extra + +empty_env: $NOT_EXIST_ENV_VARIABLE +``` + +Environment variables set to +``` +PROJECT_NAME=simple-hello +PROJECT_ID=42 +DATABASE_HOST=xxx.xxx.xxx.xxx +DATABASE_PASSWORD=super-secret-password +REDIS_PREFIX=state +``` + +Parse file with `EnvYAML` + +```python +from envyaml import EnvYAML + +# read file env.yaml and parse config +env = EnvYAML('env.yaml') + +# access project name +print(env['project.name']) + +# >> simple-hello-42 + +# access whole database section +print(env['database']) + +# { +# 'database': 'test', +# 'host': 'xxx.xxx.xxx.xxx', +# 'password': 'super-secret-password', +# 'port': 3301, +# 'table': +# { +# 'blog': 'table_blog', +# 'user': 'table_user' +# }, +# 'username': 'username' +# } + +# access database host value as key item +print(env['database.host']) + +# >> xxx.xxx.xxx.xxx + +# access database user table value as key item +print(env['database.table.user']) + +# >> table_user + +# get sql query with $1,$2,$3 variables +print(env['database.query']) + +# >> SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + +# using default values if variable not defined +# one example is redis host and redis port, when $REDIS_HOST not set then default value will be used +print(env['redis.host']) + +# >> 127.0.0.1 + +# one example is redis host and redis port, when $REDIS_DB not set then default value will be used +print(env['redis.db']) + +# >> 3 + +# access list items by number +print(env['list_test'][0]) + +# >> one + +# access list items by number as key +print(env['list_test.1']) + +# >> two + +# test if you have key +print('redis.port' in env) + +# >> True + +``` + +Access config with `get` function and default value +```python +print(env.get('not.exist.value', 'default')) +# >> default + +print(env.get('empty_env', 'default')) +# >> default + +print(env['empty_env']) +# >> None +``` + +Use `format` function to update placeholder +```python +print(env.format('database.insert', table="users")) +# >> INSERT INTO "users" (user, login) VALUES ($1, $2) +``` + +### Strict mode +This mode is **enable by default** and prevents from declaring variables that do not exist in `environment variables` or `.env` file. This leads to having runtime `ValueError` exception when variables do not define with message `Strict mode enabled, variable $VAR not defined!`. To disable **strict** mode specify `strict=False` at EnvYAML object initialization. Another option to disable `strict` mode is to define `ENVYAML_STRICT_DISABLE` environment variable before initializing EnvYAML object. + + +### Escaped variables +In case of usage `$` in env.yaml file as value double `$$` should be used. Example: +Use `escaped` variable +```python +print(env['escaped']) +# >> $.extra +``` + + +### License +MIT licensed. See the [LICENSE](LICENSE) file for more details. + + + + +%package help +Summary: Development documents and examples for envyaml +Provides: python3-envyaml-doc +%description help +# EnvYAML | Easy configuration file parser for structured data + +[](https://pypi.python.org/pypi/envyaml/) +[](https://github.com/thesimj/envyaml/actions/workflows/main.yml) +[](https://coveralls.io/github/thesimj/envyaml?branch=master) + +[](https://github.com/psf/black) +[](https://lgtm.com/projects/g/thesimj/envyaml/alerts/) +[](https://lgtm.com/projects/g/thesimj/envyaml/context:python) +[](LICENSE) + + +### Motivation +Modern configuration files become to be more and more complex, flexible, and readable. +YAML file format is perfect to store configuration but had no option to pass environment variables. They give flexibility, readability and provide an option to store complex data structure. +This project goal is to simplify usage of the YAML file and environment variables as program configuration files with easy config key access. + + +### Install +```bash +pip install envyaml +``` + + +### Basic usage +Let's assume we had a project with this config file `env.yaml` + +```yaml +# env.yaml +project: + name: "${PROJECT_NAME}-${PROJECT_ID}" + +database: + host: $DATABASE_HOST + port: 3301 + username: username + password: $DATABASE_PASSWORD + database: test + + table: + user: table_user + blog: table_blog + + query: |- + SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + + insert: |- + INSERT INTO "{table}" (user, login) VALUES ($1, $2) + +redis: + host: $REDIS_HOST|127.0.0.1 + port: 5040 + db: $REDIS_DB|3 # with default value + + config: + expire: 300 + prefix: $REDIS_PREFIX + +escaped: $$.extra + +empty_env: $NOT_EXIST_ENV_VARIABLE +``` + +Environment variables set to +``` +PROJECT_NAME=simple-hello +PROJECT_ID=42 +DATABASE_HOST=xxx.xxx.xxx.xxx +DATABASE_PASSWORD=super-secret-password +REDIS_PREFIX=state +``` + +Parse file with `EnvYAML` + +```python +from envyaml import EnvYAML + +# read file env.yaml and parse config +env = EnvYAML('env.yaml') + +# access project name +print(env['project.name']) + +# >> simple-hello-42 + +# access whole database section +print(env['database']) + +# { +# 'database': 'test', +# 'host': 'xxx.xxx.xxx.xxx', +# 'password': 'super-secret-password', +# 'port': 3301, +# 'table': +# { +# 'blog': 'table_blog', +# 'user': 'table_user' +# }, +# 'username': 'username' +# } + +# access database host value as key item +print(env['database.host']) + +# >> xxx.xxx.xxx.xxx + +# access database user table value as key item +print(env['database.table.user']) + +# >> table_user + +# get sql query with $1,$2,$3 variables +print(env['database.query']) + +# >> SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3 + +# using default values if variable not defined +# one example is redis host and redis port, when $REDIS_HOST not set then default value will be used +print(env['redis.host']) + +# >> 127.0.0.1 + +# one example is redis host and redis port, when $REDIS_DB not set then default value will be used +print(env['redis.db']) + +# >> 3 + +# access list items by number +print(env['list_test'][0]) + +# >> one + +# access list items by number as key +print(env['list_test.1']) + +# >> two + +# test if you have key +print('redis.port' in env) + +# >> True + +``` + +Access config with `get` function and default value +```python +print(env.get('not.exist.value', 'default')) +# >> default + +print(env.get('empty_env', 'default')) +# >> default + +print(env['empty_env']) +# >> None +``` + +Use `format` function to update placeholder +```python +print(env.format('database.insert', table="users")) +# >> INSERT INTO "users" (user, login) VALUES ($1, $2) +``` + +### Strict mode +This mode is **enable by default** and prevents from declaring variables that do not exist in `environment variables` or `.env` file. This leads to having runtime `ValueError` exception when variables do not define with message `Strict mode enabled, variable $VAR not defined!`. To disable **strict** mode specify `strict=False` at EnvYAML object initialization. Another option to disable `strict` mode is to define `ENVYAML_STRICT_DISABLE` environment variable before initializing EnvYAML object. + + +### Escaped variables +In case of usage `$` in env.yaml file as value double `$$` should be used. Example: +Use `escaped` variable +```python +print(env['escaped']) +# >> $.extra +``` + + +### License +MIT licensed. See the [LICENSE](LICENSE) file for more details. + + + + +%prep +%autosetup -n envyaml-1.10.211231 + +%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-envyaml -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.10.211231-1 +- Package Spec generated @@ -0,0 +1 @@ +d3251f65d7be437ff8f370dc69c78014 envyaml-1.10.211231.tar.gz |
