From 8eaf513fccca9232cea3f7e6edf83b5cf73226f3 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 10 Apr 2023 18:28:41 +0000 Subject: automatic import of python-click-configfile --- .gitignore | 1 + python-click-configfile.spec | 340 +++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 342 insertions(+) create mode 100644 python-click-configfile.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..a8d563c 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/click-configfile-0.2.3.tar.gz diff --git a/python-click-configfile.spec b/python-click-configfile.spec new file mode 100644 index 0000000..b48615e --- /dev/null +++ b/python-click-configfile.spec @@ -0,0 +1,340 @@ +%global _empty_manifest_terminate_build 0 +Name: python-click-configfile +Version: 0.2.3 +Release: 1 +Summary: This package supports click commands that use configuration files. +License: BSD +URL: https://github.com/click-contrib/click-configfile +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5a/2b/722c718db0f44e6927767aa422c73a77eaf333138e0a4201ca9b1f72aa2d/click-configfile-0.2.3.tar.gz +BuildArch: noarch + +Requires: python3-click +Requires: python3-configparser +Requires: python3-six +Requires: python3-configparser +Requires: python3-configparser +Requires: python3-configparser +Requires: python3-configparser + +%description +click_ is a framework to simplify writing composable commands for +command-line tools. This package extends the click_ functionality +by adding support for commands that use configuration files. + +.. _click: https://click.pocoo.org/ + +EXAMPLE: + +A configuration file, like: + +.. code-block:: INI + + # -- FILE: foo.ini + [foo] + flag = yes + name = Alice and Bob + numbers = 1 4 9 16 25 + filenames = foo/xxx.txt + bar/baz/zzz.txt + + [person.alice] + name = Alice + birthyear = 1995 + + [person.bob] + name = Bob + birthyear = 2001 + +can be processed with: + +.. code-block:: python + + # EXAMPLE: + # -- FILE: example_command_with_configfile.py (ALL PARTS: simplified) + from click_configfile import ConfigFileReader, Param, SectionSchema + from click_configfile import matches_section + import click + + class ConfigSectionSchema(object): + """Describes all config sections of this configuration file.""" + + @matches_section("foo") + class Foo(SectionSchema): + name = Param(type=str) + flag = Param(type=bool, default=True) + numbers = Param(type=int, multiple=True) + filenames = Param(type=click.Path(), multiple=True) + + @matches_section("person.*") # Matches multiple sections + class Person(SectionSchema): + name = Param(type=str) + birthyear = Param(type=click.IntRange(1990, 2100)) + + + class ConfigFileProcessor(ConfigFileReader): + config_files = ["foo.ini", "foo.cfg"] + config_section_schemas = [ + ConfigSectionSchema.Foo, # PRIMARY SCHEMA + ConfigSectionSchema.Person, + ] + + # -- SIMPLIFIED STORAGE-SCHEMA: + # section:person.* -> storage:person.* + # section:person.alice -> storage:person.alice + # section:person.bob -> storage:person.bob + + # -- ALTERNATIVES: Override ConfigFileReader methods: + # * process_config_section(config_section, storage) + # * get_storage_name_for(section_name) + # * get_storage_for(section_name, storage) + + + # -- COMMAND: + CONTEXT_SETTINGS = dict(default_map=ConfigFileProcessor.read_config()) + + @click.command(context_settings=CONTEXT_SETTINGS) + @click.option("-n", "--number", "numbers", type=int, multiple=True) + @click.pass_context + def command_with_config(ctx, numbers): + # -- ACCESS ADDITIONAL DATA FROM CONFIG FILES: Using ctx.default_map + for person_data_key in ctx.default_map.keys(): + if not person_data_key.startswith("person."): + continue + person_data = ctx.default_map[person_data_key] + process_person_data(person_data) # as dict. + + + + +%package -n python3-click-configfile +Summary: This package supports click commands that use configuration files. +Provides: python-click-configfile +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-click-configfile +click_ is a framework to simplify writing composable commands for +command-line tools. This package extends the click_ functionality +by adding support for commands that use configuration files. + +.. _click: https://click.pocoo.org/ + +EXAMPLE: + +A configuration file, like: + +.. code-block:: INI + + # -- FILE: foo.ini + [foo] + flag = yes + name = Alice and Bob + numbers = 1 4 9 16 25 + filenames = foo/xxx.txt + bar/baz/zzz.txt + + [person.alice] + name = Alice + birthyear = 1995 + + [person.bob] + name = Bob + birthyear = 2001 + +can be processed with: + +.. code-block:: python + + # EXAMPLE: + # -- FILE: example_command_with_configfile.py (ALL PARTS: simplified) + from click_configfile import ConfigFileReader, Param, SectionSchema + from click_configfile import matches_section + import click + + class ConfigSectionSchema(object): + """Describes all config sections of this configuration file.""" + + @matches_section("foo") + class Foo(SectionSchema): + name = Param(type=str) + flag = Param(type=bool, default=True) + numbers = Param(type=int, multiple=True) + filenames = Param(type=click.Path(), multiple=True) + + @matches_section("person.*") # Matches multiple sections + class Person(SectionSchema): + name = Param(type=str) + birthyear = Param(type=click.IntRange(1990, 2100)) + + + class ConfigFileProcessor(ConfigFileReader): + config_files = ["foo.ini", "foo.cfg"] + config_section_schemas = [ + ConfigSectionSchema.Foo, # PRIMARY SCHEMA + ConfigSectionSchema.Person, + ] + + # -- SIMPLIFIED STORAGE-SCHEMA: + # section:person.* -> storage:person.* + # section:person.alice -> storage:person.alice + # section:person.bob -> storage:person.bob + + # -- ALTERNATIVES: Override ConfigFileReader methods: + # * process_config_section(config_section, storage) + # * get_storage_name_for(section_name) + # * get_storage_for(section_name, storage) + + + # -- COMMAND: + CONTEXT_SETTINGS = dict(default_map=ConfigFileProcessor.read_config()) + + @click.command(context_settings=CONTEXT_SETTINGS) + @click.option("-n", "--number", "numbers", type=int, multiple=True) + @click.pass_context + def command_with_config(ctx, numbers): + # -- ACCESS ADDITIONAL DATA FROM CONFIG FILES: Using ctx.default_map + for person_data_key in ctx.default_map.keys(): + if not person_data_key.startswith("person."): + continue + person_data = ctx.default_map[person_data_key] + process_person_data(person_data) # as dict. + + + + +%package help +Summary: Development documents and examples for click-configfile +Provides: python3-click-configfile-doc +%description help +click_ is a framework to simplify writing composable commands for +command-line tools. This package extends the click_ functionality +by adding support for commands that use configuration files. + +.. _click: https://click.pocoo.org/ + +EXAMPLE: + +A configuration file, like: + +.. code-block:: INI + + # -- FILE: foo.ini + [foo] + flag = yes + name = Alice and Bob + numbers = 1 4 9 16 25 + filenames = foo/xxx.txt + bar/baz/zzz.txt + + [person.alice] + name = Alice + birthyear = 1995 + + [person.bob] + name = Bob + birthyear = 2001 + +can be processed with: + +.. code-block:: python + + # EXAMPLE: + # -- FILE: example_command_with_configfile.py (ALL PARTS: simplified) + from click_configfile import ConfigFileReader, Param, SectionSchema + from click_configfile import matches_section + import click + + class ConfigSectionSchema(object): + """Describes all config sections of this configuration file.""" + + @matches_section("foo") + class Foo(SectionSchema): + name = Param(type=str) + flag = Param(type=bool, default=True) + numbers = Param(type=int, multiple=True) + filenames = Param(type=click.Path(), multiple=True) + + @matches_section("person.*") # Matches multiple sections + class Person(SectionSchema): + name = Param(type=str) + birthyear = Param(type=click.IntRange(1990, 2100)) + + + class ConfigFileProcessor(ConfigFileReader): + config_files = ["foo.ini", "foo.cfg"] + config_section_schemas = [ + ConfigSectionSchema.Foo, # PRIMARY SCHEMA + ConfigSectionSchema.Person, + ] + + # -- SIMPLIFIED STORAGE-SCHEMA: + # section:person.* -> storage:person.* + # section:person.alice -> storage:person.alice + # section:person.bob -> storage:person.bob + + # -- ALTERNATIVES: Override ConfigFileReader methods: + # * process_config_section(config_section, storage) + # * get_storage_name_for(section_name) + # * get_storage_for(section_name, storage) + + + # -- COMMAND: + CONTEXT_SETTINGS = dict(default_map=ConfigFileProcessor.read_config()) + + @click.command(context_settings=CONTEXT_SETTINGS) + @click.option("-n", "--number", "numbers", type=int, multiple=True) + @click.pass_context + def command_with_config(ctx, numbers): + # -- ACCESS ADDITIONAL DATA FROM CONFIG FILES: Using ctx.default_map + for person_data_key in ctx.default_map.keys(): + if not person_data_key.startswith("person."): + continue + person_data = ctx.default_map[person_data_key] + process_person_data(person_data) # as dict. + + + + +%prep +%autosetup -n click-configfile-0.2.3 + +%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-click-configfile -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot - 0.2.3-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..0150a50 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +f1871c54e0d3116ae55313120dde6597 click-configfile-0.2.3.tar.gz -- cgit v1.2.3