Extend argparse with flexible subcommand parser inheritance
Project description
scparser
Документация на русском
Extend argparse with flexible subcommand parser inheritance.
Features
- Create subcommands that inherit from existing parsers
- Reuse parser configurations across multiple subcommands
- Clean, intuitive API extending standard
argparse
Installation
pip install scparser
Quick Start
from scparser import SubcommandsParser
import argparse
# Create base parser with common options
base_parser = argparse.ArgumentParser(add_help=False)
base_parser.add_argument('--verbose', '-v', action='store_true')
# Create main parser
parser = SubcommandsParser()
subparsers = parser.add_subparsers(dest='command', required=True)
# Add subcommands that inherit from base_parser
start_cmd = subparsers.add_parser('start', parser=base_parser, help='Start service')
start_cmd.add_argument('service', help='Service name')
stop_cmd = subparsers.add_parser('stop', parser=base_parser, help='Stop service')
stop_cmd.add_argument('service', help='Service name')
# Parse arguments
args = parser.parse_args(['--verbose', 'start', 'web'])
print(f"Command: {args.command}, Verbose: {args.verbose}, Service: {args.service}")
API Reference
SubcommandsParser
Subclass of argparse.ArgumentParser that enables parser inheritance for subcommands.
SubcommandsAction
Custom action that handles subcommand registration with parser inheritance.
Usage with custom parsers
import argparse
from scparser import SubcommandsParser
# Use parser class instead of instance
class MyBaseParser(argparse.ArgumentParser):
def __init__(self):
super().__init__(add_help=False)
self.add_argument('--config', required=True)
parser = SubcommandsParser()
subparsers = parser.add_subparsers()
subparsers.add_parser('run', parser=MyBaseParser, help='Run command')
Requirements
- Python 3.9 or higher
License
MIT
Contributing
Issues and pull requests are welcome!
scparser
English documentation
Расширение argparse с гибким наследованием парсеров для подкоманд.
Возможности
- Создание подкоманд, которые наследуют существующие парсеры
- Повторное использование конфигураций парсеров для нескольких подкоманд
- Чистый, интуитивно понятный API, расширяющий стандартный
argparse
Установка
pip install scparser
Быстрый старт
from scparser import SubcommandsParser
import argparse
# Создание базового парсера с общими опциями
base_parser = argparse.ArgumentParser(add_help=False)
base_parser.add_argument('--verbose', '-v', action='store_true')
# Создание главного парсера
parser = SubcommandsParser()
subparsers = parser.add_subparsers(dest='command', required=True)
# Добавление подкоманд, наследующих base_parser
start_cmd = subparsers.add_parser('start', parser=base_parser, help='Запустить сервис')
start_cmd.add_argument('service', help='Название сервиса')
stop_cmd = subparsers.add_parser('stop', parser=base_parser, help='Остановить сервис')
stop_cmd.add_argument('service', help='Название сервиса')
# Разбор аргументов
args = parser.parse_args(['--verbose', 'start', 'web'])
print(f"Команда: {args.command}, Подробно: {args.verbose}, Сервис: {args.service}")
Справочник по API
SubcommandsParser
Подкласс argparse.ArgumentParser, обеспечивающий наследование парсеров для подкоманд.
SubcommandsAction
Пользовательское действие, обрабатывающее регистрацию подкоманд с наследованием парсеров.
Использование с пользовательскими парсерами
import argparse
from scparser import SubcommandsParser
# Использование класса парсера вместо экземпляра
class MyBaseParser(argparse.ArgumentParser):
def __init__(self):
super().__init__(add_help=False)
self.add_argument('--config', required=True)
parser = SubcommandsParser()
subparsers = parser.add_subparsers()
subparsers.add_parser('run', parser=MyBaseParser, help='Выполнить команду')
Требования
- Python 3.9 или выше
Лицензия
MIT
Участие в разработке
Приветствуются вопросы и pull request'ы!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scparser-0.1.2.tar.gz.
File metadata
- Download URL: scparser-0.1.2.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d76618ce6e6b547ef13626da449d709bae3ea57abe938c5f4572deaeb00df5c
|
|
| MD5 |
ae52ca80794802b109fafaea4b7c6f96
|
|
| BLAKE2b-256 |
08ace16e78a52d452036032949ee95a61b2e4f753628169b274f5b30ad80354b
|
File details
Details for the file scparser-0.1.2-py3-none-any.whl.
File metadata
- Download URL: scparser-0.1.2-py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
876263155bbd429e09f7b74420bfc76460c8543a254fa494cbf4ec491053e431
|
|
| MD5 |
5f49dad3fa34981fd60157dfb077be5c
|
|
| BLAKE2b-256 |
6b09f09d80b4ebb91b14825897b22a0191c10e8923aa5b4186aad295e089c132
|