Skip to main content

A light library for general purpose object factories

Project description

objectory = object + factory

CI PYPI version Python BSD-3-Clause Codecov Code style: black Doc style: google

Overview

A light Python library for general purpose object factories. In particular, it focuses on dynamic object factory implementations where objects can be registered dynamically without changing the code of the factory. An object factory can be used to instantiate an object from its configuration. The current implementation contains both abstract factory and registry approaches.

factory

from objectory import factory


class MyClass:
    pass


obj = factory("MyClass")
print(obj)

abstract factory

from objectory import AbstractFactory


class BaseClass(metaclass=AbstractFactory):
    pass


class MyClass(BaseClass):
    pass


obj = BaseClass.factory("MyClass")
print(obj)

Output:

<__main__.MyClass object at 0x123456789>

registry

from objectory import Registry

registry = Registry()


@registry.register()
class MyClass:
    pass


obj = registry.factory("MyClass")
print(obj)
<__main__.MyClass object at 0x123456789>

Please read the documentation to learn more about these approaches.

Installation

We highly recommend installing a virtual environment. objectory can be installed from pip using the following command:

pip install objectory

Please check the get started page to see other alternatives to install the library.

Contributing

Please let us know if you encounter a bug by filing an issue.

We welcome contributions from anyone, even if you are new to open source.

  • If you are planning to contribute back bug-fixes, please do so without any further discussion.
  • If you plan to contribute new features, utility functions, or extensions to the core, please first open an issue and discuss the feature with us.

Once you implement and test your feature or bug-fix, please submit a Pull Request.

Please feel free to open an issue to share your feedback or to request new features.

API stability

:warning: While objectory is in development stage, no API is guaranteed to be stable from one release to the next. In fact, it is very likely that the API will change multiple times before a stable 1.0.0 release. In practice, this means that upgrading objectory to a new version will possibly break any code that was using the old version of objectory.

License

objectory is licensed under BSD 3-Clause "New" or "Revised" license available in LICENSE file.

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

objectory-0.0.1.tar.gz (14.2 kB view hashes)

Uploaded Source

Built Distribution

objectory-0.0.1-py3-none-any.whl (16.4 kB view hashes)

Uploaded Python 3

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