Skip to main content

No project description provided

Project description

Python Toolbox

Python toolbox that provides a timer and a configuration parser.

Installation

To install this module run:

pip install teklia-toolbox

Timer

Wrapper that calculates the execution time of instructions. This information is stored in the delta attribute which is of type datetime.timedelta.

from teklia_toolbox.time import Timer

with Timer() as t:
    # Some code
    pass
print(f'These instructions took {t.delta}')

Configuration parser

ConfigParser

The ConfigParser class allows to instantiate a parser. It takes as argument:

  • a boolean allow_extra_keys to specify if the parser should ignore extra unspecified keys instead of causing errors (default to True)

Add option

The add_option function allows to add parameter to the parser. It takes as argument:

  • a parameter name
  • a parameter type (which must be callable) (default to str)
  • a many boolean to specify if the parameter can have a list of values (default to False)
  • a default value (default to object())

Add subparser

The add_subparser function adds a parser as a new option to the initial parser, to allow finer control over nested configuration options. It takes the same arguments as the ConfigParser class and the add_option function.

Parse data

The parse_data function parses configuration data from a dict. It will raise ConfigurationError if any error is detected. Otherwise it returns a dictionary. It takes as argument:

Parse

The parse function parses configuration data from a yaml file. It will raise ConfigurationError if any error is detected. Otherwise it returns a dictionary. It takes as argument:

  • a path to the yaml file
  • a boolean exist_ok to specify if the parser should ignore a non-existing file (default to False)
from teklia_toolbox.config import ConfigParser

parser = ConfigParser()
parser.add_option('names', type=str, many=True, default=[])
parser.add_option('pseudo', type=str) # Required
parser.add_option('age', type=int, default=21)

parents_parser = parser.add_subparser('parents', default={})

mother_parser = parents_parser.add_subparser('mother', default={})
mother_parser.add_option('name', type=str, default=None)
mother_parser.add_option('age', type=int, default=None)

father_parser = parents_parser.add_subparser('father', default={})
father_parser.add_option('name', type=str, default=None)
father_parser.add_option('age', type=int, default=None)

# This will return
# {
#     'names': ['Pierre', 'Dupont'],
#     'pseudo': 'BoumBoum',
#     'age': 21,
#     'parents': {
#         'mother': {
#             'name': 'Marie',
#             'age': None
#         },
#         'father': {
#             'name': None,
#             'age': None
#         }
#     }
# }
parser.parse_data({
    'names': ['Pierre', 'Dupont'],
    'pseudo': 'BoumBoum',
    'parents': {
        'mother': {
            'name' : 'Marie'
        }
    }
})

ConfigurationError

The ConfigurationError class inherits from the ValueError class. This type of error is raised if the parser finds errors during parsing.

from teklia_toolbox.config import ConfigurationError

raise ConfigurationError("Oops..")

dir_path and file_path

The dir_path and file_path functions allow you to easily add path or file parameters to the parser.

from teklia_toolbox.config import ConfigParser
from teklia_toolbox.config import dir_path, file_path

parser = ConfigParser()
parser.add_option('root_path', type=dir_path, default=None)
parser.add_option('csv_file', type=file_path, default=None)

# This will return
# {
#   'root_path': PosixPath('/sweet/home'),
#   'csv_file': PosixPath('/coucou.csv')
# }
parser.parse_data({
    'root_path': '/sweet/home/',
    'csv_file': './coucou.csv'
})

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

teklia_toolbox-0.2.1.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

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

teklia_toolbox-0.2.1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file teklia_toolbox-0.2.1.tar.gz.

File metadata

  • Download URL: teklia_toolbox-0.2.1.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for teklia_toolbox-0.2.1.tar.gz
Algorithm Hash digest
SHA256 8f1f8ae7fd4e9e4434fa80cd4b89b35f770062f786a303ac1d4518db7ca2c88c
MD5 910ff344d2ff0f50fc5bb4e3876a07dd
BLAKE2b-256 2e434cb6a667905af32595a5309eb5ef8257d0c77c83e52c9b0c34be7a5abcc3

See more details on using hashes here.

File details

Details for the file teklia_toolbox-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: teklia_toolbox-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for teklia_toolbox-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 80dcc07bbf854e919e68c5c92fd19f4d61b3356bb38f38efe88f97cc7f1d168b
MD5 9a4a8e56f29578901d7004182548707e
BLAKE2b-256 716a89147a1ab699384d9e19a9d6acf7e824a334f02a952c97ba5f6da0507d4e

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