Skip to main content

simple script parameter parser

Project description


light-weight library to enhance command-line scripts; includes conversion of parameters to specified data types, parameter checking, basic input/output with users, support for suid [1], sending email, executing sub-programs, and having sub-commands within a script


  • Script: sets global variables and/or parameters for Commands; the decorated function will be called by Main/Run before any specified Command

  • Command: marks function as a subcommand for the script (e.g. add, delete, list, etc.); if no subcommand is specified on the command-line, scription will look for a Command with the same name as the script

  • Alias: registers other names for Commands (e.g. delete / remove / kill)


  • Main: if the importing module’s __name__ is __main__, call Run() (this allows for importing the script as a module)

  • Run: unconditionally attempts to run the Script function (if any) and the Command found on the command-line

Main() or Run() should be the last thing in the script


  • Spec: can be used when defining the command-line parameters (can also just use tuples)

helper functions/classes

  • abort: quits immediately by raising SystemExit

  • Execute: class for executing other programs; uses subprocess.Popen by default, but if pty=True is specified then pty.fork will be used (handy for programs that only accept input from a pty)

  • get_response: function for displaying text and getting feedback

  • help: quits immediately, but adds a reference to –help in the quit message

  • log_exception: logs an exception with logging.logger

  • mail: rudimentary mail sender

  • OrmFile: lightweight orm – supports str, int, float, date, time, datetime, bool, and path (which defaults to str); custom data types can also be specified

  • print: wrapper around print that adds a ‘verbose_level’ keyword (default: 1); default verbosity is 0 (so print does nothing), but can be increased using -v, -vv, –verbose, or –verbose=2 (in Python 2 the script must use ‘from __future__ import print_function’ to use scription’s print)

  • user_ids: context manager useful for suid scripts – all actions taken within the context are run as the user/group specified


  • extra parameters defined by Script are global, and can be accessed from any function or Command

  • ‘module’ is a namespace inserted into the script

  • ‘script_command’ is the Command selected from the command line (useful when one needs to call the subcommand directly from a main() function)

  • ‘script_command_name’ is the name of the script_command

  • ‘script_verbosity’ is the level of verboseness selected (defaults to 0)

  • ‘script_name’ is the name of the script

  • builtin options are: –help, –verbose (-v or -vv), –version, –all-versions –version attempts to display the version of the main package in use –all-versions attempts to display the versions of any imported packages

  • command-line is decoded to unicode under Python 2 (Python 3 does this for us)

[1] I use the suid-python program, available at

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

scription-0.86.25.tar.gz (65.5 kB view hashes)

Uploaded source

Built Distributions

scription-0.86.25-py3-none-any.whl (65.1 kB view hashes)

Uploaded py3

scription-0.86.25-py2-none-any.whl (65.1 kB view hashes)

Uploaded py2

Supported by

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