%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