Skip to main content

factory, registration, and validation tools for python

Project description

made-with-python PyPI Latest Release License Documentation Status

Why ashford?

This package provides classes and decorators for a variety of Python implementations of registration, factories, and type validators.

Registries

  • registered: a decorator that stores a registry in a registry attribute of the function or class which is wrapped by the decorator.
  • Registrar: a mixin for automatic subclass registration.

Factories

* `InstanceFactory`: mixin that stores all subclass instances in the `instances` class attribute and returns stored instances when the `create` classmethod is called. * `LibraryFactory`: mixin that stores all subclasses and subclass instances in the `library` class attribute and returns stored subclasses and/or instances when the `create` classmethod is called. * `SourceFactory`: mixin that calls the appropriate creation method based on the type of passed first argument to `create` and the types stored in the keys of the `sources` class attribute. * `StealthFactory`: mixin that returns stored subclasses when the `create` classmethod is called without having a `subclasses` class attribute like SubclassFactory. * `SubclassFactory`: mixin that stores all subclasses in the `subclasses` class attribute and returns stored subclasses when the `create` classmethod is called. * `TypeFactory`: mixin that calls the appropriate creation method based on the type of passed first argument to `create` and the snakecase name of the type. This factory is prone to significant key errors unless you are sure of the snakecase names of all possible submitted type names. SourceFactory avoids this problem by allowing you to declare corresponding types and string names.

Validators

  • bonafide: decorator that validates or converts types based on type annotations of the wrapped function or dataclass (under construction)

ashford`s framework supports a wide range of coding styles. You can create complex multiple inheritance structures with mixins galore or simpler, compositional objects. Even though the data structures are necessarily object-oriented, all of the tools to modify them are also available as functions, for those who prefer a more funcitonal approaching to programming.

The project is also highly internally documented so that users and developers can easily make ashford work with their projects. It is designed for Python coders at all levels. Beginners should be able to follow the readable code and internal documentation to understand how it works. More advanced users should find complex and tricky problems addressed through efficient code.

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

ashford-0.1.5.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

ashford-0.1.5-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file ashford-0.1.5.tar.gz.

File metadata

  • Download URL: ashford-0.1.5.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for ashford-0.1.5.tar.gz
Algorithm Hash digest
SHA256 99f91b882e4739993b643755616f8c798cd0775a49ec6be59e0f3404f0810a15
MD5 909b7b5e7b4be6e24565d7a3f5dd81ca
BLAKE2b-256 b8d6412c3ffbd29afabc7e6ff2958d3716cad42826d63a790ee975e7c37dea13

See more details on using hashes here.

File details

Details for the file ashford-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: ashford-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for ashford-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fe1f3ccd5963828d39c0b3f7fcdd2534cd9cd44141ee8fb3d5606ea951e092bc
MD5 d9ac9531568555c5e9cf625ccefcf5d8
BLAKE2b-256 5e6e819c1701162f094026c4410d77b7ccbf3bf8787b361d1eda0935757d52e8

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