Skip to main content

A collection of python utilities

Project description

upyls - A collection of Python utilities

Limited List

A List which can have a lower limit nd an upper limit set and only be filled with the number of items set by those limits

Just import and instantiate it

from upyls import LimitedList
limited_list = LimitedList(lower=0, upper=1)

Unit of Work

Implementation of the Unit of Work pattern out of Martin Fowler's book Patterns of Enterprise Application Architecture

UnitOfWorkMixin

This class is an abstract class (derived from ABC). It is designed as mixin, so you just can derive your class from it and your class gets the functionality of this mixin class.

For example:

from upyls import UnitOfWorkMixin

class MyUnitOfWork(UnitOfWorkMixin):
    <your code here>

The added functionality is to keep track of the attributes of the classes instances. If an attribute gets changed, it is marked as dirty and its old value is kept aside the new value.

If you have saved your instance you can call its commit-method and is will not be marked as dirty anymore and its old. value will be discarded. As in database transactions you can as well rollback, which means that the old value is put back into place and the new Value discarded. As well as with committing, the rollback-method leads to the instance not being marked as dirty anymore.

Managing Unit of Works

If you're planning to have multiple objects which you want to be Units of Work it might come handy to be able to manage them all. So if you're using a persistent storage, like a database or simply on disk, you might not want to save every single one on its own, but save them in bulks. After you saved them you should mark all saved ones. For this purpose there's is a derivative of the Unit of Work mixin, which is manageable and a manager class, which exposes the possibility to commit or rollback all manageable Units of Work, that have been registered with the manager. The two classes are very tightly coupled so the methods about connecting a unit with a manager are always two-ways: If you add a manager to a unit the unit will be registered with the manager as well and if it changes it will notify the manager. If you unregister a unit from a manager it also will stop using this manager to notify.

ManageableUnitOfWorkMixin

This class is a derivative of UnitOfWorkMixin and adds the functionality to be manageable by the UnitOfWorkManager. First thi functionality has been in the UnitOfWorkMixin but it added some clutter if you did not want to use it in a manageable way. So it became a derivate, which just contains the extra functionatlity and uses the Unit of Work functionality of its parent.

UnitOfWorkManager

This class offers the functionality to manage a collection of (manageable) Units of Work. It will keep track of registered units that have changed and you can commit all changed units or roll them all back. Of cource you can ask the manager if a certain unit is registered or if it is dirty.

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

upyls-0.0.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

upyls-0.0.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file upyls-0.0.1.tar.gz.

File metadata

  • Download URL: upyls-0.0.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for upyls-0.0.1.tar.gz
Algorithm Hash digest
SHA256 39399b822499577f77d91e2d9983dfa8f92b9cd4437e3a9d7fc0f91b747f9665
MD5 9b10d0a140896111bb1eade0b1d1a834
BLAKE2b-256 b6579e033d5f7081a76045baac0c532faa6f598f8188e808bc2d083485a8417d

See more details on using hashes here.

File details

Details for the file upyls-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: upyls-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for upyls-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 61880bbe3358755c24fcf0c10dfcdfb21cdadfdbf6226ac980922bba2a295aa2
MD5 535446f90bca1e2768b3afebf8a2cdf1
BLAKE2b-256 71a3e6e56a86d1434645f6e3a95e8391bc44e09723b1d444d79e9c9e2e53d0d1

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