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.1.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.1-py3-none-any.whl (3.5 kB view details)

Uploaded Python 3

File details

Details for the file scparser-0.1.1.tar.gz.

File metadata

  • Download URL: scparser-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 d9f6c09fa440f7df1338fc98a5615c79ca8c4059d7526fdb0004cd4baef2a633
MD5 0f5236e3fd4072f002dd0e8063cffa27
BLAKE2b-256 5a2456672237601c89ffa8cc0625c541e11410f77bd401532d6f686c38495c96

See more details on using hashes here.

File details

Details for the file scparser-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scparser-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 67b7ba299ae454d71080011f8514a0ad1c4fe38c5db1bdaaf342d6e51549e0e4
MD5 3c95e7f764e61e9aa89c2c3eaca3bb7c
BLAKE2b-256 7155dbc1ac4a02e962030123dea1ae3e27b5a19b4667c1b964ae03dab9ab97c8

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