Skip to main content

Basic portable abstractions for Pip.Services in Python

Project description

Pip.Services Logo
Portable Abstractions and Patterns for Python

This module is a part of the Pip.Services polyglot microservices toolkit. It provides a set of basic patterns used in microservices or backend services. Also the module implemenets a reasonably thin abstraction layer over most fundamental functions across all languages supported by the toolkit to facilitate symmetric implementation.

The module contains the following packages:

  • Commands - commanding and eventing patterns
  • Config - configuration pattern
  • Convert - portable value converters
  • Data - data patterns
  • Errors- application errors
  • Random - random data generators
  • Refer - locator inversion of control (IoC) pattern
  • Reflect - portable reflection utilities
  • Run - component life-cycle management patterns
  • Validate - validation patterns

Quick links:

Use

Install the Python package as

pip install pip_services3_commons

Then you are ready to start using the Pip.Services patterns to augment your backend code.

For instance, here is how you can implement a component, that receives configuration, get assigned references, can be opened and closed using the patterns from this module.

from pip_services3_commons.config import IConfigurable, ConfigParams
from pip_services3_commons.refer import IReferenceable, IReferences, Descriptor
from pip_services3_commons.run import IOpenable


class MyComponentA(IConfigurable, IReferenceable, IOpenable):
    _param1 = 'ABC'
    _param2 = 123
    _another_component: MyComponentB
    _opened = True

    def configure(self, config):
        self._param1 = ConfigParams.get_as_string_with_default("param1", self._param1)
        self._param2 = config.get_as_integer_with_default("param2", self._param2)

    def set_references(self, references):
        self._another_component = references.get_one_required(
            Descriptor("myservice", "mycomponent-b", "*", "*", "1.0")
        )

    def is_opened(self):
        return self._opened

    def open(self, correlation_id):
        self._opened = True
        print("MyComponentA has been opened.")

    def close(self, correlation_id):
        self._opened = True
        print("MyComponentA has been closed.")

Then here is how the component can be used in the code

from pip_services3_commons.config import IConfigurable, ConfigParams
from pip_services3_commons.refer import References, Descriptor

my_component_A = MyComponentA()

# Configure the component
my_component_A.configure(ConfigParams.from_tuples(
    'param1', 'XYZ',
    'param2', 987
))

# Set references to the component
my_component_A.set_references(References.from_tuples(
    Descriptor("myservice", "mycomponent-b", "default", "default", "1.0"), my_component_B
))

# Open the component
my_component_A.open("123")
print("MyComponentA has been opened.")

Develop

For development you shall install the following prerequisites:

  • Python 3.7+
  • Visual Studio Code or another IDE of your choice
  • Docker

Install dependencies:

pip install -r requirements.txt

Run automated tests:

python test.py

Generate API documentation:

./docgen.ps1

Before committing changes run dockerized build and test as:

./build.ps1
./test.ps1
./clear.ps1

Contacts

The library is created and maintained by:

  • Sergey Seroukhov
  • Danil Prisiazhnyi

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

pip_services3_commons-3.3.11.tar.gz (93.8 kB view details)

Uploaded Source

File details

Details for the file pip_services3_commons-3.3.11.tar.gz.

File metadata

  • Download URL: pip_services3_commons-3.3.11.tar.gz
  • Upload date:
  • Size: 93.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for pip_services3_commons-3.3.11.tar.gz
Algorithm Hash digest
SHA256 dcfdfc47f981244d8282123ced563ca4eab68289184b27770f5879af110660e9
MD5 20d4ac16bbe4ee12efb3d82a3b5be911
BLAKE2b-256 5cda09dd85be6448379657bcde09c9ff6eed4be1043c33c5e55b82087332bd14

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