summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 04:42:54 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 04:42:54 +0000
commit1a6c3aba33b2815f2c11b5d57cb3165cdad093df (patch)
treea632a8dc6c556c28eb3e9ad91276acae1368c0c7
parent724d4b7735722279d88bda63c0be2924a6fb2ef5 (diff)
automatic import of python-12factor-configclassesopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-12factor-configclasses.spec561
-rw-r--r--sources1
3 files changed, 563 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..ea8b801 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/12factor-configclasses-1.0.0.tar.gz
diff --git a/python-12factor-configclasses.spec b/python-12factor-configclasses.spec
new file mode 100644
index 0000000..bbdebed
--- /dev/null
+++ b/python-12factor-configclasses.spec
@@ -0,0 +1,561 @@
+%global _empty_manifest_terminate_build 0
+Name: python-12factor-configclasses
+Version: 1.0.0
+Release: 1
+Summary: Like dataclasses but for config.
+License: MIT
+URL: https://github.com/kingoodie/configclasses
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/25/86/c0e3b447f9b2f210ce7000479175e577aa51ec1507617ec2333323a8726c/12factor-configclasses-1.0.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-tomlkit[toml]
+Requires: python3-dotenv[dotenv]
+Requires: python3-pyyaml[yaml]
+
+%description
+# configclasses
+
+![PyPI](https://img.shields.io/pypi/v/12factor-configclasses)
+[![codecov](https://codecov.io/gh/headsrooms/configclasses/branch/master/graph/badge.svg?token=U0bxsmAUoe)](https://codecov.io/gh/headsrooms/configclasses)
+<a href="https://codeclimate.com/github/kingoodie/configclasses/maintainability"><img src="https://api.codeclimate.com/v1/badges/9094f65f5caef64fb993/maintainability" /></a>
+[![Downloads](https://pepy.tech/badge/12factor-configclasses/month)](https://pepy.tech/project/12factor-configclasses)
+
+
+Like dataclasses but for config.
+
+Specify your config with a class and load it with your env vars or env files.
+
+
+```python
+import httpx
+from configclasses import configclass
+
+
+class UserAPIClient(httpx.AsyncClient):
+ def __init__(self, config: ClientConfig, *args, **kwargs):
+ self.config = config
+ super().__init__(*args, **kwargs)
+
+ async def get_users(self, headers: Optional[Headers] = None) -> Dict[str, Any]:
+ response = await self.get(f"{self.path}/users", auth=headers)
+ response.raise_for_status()
+ return response.json()
+
+@configclass
+class ClientConfig:
+ host: str
+ port: int
+
+config = ClientConfig.from_path(".env")
+async with UserAPIClient(config) as client:
+ users = await client.get_users(auth_headers)
+```
+
+## Features
+
+- Fill your configclasses with existent env vars.
+- Define default values in case these variables have no value at all.
+- Load your config files in env vars following [12factor apps](https://12factor.net) recommendations.
+- Support for _.env_, _yaml_, _toml_, _ini_ and _json_.
+- Convert your env vars with specified type in configclass: `int`, `float`, `str` or `bool`.
+- Use nested configclasses to more complex configurations.
+- Specify a prefix with `@configclass(prefix="<PREFIX>")` to append this prefix to your configclass' attribute names.
+- Config groups (__TODO__): https://cli.dev/docs/tutorial/config_groups/
+
+## Requirements
+
+Python 3.8+
+
+
+## Installation
+
+Depending on your chosen config file format you can install:
+
+- .env -> ```pip install 12factor-configclasses[dotenv]```
+- .yaml -> ```pip install 12factor-configclasses[yaml]```
+- .toml -> ```pip install 12factor-configclasses[toml]```
+- .ini -> ```pip install 12factor-configclasses```
+- .json -> ```pip install 12factor-configclasses```
+
+Or install all supported formats with:
+
+ pip install 12factor-configclasses[full]
+
+## Usage
+
+There are three ways to use it:
+
+- Loading an .env file:
+
+```.env
+# .env
+HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False
+```
+
+```python
+#config.py
+from configclasses import configclass
+
+
+@configclass
+class DB:
+ user: str
+ password: str
+ url: str
+
+
+@configclass
+class AppConfig:
+ host: str
+ port: int
+ db: DB
+ generate_schemas: bool
+ debug: bool
+ https_only: bool
+ gzip: bool
+ sentry: bool
+```
+
+```python
+# app.py
+from api.config import AppConfig
+
+app_config = AppConfig.from_path(".env")
+app = Starlette(debug=app_config.debug)
+
+if app_config.https_only:
+ app.add_middleware(
+ HTTPSRedirectMiddleware)
+if app_config.gzip:
+ app.add_middleware(GZipMiddleware)
+if app_config.sentry:
+ app.add_middleware(SentryAsgiMiddleware)
+
+...
+
+register_tortoise(
+ app,
+ db_url=app_config.db.url,
+ modules={"models": ["api.models"]},
+ generate_schemas=app_config.generate_schemas,
+)
+
+if __name__ == "__main__":
+ uvicorn.run(app, host=app_config.host, port=app_config.port)
+```
+
+
+- Loading predefined environmental variables:
+
+The same than before, but instead of:
+
+ app_config = AppConfig.from_path(".env")
+
+You will do:
+
+ app_config = AppConfig.from_environ()
+
+- Loading a file from a string:
+
+```python
+test_env = """HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False"""
+app_config = AppConfig.from_string(test_env, ".env")
+```
+
+
+%package -n python3-12factor-configclasses
+Summary: Like dataclasses but for config.
+Provides: python-12factor-configclasses
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-12factor-configclasses
+# configclasses
+
+![PyPI](https://img.shields.io/pypi/v/12factor-configclasses)
+[![codecov](https://codecov.io/gh/headsrooms/configclasses/branch/master/graph/badge.svg?token=U0bxsmAUoe)](https://codecov.io/gh/headsrooms/configclasses)
+<a href="https://codeclimate.com/github/kingoodie/configclasses/maintainability"><img src="https://api.codeclimate.com/v1/badges/9094f65f5caef64fb993/maintainability" /></a>
+[![Downloads](https://pepy.tech/badge/12factor-configclasses/month)](https://pepy.tech/project/12factor-configclasses)
+
+
+Like dataclasses but for config.
+
+Specify your config with a class and load it with your env vars or env files.
+
+
+```python
+import httpx
+from configclasses import configclass
+
+
+class UserAPIClient(httpx.AsyncClient):
+ def __init__(self, config: ClientConfig, *args, **kwargs):
+ self.config = config
+ super().__init__(*args, **kwargs)
+
+ async def get_users(self, headers: Optional[Headers] = None) -> Dict[str, Any]:
+ response = await self.get(f"{self.path}/users", auth=headers)
+ response.raise_for_status()
+ return response.json()
+
+@configclass
+class ClientConfig:
+ host: str
+ port: int
+
+config = ClientConfig.from_path(".env")
+async with UserAPIClient(config) as client:
+ users = await client.get_users(auth_headers)
+```
+
+## Features
+
+- Fill your configclasses with existent env vars.
+- Define default values in case these variables have no value at all.
+- Load your config files in env vars following [12factor apps](https://12factor.net) recommendations.
+- Support for _.env_, _yaml_, _toml_, _ini_ and _json_.
+- Convert your env vars with specified type in configclass: `int`, `float`, `str` or `bool`.
+- Use nested configclasses to more complex configurations.
+- Specify a prefix with `@configclass(prefix="<PREFIX>")` to append this prefix to your configclass' attribute names.
+- Config groups (__TODO__): https://cli.dev/docs/tutorial/config_groups/
+
+## Requirements
+
+Python 3.8+
+
+
+## Installation
+
+Depending on your chosen config file format you can install:
+
+- .env -> ```pip install 12factor-configclasses[dotenv]```
+- .yaml -> ```pip install 12factor-configclasses[yaml]```
+- .toml -> ```pip install 12factor-configclasses[toml]```
+- .ini -> ```pip install 12factor-configclasses```
+- .json -> ```pip install 12factor-configclasses```
+
+Or install all supported formats with:
+
+ pip install 12factor-configclasses[full]
+
+## Usage
+
+There are three ways to use it:
+
+- Loading an .env file:
+
+```.env
+# .env
+HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False
+```
+
+```python
+#config.py
+from configclasses import configclass
+
+
+@configclass
+class DB:
+ user: str
+ password: str
+ url: str
+
+
+@configclass
+class AppConfig:
+ host: str
+ port: int
+ db: DB
+ generate_schemas: bool
+ debug: bool
+ https_only: bool
+ gzip: bool
+ sentry: bool
+```
+
+```python
+# app.py
+from api.config import AppConfig
+
+app_config = AppConfig.from_path(".env")
+app = Starlette(debug=app_config.debug)
+
+if app_config.https_only:
+ app.add_middleware(
+ HTTPSRedirectMiddleware)
+if app_config.gzip:
+ app.add_middleware(GZipMiddleware)
+if app_config.sentry:
+ app.add_middleware(SentryAsgiMiddleware)
+
+...
+
+register_tortoise(
+ app,
+ db_url=app_config.db.url,
+ modules={"models": ["api.models"]},
+ generate_schemas=app_config.generate_schemas,
+)
+
+if __name__ == "__main__":
+ uvicorn.run(app, host=app_config.host, port=app_config.port)
+```
+
+
+- Loading predefined environmental variables:
+
+The same than before, but instead of:
+
+ app_config = AppConfig.from_path(".env")
+
+You will do:
+
+ app_config = AppConfig.from_environ()
+
+- Loading a file from a string:
+
+```python
+test_env = """HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False"""
+app_config = AppConfig.from_string(test_env, ".env")
+```
+
+
+%package help
+Summary: Development documents and examples for 12factor-configclasses
+Provides: python3-12factor-configclasses-doc
+%description help
+# configclasses
+
+![PyPI](https://img.shields.io/pypi/v/12factor-configclasses)
+[![codecov](https://codecov.io/gh/headsrooms/configclasses/branch/master/graph/badge.svg?token=U0bxsmAUoe)](https://codecov.io/gh/headsrooms/configclasses)
+<a href="https://codeclimate.com/github/kingoodie/configclasses/maintainability"><img src="https://api.codeclimate.com/v1/badges/9094f65f5caef64fb993/maintainability" /></a>
+[![Downloads](https://pepy.tech/badge/12factor-configclasses/month)](https://pepy.tech/project/12factor-configclasses)
+
+
+Like dataclasses but for config.
+
+Specify your config with a class and load it with your env vars or env files.
+
+
+```python
+import httpx
+from configclasses import configclass
+
+
+class UserAPIClient(httpx.AsyncClient):
+ def __init__(self, config: ClientConfig, *args, **kwargs):
+ self.config = config
+ super().__init__(*args, **kwargs)
+
+ async def get_users(self, headers: Optional[Headers] = None) -> Dict[str, Any]:
+ response = await self.get(f"{self.path}/users", auth=headers)
+ response.raise_for_status()
+ return response.json()
+
+@configclass
+class ClientConfig:
+ host: str
+ port: int
+
+config = ClientConfig.from_path(".env")
+async with UserAPIClient(config) as client:
+ users = await client.get_users(auth_headers)
+```
+
+## Features
+
+- Fill your configclasses with existent env vars.
+- Define default values in case these variables have no value at all.
+- Load your config files in env vars following [12factor apps](https://12factor.net) recommendations.
+- Support for _.env_, _yaml_, _toml_, _ini_ and _json_.
+- Convert your env vars with specified type in configclass: `int`, `float`, `str` or `bool`.
+- Use nested configclasses to more complex configurations.
+- Specify a prefix with `@configclass(prefix="<PREFIX>")` to append this prefix to your configclass' attribute names.
+- Config groups (__TODO__): https://cli.dev/docs/tutorial/config_groups/
+
+## Requirements
+
+Python 3.8+
+
+
+## Installation
+
+Depending on your chosen config file format you can install:
+
+- .env -> ```pip install 12factor-configclasses[dotenv]```
+- .yaml -> ```pip install 12factor-configclasses[yaml]```
+- .toml -> ```pip install 12factor-configclasses[toml]```
+- .ini -> ```pip install 12factor-configclasses```
+- .json -> ```pip install 12factor-configclasses```
+
+Or install all supported formats with:
+
+ pip install 12factor-configclasses[full]
+
+## Usage
+
+There are three ways to use it:
+
+- Loading an .env file:
+
+```.env
+# .env
+HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False
+```
+
+```python
+#config.py
+from configclasses import configclass
+
+
+@configclass
+class DB:
+ user: str
+ password: str
+ url: str
+
+
+@configclass
+class AppConfig:
+ host: str
+ port: int
+ db: DB
+ generate_schemas: bool
+ debug: bool
+ https_only: bool
+ gzip: bool
+ sentry: bool
+```
+
+```python
+# app.py
+from api.config import AppConfig
+
+app_config = AppConfig.from_path(".env")
+app = Starlette(debug=app_config.debug)
+
+if app_config.https_only:
+ app.add_middleware(
+ HTTPSRedirectMiddleware)
+if app_config.gzip:
+ app.add_middleware(GZipMiddleware)
+if app_config.sentry:
+ app.add_middleware(SentryAsgiMiddleware)
+
+...
+
+register_tortoise(
+ app,
+ db_url=app_config.db.url,
+ modules={"models": ["api.models"]},
+ generate_schemas=app_config.generate_schemas,
+)
+
+if __name__ == "__main__":
+ uvicorn.run(app, host=app_config.host, port=app_config.port)
+```
+
+
+- Loading predefined environmental variables:
+
+The same than before, but instead of:
+
+ app_config = AppConfig.from_path(".env")
+
+You will do:
+
+ app_config = AppConfig.from_environ()
+
+- Loading a file from a string:
+
+```python
+test_env = """HOST=0.0.0.0
+PORT=8000
+DB_URL=sqlite://:memory:
+GENERATE_SCHEMAS=True
+DEBUG=True
+HTTPS_ONLY=False
+GZIP=True
+SENTRY=False"""
+app_config = AppConfig.from_string(test_env, ".env")
+```
+
+
+%prep
+%autosetup -n 12factor-configclasses-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-12factor-configclasses -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..a93c6e1
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+fa70d51c12ad98f799067e3fd5ee5fad 12factor-configclasses-1.0.0.tar.gz