From 71a10f8a13042f5e01c54322af56721cc43aa0f4 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Fri, 5 May 2023 09:04:37 +0000 Subject: automatic import of python-milc --- .gitignore | 1 + python-milc.spec | 587 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 589 insertions(+) create mode 100644 python-milc.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..841186f 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/milc-1.6.6.tar.gz diff --git a/python-milc.spec b/python-milc.spec new file mode 100644 index 0000000..1366cf7 --- /dev/null +++ b/python-milc.spec @@ -0,0 +1,587 @@ +%global _empty_manifest_terminate_build 0 +Name: python-milc +Version: 1.6.6 +Release: 1 +Summary: Opinionated Batteries-Included Python 3 CLI Framework. +License: MIT License +URL: https://milc.clueboard.co/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/92/c0/3377091d68d98f7448e9e3624d6692548efcd98917cc48a69efb650a3eb4/milc-1.6.6.tar.gz +BuildArch: noarch + +Requires: python3-appdirs +Requires: python3-argcomplete +Requires: python3-colorama +Requires: python3-halo +Requires: python3-spinners + +%description +# MILC - An Opinionated Batteries-Included Python 3 CLI Framework + +MILC is a framework for writing CLI applications in Python 3.6+. It gives you +all the features users expect from a modern CLI tool out of the box: + +* CLI Argument Parsing, with or without subcommands +* Automatic tab-completion support through [argcomplete](https://github.com/kislyuk/argcomplete) +* Configuration file which can be overridden by CLI options +* ANSI color support- even on Windows- with [colorama](https://github.com/tartley/colorama) +* Logging to stderr and/or a file, with ANSI colors +* Easy method for printing to stdout with ANSI colors +* Labeling log output with colored emoji to easily distinguish message types +* Thread safety +* More than 60 built-in [spinners](https://github.com/manrajgrover/py-spinners) with the ability to add your own + +# Installation + +MILC is available on pypi, you can use pip to install it: + + python3 -m pip install milc + +# ChangeLog and Breaking Changes + +MILC follows [Semantic Versioning](https://semver.org/). You can view the [full changelog](https://github.com/clueboard/milc/blob/master/CHANGELOG.rst), or you can see a list of why we made major or minor releases on the [Breaking Changes](https://milc.clueboard.co/#/breaking_changes) page. + +# Documentation + +Full documentation is on the web: + +## Reporting Bugs and Requesting Features + +Please let us know about any bugs and/or feature requests you have: + +## Short Example + +```python +from milc import cli + +@cli.argument('-c', '--comma', arg_only=True, action='store_boolean', default=True, help='comma in output') +@cli.argument('-n', '--name', default='World', help='Name to greet') +@cli.entrypoint('My useful CLI tool.') +def main(cli): + comma = ',' if cli.args.comma else '' + cli.log.info('Hello%s %s!', comma, cli.config.general.name) + +if __name__ == '__main__': + cli.run() +``` + +### Output + +``` +$ ./hello +ℹ Hello, World! +$ ./hello --no-unicode +INFO Hello, World! +$ ./hello --no-comma +ℹ Hello World! +$ ./hello -h +usage: hello [-h] [-V] [-v] [--datetime-fmt GENERAL_DATETIME_FMT] + [--log-fmt GENERAL_LOG_FMT] [--log-file-fmt GENERAL_LOG_FILE_FMT] + [--log-file GENERAL_LOG_FILE] [--color] [--no-color] + [--config-file GENERAL_CONFIG_FILE] [--save-config] + [-n GENERAL_NAME] [-c] [--no-comma] + +Greet a user. + +optional arguments: + -h, --help show this help message and exit + -V, --version Display the version and exit + -v, --verbose Make the logging more verbose + --datetime-fmt GENERAL_DATETIME_FMT + Format string for datetimes + --log-fmt GENERAL_LOG_FMT + Format string for printed log output + --log-file-fmt GENERAL_LOG_FILE_FMT + Format string for log file. + --log-file GENERAL_LOG_FILE + File to write log messages to + --color Enable color in output + --no-color Disable color in output + --config-file GENERAL_CONFIG_FILE + The config file to read and/or write + --save-config Save the running configuration to the config file + -n GENERAL_NAME, --name GENERAL_NAME + Name to greet + -c, --comma Enable comma in output + --no-comma Disable comma in output +``` + +# Why MILC? + +Because life is too short to integrate this stuff yourself, and writing +good CLIs with comprehensive functionality is harder than it needs to be. + +Most of the other CLI frameworks are missing a piece of the puzzle. Maybe +they have argument parsing but no config file story. Maybe they have a +good story around arguments and config but don't handle logging at all. +You know that you're doing the same integration work that almost everyone +else is doing in their own app. Why do we duplicate so much effort? + +MILC is my answer to that. It implements a common set of CLI tools that +pretty much every project I have ever worked on either needed or would +have benefited from. Included in MILC are answers to problems you didn't +know you have: + +* Config file saving and parsing +* Automatically overriding config options with CLI arguments +* Automatic verbose (-v) support +* Automatic log support +* Built-in flags for formatting log messages and log date formats +* Support for boolean arguments (define --foo and get --no-foo for free) +* Battle tested and used by hundreds of users every single day + +You may not use all of these features yourself, but you will have users +who are very glad these options are available when they need them. + +# Contributing + +Contributions are welcome! You don't need to open an issue first, if +you've developed a new feature or fixed a bug in MILC simply open +a PR and we'll review it. + +Please follow this checklist before submitting a PR: + +* [ ] Format your code: `yapf -i -r .` +* [ ] Generate docs: `./generate_docs` +* [ ] Add any new doc files to the `nav` section of `mkdocs.yml` +* [ ] Run tests: `./ci_tests` + +# FAQ + +## What does MILC stand for? + +MILC was originally the CLI Context Manager, or CLI Manager, but CLICM was too close to [click](https://click.palletsprojects.com/) and CLIM was already taken on PyPi. Reversing CLIM gave me a name I liked and had opportunities for puns, so I went with it. + +## Why decorators instead of parsing function signatures? + +Because I believe in writing good CLI tools. + +Before writing MILC I saw variations of the same story over and over. "I +started with {Click,Docopt,Whatever} but after a while I ended up just +going back to argparse." In pretty much every case as the complexity of +their program grew they needed to do things argparse made easy and their +framework made hard. + +MILC attempts to solve this by embracing the complexity of argparse. It +handles the drudgery of setting up argparse for you, but gives you an +elegant means to control that complexity when you need to. When your +CLI framework relies on parsing function signatures you are necessarily +limited in what you can do. Function annotations make this a little +better but they are not a full solution to the problem. + +If you care about writing good CLI tools (and I hope you do) you will want +more control over the behavior of your program than Click or Docopt give you. + +## Why Not Some Other CLI Framework Instead? + +Whenever you release a new framework the first question you'll be asked is +why you didn't just use one of the existing options instead. + +As I surveyed the other tools I found that most of them only solve part of +the problem, not the whole problem. Those that solve the whole problem are +very hard to use or get started with, or are otherwise very heavyweight. I +wanted a comprehensive framework that was easy to get started with. + +If you'd like to see how MILC compares to other tools see +[COMPARISONS.md](COMPARISONS.md). + + + + +%package -n python3-milc +Summary: Opinionated Batteries-Included Python 3 CLI Framework. +Provides: python-milc +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-milc +# MILC - An Opinionated Batteries-Included Python 3 CLI Framework + +MILC is a framework for writing CLI applications in Python 3.6+. It gives you +all the features users expect from a modern CLI tool out of the box: + +* CLI Argument Parsing, with or without subcommands +* Automatic tab-completion support through [argcomplete](https://github.com/kislyuk/argcomplete) +* Configuration file which can be overridden by CLI options +* ANSI color support- even on Windows- with [colorama](https://github.com/tartley/colorama) +* Logging to stderr and/or a file, with ANSI colors +* Easy method for printing to stdout with ANSI colors +* Labeling log output with colored emoji to easily distinguish message types +* Thread safety +* More than 60 built-in [spinners](https://github.com/manrajgrover/py-spinners) with the ability to add your own + +# Installation + +MILC is available on pypi, you can use pip to install it: + + python3 -m pip install milc + +# ChangeLog and Breaking Changes + +MILC follows [Semantic Versioning](https://semver.org/). You can view the [full changelog](https://github.com/clueboard/milc/blob/master/CHANGELOG.rst), or you can see a list of why we made major or minor releases on the [Breaking Changes](https://milc.clueboard.co/#/breaking_changes) page. + +# Documentation + +Full documentation is on the web: + +## Reporting Bugs and Requesting Features + +Please let us know about any bugs and/or feature requests you have: + +## Short Example + +```python +from milc import cli + +@cli.argument('-c', '--comma', arg_only=True, action='store_boolean', default=True, help='comma in output') +@cli.argument('-n', '--name', default='World', help='Name to greet') +@cli.entrypoint('My useful CLI tool.') +def main(cli): + comma = ',' if cli.args.comma else '' + cli.log.info('Hello%s %s!', comma, cli.config.general.name) + +if __name__ == '__main__': + cli.run() +``` + +### Output + +``` +$ ./hello +ℹ Hello, World! +$ ./hello --no-unicode +INFO Hello, World! +$ ./hello --no-comma +ℹ Hello World! +$ ./hello -h +usage: hello [-h] [-V] [-v] [--datetime-fmt GENERAL_DATETIME_FMT] + [--log-fmt GENERAL_LOG_FMT] [--log-file-fmt GENERAL_LOG_FILE_FMT] + [--log-file GENERAL_LOG_FILE] [--color] [--no-color] + [--config-file GENERAL_CONFIG_FILE] [--save-config] + [-n GENERAL_NAME] [-c] [--no-comma] + +Greet a user. + +optional arguments: + -h, --help show this help message and exit + -V, --version Display the version and exit + -v, --verbose Make the logging more verbose + --datetime-fmt GENERAL_DATETIME_FMT + Format string for datetimes + --log-fmt GENERAL_LOG_FMT + Format string for printed log output + --log-file-fmt GENERAL_LOG_FILE_FMT + Format string for log file. + --log-file GENERAL_LOG_FILE + File to write log messages to + --color Enable color in output + --no-color Disable color in output + --config-file GENERAL_CONFIG_FILE + The config file to read and/or write + --save-config Save the running configuration to the config file + -n GENERAL_NAME, --name GENERAL_NAME + Name to greet + -c, --comma Enable comma in output + --no-comma Disable comma in output +``` + +# Why MILC? + +Because life is too short to integrate this stuff yourself, and writing +good CLIs with comprehensive functionality is harder than it needs to be. + +Most of the other CLI frameworks are missing a piece of the puzzle. Maybe +they have argument parsing but no config file story. Maybe they have a +good story around arguments and config but don't handle logging at all. +You know that you're doing the same integration work that almost everyone +else is doing in their own app. Why do we duplicate so much effort? + +MILC is my answer to that. It implements a common set of CLI tools that +pretty much every project I have ever worked on either needed or would +have benefited from. Included in MILC are answers to problems you didn't +know you have: + +* Config file saving and parsing +* Automatically overriding config options with CLI arguments +* Automatic verbose (-v) support +* Automatic log support +* Built-in flags for formatting log messages and log date formats +* Support for boolean arguments (define --foo and get --no-foo for free) +* Battle tested and used by hundreds of users every single day + +You may not use all of these features yourself, but you will have users +who are very glad these options are available when they need them. + +# Contributing + +Contributions are welcome! You don't need to open an issue first, if +you've developed a new feature or fixed a bug in MILC simply open +a PR and we'll review it. + +Please follow this checklist before submitting a PR: + +* [ ] Format your code: `yapf -i -r .` +* [ ] Generate docs: `./generate_docs` +* [ ] Add any new doc files to the `nav` section of `mkdocs.yml` +* [ ] Run tests: `./ci_tests` + +# FAQ + +## What does MILC stand for? + +MILC was originally the CLI Context Manager, or CLI Manager, but CLICM was too close to [click](https://click.palletsprojects.com/) and CLIM was already taken on PyPi. Reversing CLIM gave me a name I liked and had opportunities for puns, so I went with it. + +## Why decorators instead of parsing function signatures? + +Because I believe in writing good CLI tools. + +Before writing MILC I saw variations of the same story over and over. "I +started with {Click,Docopt,Whatever} but after a while I ended up just +going back to argparse." In pretty much every case as the complexity of +their program grew they needed to do things argparse made easy and their +framework made hard. + +MILC attempts to solve this by embracing the complexity of argparse. It +handles the drudgery of setting up argparse for you, but gives you an +elegant means to control that complexity when you need to. When your +CLI framework relies on parsing function signatures you are necessarily +limited in what you can do. Function annotations make this a little +better but they are not a full solution to the problem. + +If you care about writing good CLI tools (and I hope you do) you will want +more control over the behavior of your program than Click or Docopt give you. + +## Why Not Some Other CLI Framework Instead? + +Whenever you release a new framework the first question you'll be asked is +why you didn't just use one of the existing options instead. + +As I surveyed the other tools I found that most of them only solve part of +the problem, not the whole problem. Those that solve the whole problem are +very hard to use or get started with, or are otherwise very heavyweight. I +wanted a comprehensive framework that was easy to get started with. + +If you'd like to see how MILC compares to other tools see +[COMPARISONS.md](COMPARISONS.md). + + + + +%package help +Summary: Development documents and examples for milc +Provides: python3-milc-doc +%description help +# MILC - An Opinionated Batteries-Included Python 3 CLI Framework + +MILC is a framework for writing CLI applications in Python 3.6+. It gives you +all the features users expect from a modern CLI tool out of the box: + +* CLI Argument Parsing, with or without subcommands +* Automatic tab-completion support through [argcomplete](https://github.com/kislyuk/argcomplete) +* Configuration file which can be overridden by CLI options +* ANSI color support- even on Windows- with [colorama](https://github.com/tartley/colorama) +* Logging to stderr and/or a file, with ANSI colors +* Easy method for printing to stdout with ANSI colors +* Labeling log output with colored emoji to easily distinguish message types +* Thread safety +* More than 60 built-in [spinners](https://github.com/manrajgrover/py-spinners) with the ability to add your own + +# Installation + +MILC is available on pypi, you can use pip to install it: + + python3 -m pip install milc + +# ChangeLog and Breaking Changes + +MILC follows [Semantic Versioning](https://semver.org/). You can view the [full changelog](https://github.com/clueboard/milc/blob/master/CHANGELOG.rst), or you can see a list of why we made major or minor releases on the [Breaking Changes](https://milc.clueboard.co/#/breaking_changes) page. + +# Documentation + +Full documentation is on the web: + +## Reporting Bugs and Requesting Features + +Please let us know about any bugs and/or feature requests you have: + +## Short Example + +```python +from milc import cli + +@cli.argument('-c', '--comma', arg_only=True, action='store_boolean', default=True, help='comma in output') +@cli.argument('-n', '--name', default='World', help='Name to greet') +@cli.entrypoint('My useful CLI tool.') +def main(cli): + comma = ',' if cli.args.comma else '' + cli.log.info('Hello%s %s!', comma, cli.config.general.name) + +if __name__ == '__main__': + cli.run() +``` + +### Output + +``` +$ ./hello +ℹ Hello, World! +$ ./hello --no-unicode +INFO Hello, World! +$ ./hello --no-comma +ℹ Hello World! +$ ./hello -h +usage: hello [-h] [-V] [-v] [--datetime-fmt GENERAL_DATETIME_FMT] + [--log-fmt GENERAL_LOG_FMT] [--log-file-fmt GENERAL_LOG_FILE_FMT] + [--log-file GENERAL_LOG_FILE] [--color] [--no-color] + [--config-file GENERAL_CONFIG_FILE] [--save-config] + [-n GENERAL_NAME] [-c] [--no-comma] + +Greet a user. + +optional arguments: + -h, --help show this help message and exit + -V, --version Display the version and exit + -v, --verbose Make the logging more verbose + --datetime-fmt GENERAL_DATETIME_FMT + Format string for datetimes + --log-fmt GENERAL_LOG_FMT + Format string for printed log output + --log-file-fmt GENERAL_LOG_FILE_FMT + Format string for log file. + --log-file GENERAL_LOG_FILE + File to write log messages to + --color Enable color in output + --no-color Disable color in output + --config-file GENERAL_CONFIG_FILE + The config file to read and/or write + --save-config Save the running configuration to the config file + -n GENERAL_NAME, --name GENERAL_NAME + Name to greet + -c, --comma Enable comma in output + --no-comma Disable comma in output +``` + +# Why MILC? + +Because life is too short to integrate this stuff yourself, and writing +good CLIs with comprehensive functionality is harder than it needs to be. + +Most of the other CLI frameworks are missing a piece of the puzzle. Maybe +they have argument parsing but no config file story. Maybe they have a +good story around arguments and config but don't handle logging at all. +You know that you're doing the same integration work that almost everyone +else is doing in their own app. Why do we duplicate so much effort? + +MILC is my answer to that. It implements a common set of CLI tools that +pretty much every project I have ever worked on either needed or would +have benefited from. Included in MILC are answers to problems you didn't +know you have: + +* Config file saving and parsing +* Automatically overriding config options with CLI arguments +* Automatic verbose (-v) support +* Automatic log support +* Built-in flags for formatting log messages and log date formats +* Support for boolean arguments (define --foo and get --no-foo for free) +* Battle tested and used by hundreds of users every single day + +You may not use all of these features yourself, but you will have users +who are very glad these options are available when they need them. + +# Contributing + +Contributions are welcome! You don't need to open an issue first, if +you've developed a new feature or fixed a bug in MILC simply open +a PR and we'll review it. + +Please follow this checklist before submitting a PR: + +* [ ] Format your code: `yapf -i -r .` +* [ ] Generate docs: `./generate_docs` +* [ ] Add any new doc files to the `nav` section of `mkdocs.yml` +* [ ] Run tests: `./ci_tests` + +# FAQ + +## What does MILC stand for? + +MILC was originally the CLI Context Manager, or CLI Manager, but CLICM was too close to [click](https://click.palletsprojects.com/) and CLIM was already taken on PyPi. Reversing CLIM gave me a name I liked and had opportunities for puns, so I went with it. + +## Why decorators instead of parsing function signatures? + +Because I believe in writing good CLI tools. + +Before writing MILC I saw variations of the same story over and over. "I +started with {Click,Docopt,Whatever} but after a while I ended up just +going back to argparse." In pretty much every case as the complexity of +their program grew they needed to do things argparse made easy and their +framework made hard. + +MILC attempts to solve this by embracing the complexity of argparse. It +handles the drudgery of setting up argparse for you, but gives you an +elegant means to control that complexity when you need to. When your +CLI framework relies on parsing function signatures you are necessarily +limited in what you can do. Function annotations make this a little +better but they are not a full solution to the problem. + +If you care about writing good CLI tools (and I hope you do) you will want +more control over the behavior of your program than Click or Docopt give you. + +## Why Not Some Other CLI Framework Instead? + +Whenever you release a new framework the first question you'll be asked is +why you didn't just use one of the existing options instead. + +As I surveyed the other tools I found that most of them only solve part of +the problem, not the whole problem. Those that solve the whole problem are +very hard to use or get started with, or are otherwise very heavyweight. I +wanted a comprehensive framework that was easy to get started with. + +If you'd like to see how MILC compares to other tools see +[COMPARISONS.md](COMPARISONS.md). + + + + +%prep +%autosetup -n milc-1.6.6 + +%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-milc -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot - 1.6.6-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..7833e50 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +7d7441c0d13c3bd75484847a7acdbd57 milc-1.6.6.tar.gz -- cgit v1.2.3