Skip to main content

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'
})

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.3.2.tar.gz (12.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.3.2-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for teklia_toolbox-0.3.2.tar.gz
Algorithm Hash digest
SHA256 ec32276d2914bd899ede8700f7ec287714053c252391d9959cc3bc66f091a948
MD5 372bfb8e7c98d711db860deb50fd6d88
BLAKE2b-256 22dfff790aeb9a607ddb95a0b8f2c2304219cda2567091336aab0023f37e68d1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for teklia_toolbox-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0493259367ef6b054bb50172b402882dbf2c3df02bb7e88751b16692b5dbec65
MD5 e59e423eb1ec1de0ed797ce3f16f0be1
BLAKE2b-256 aa601b7453248e3cea65e6471f7eb73d022c286baed7a1eedf510072838cfe6b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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