Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scparser-0.1.2.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scparser-0.1.2-py3-none-any.whl (3.5 kB view details)

Uploaded Python 3

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

Hashes for scparser-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4d76618ce6e6b547ef13626da449d709bae3ea57abe938c5f4572deaeb00df5c
MD5 ae52ca80794802b109fafaea4b7c6f96
BLAKE2b-256 08ace16e78a52d452036032949ee95a61b2e4f753628169b274f5b30ad80354b

See more details on using hashes here.

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

Hashes for scparser-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 876263155bbd429e09f7b74420bfc76460c8543a254fa494cbf4ec491053e431
MD5 5f49dad3fa34981fd60157dfb077be5c
BLAKE2b-256 6b09f09d80b4ebb91b14825897b22a0191c10e8923aa5b4186aad295e089c132

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page