Skip to main content

Basic infrastructure for writing scripts

Project description

Build Status PyPI version

Python is an excellent language that makes writing scripts very straightforward. Over the course of writing many scripts, we realized that we were doing some things over and over like creating a logger and accepting command line arguments. Base script is a very simple abstraction that takes care of setting up logging and other basics so you can focus on your application specific logic.

Here are some facilities that Base Script offers: - Logging - Accepting command-line arguments using argparse

Installation

pip install basescript

Usage

Here is a simple example to get started

Hello World

helloworld.py

from basescript import BaseScript

class HelloWorld(BaseScript):
    def run(self):
        print "Hello world"

if __name__ == '__main__':
    HelloWorld().start()

NOTE: all examples showcased here are available under the
``examples`` directory

Run the above by doing:

python helloworld.py run

Run script with log level set to DEBUG

python helloworld.py --log-level DEBUG run

Run script with custom log file

python helloworld.py --log-level DEBUG --log mylog run

Command line args, Using the logger

The following is a more involved example

adder.py

from basescript import BaseScript

class Adder(BaseScript):
    # The following specifies the script description so that it be used
    # as a part of the usage doc when --help option is used during running.
    DESC = 'Adds numbers'

    def __init__(self):
        super(Adder, self).__init__()
        self.a = 10
        self.b = 20

    def define_args(self, parser):
        parser.add_argument('c', type=int, help='Number to add')

    def run(self):
        self.log.info("Starting run of script ...")

        print self.a + self.b + self.args.c

        self.log.info("Script is done")

if __name__ == '__main__':
    Adder().start()

Run the script as follows and observe the usage information shown. Note how the description appears along with the c argument.

python adder.py --help
usage: adder.py [-h] [--name NAME] [--log LOG] [--log-level LOG_LEVEL]
                [--quiet]
                {run} ...

Adds numbers

optional arguments:
  -h, --help            show this help message and exit
  --name NAME           Name to identify this instance
  --log LOG             Name of log file
  --log-level LOG_LEVEL
                        Logging level as picked from the logging module
  --quiet

commands:
  {run}
python adder.py run --help
usage: adder.py run [-h] c

positional arguments:
  c           Number to add

optional arguments:
  -h, --help  show this help message and exit

Run the script now to see the intended output

python adder.py run 30
60

Run the same with info and higher level logs enabled

python adder.py --log-level INFO 30
2016-04-10 13:48:27,356 INFO Starting run of script ...
60
2016-04-10 13:48:27,356 INFO Script is done

--log-level accepts all the values shown at https://docs.python.org/2/library/logging.html#logging-levels.

log is a log object created using python’s standard logging module. You can read more about it at https://docs.python.org/2/library/logging.html.

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

basescript-0.2.2.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

basescript-0.2.2-py2-none-any.whl (11.7 kB view details)

Uploaded Python 2

File details

Details for the file basescript-0.2.2.tar.gz.

File metadata

  • Download URL: basescript-0.2.2.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for basescript-0.2.2.tar.gz
Algorithm Hash digest
SHA256 0f32bb19d81c58ad078c123c646434eec9817a196336769b18ab57c2d83bebd3
MD5 833ca377772674b7c70426eaf3df8ef3
BLAKE2b-256 f8e2f59b3a6a308665b741a5a8fe1669def64c5430bfa5de766b2e03d9d31c27

See more details on using hashes here.

File details

Details for the file basescript-0.2.2-py2-none-any.whl.

File metadata

File hashes

Hashes for basescript-0.2.2-py2-none-any.whl
Algorithm Hash digest
SHA256 0a0d11eb6b981d8a9d5e60c12a5ccd564bf22d0712e3abd0de06f49b9fde88ca
MD5 24b14c0e70481fb59e8a43caad13984f
BLAKE2b-256 84df997e50e0877b6693e6de1da320361b9cc4cfbcf0859baefd9a991cc2c39d

See more details on using hashes here.

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