Skip to main content

Factory+Registry pattern for Python classes.

Project description

https://travis-ci.org/eflglobal/class-registry.svg?branch=master https://readthedocs.org/projects/class-registry/badge/?version=latest

ClassRegistry

At the intersection of the Registry and Factory patterns lies the ClassRegistry:

  • Define global factories that generate new class instances based on configurable keys.

  • Seamlessly create powerful service registries.

  • Integrate with setuptools’s entry_points system to make your registries infinitely extensible by 3rd-party libraries!

  • And more!

Getting Started

Create a registry using the class_registry.ClassRegistry class, then decorate any classes that you wish to register with its register method:

from class_registry import ClassRegistry

pokedex = ClassRegistry()

@pokedex.register('fire')
class Charizard(Pokemon):
  ...

@pokedex.register('grass')
class Bulbasaur(Pokemon):
  ...

@pokedex.register('water')
class Squirtle(Pokemon):
  ...

To create a class instance from a registry, use the subscript operator:

# Charizard, I choose you!
fighter1 = pokedex['fire']

# CHARIZARD fainted!
# How come my rival always picks the type that my pokémon is weak against??
fighter2 = pokedex['grass']

Advanced Usage

There’s a whole lot more you can do with ClassRegistry, including:

  • Provide args and kwargs to new class instances.

  • Automatically register non-abstract classes.

  • Integrate with setuptools’s entry_points system so that 3rd-party libraries can add their own classes to your registries.

  • Wrap your registry in an instance cache to create a service registry.

  • And more!

For more advanced usage, check out the documentation on RTD!

Requirements

ClassRegistry is compatible with Python versions 3.6, 3.5 and 2.7.

Installation

Install the latest stable version via pip:

pip install class-registry

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

class-registry-2.0.1.tar.gz (14.5 kB view details)

Uploaded Source

Built Distributions

class_registry-2.0.1-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

class_registry-2.0.1-py2-none-any.whl (12.2 kB view details)

Uploaded Python 2

File details

Details for the file class-registry-2.0.1.tar.gz.

File metadata

File hashes

Hashes for class-registry-2.0.1.tar.gz
Algorithm Hash digest
SHA256 f5c787dec5f864c7ffd59d48b4377f45251472bbf98af99bdd81aac96153baac
MD5 2bf100f6d017a15c09763f2fca12723f
BLAKE2b-256 a4e87783889fb86de0c9cad701987ba9935a79eee5909835f0afaeeba2f8f45a

See more details on using hashes here.

File details

Details for the file class_registry-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for class_registry-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ccd4356767fc108413a76885a547c9a8521243227cd997a6e2160bb48d3f935
MD5 66320cb6df8e91507ae61e02e6257ee0
BLAKE2b-256 b5b916ec0633b043f41911b003613a53fe93c823f634b89bfb7493113544bb62

See more details on using hashes here.

File details

Details for the file class_registry-2.0.1-py2-none-any.whl.

File metadata

File hashes

Hashes for class_registry-2.0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 883256bb7e19d506580f5b552b86b34ccd228574937920f0fceb53503e56f172
MD5 7992887947e3543472f2dd43b35e270d
BLAKE2b-256 724b0c0da45816da89f949bddc4b33e71e25bbcee54748739c44a94e7b10f87b

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