Skip to main content

object-tracker

A pure python object state tracker. Monitor all changes in your object’s lifecycle, query the history changelog, and trigger callback functions to capture them.

View the Github repository and the official docs.

$ pip install object-tracker

Tested for python 3.6, 3.7 and above.

Key Features

  • Determine if a python object has changed state during it’s lifecycle.

  • Investigate change history by querying a structured changelog.

  • Trigger callback functions whenever an (or any) attribute has changed.

  • Use it as a decorator, a class mixin or on its own.

License

Copyright (c) Saurabh Pujari
All rights reserved.

This source code is licensed under the BSD-style license found in the LICENSE file in the root directory of this source tree.

Usage :

Use the @track decorator to track an object’s attributes.

from object_tracker import track

def observer(attr, old, new):
    print(f"Observer : {attr} -> {old} - {new}")

@track('name', 'age', observers=[observer,])
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

user = User(name='Alice', age=30)
user.name = 'Bob'
# Observer : name -> Alice - Bob
print(user.tracker.has_changed())
# True
print(user.tracker.has_attribute_changed('name'))
# True

Or use the Tracker class

class MyClass:
    pass

obj = MyClass()
tracker = Tracker(obj)
obj.attribute = 'new_value'
print(tracker.has_changed(obj))
# True

Or use it with the mixin class TrackerMixin:

from object_tracker import TrackerMixin, Tracker

 class User(TrackerMixin):
     def __init__(self, name, age):
         self.name = name
         self.age = age
         self.tracker = Tracker()

Metadata

Release files for object-tracker 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for object-tracker 2.0.0
File Size Uploaded
object-tracker-2.0.0.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for object-tracker 2.0.0
File Interpreter ABI Platform
object_tracker-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.0 kB

Release files / object-tracker-2.0.0.tar.gz

Download URL object-tracker-2.0.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4c87c9ffddff9d2434f122446b9ca60c87f210d1c7e210043091ce3f97cc7f8f
BLAKE2b-256 checksum
How to use checksums
3a6c55e5f7a3cc83216578b3893a13f9cb6d4154c8a234033d7762d346a69d11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.13

Release files / object_tracker-2.0.0-py3-none-any.whl

Download URL object_tracker-2.0.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
409d5d6ea7bb8c363382d4391f6606e747d144499af3d2f9dcdd8daa82ffb906
BLAKE2b-256 checksum
How to use checksums
0d3371b54d414e904df31f72be3a16391f254deee0633488a22c24cec912099d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.13

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page