Skip to main content

Only one object containing the iterator or closure, cloning and errors related to this concept

Project description

Motivation

In my plabic package (https://pypi.org/project/plabic/), I had a class which had a private iterator in my implementation of shuffle algebra calculations

But then if I did the shuffle product of x and x, those iterators would be both driven together rather than separately Simlarly if I did x and y, then used y somehere else, the x iterator which should have had all of x and y information would be missing some pieces depending on how the y iterator had been driven.

Errors

So we have errors that cover this kind of situation. The first being SameObjectError and the latter being ConsumedObjectError

Cloning

Suppose we provide a way of cloning the objects so that the closures/iterators contained are separate now. Then the two functions avoid_common_pointers and avoid_this_pointer can fix up the argument lists to that combining function which expects all distinct objects. If there are no repeats, it does not do anything and does not even need to ever try to call that optional cloning function. If there are repeats, it will call the cloning function appropriately giving the new list of arguments.

Decorators

Assumes that the function being called has all of it's args as that same type T and none of the kwargs have T in them that need cloning

handle_args_repeats

if you provide the cloner function on T and it will call that cloner on any repeated arguments in args if you don't provide the cloner and there are repeats will raise the SameObjectError if you don't provide the cloner and there are no repeats, there will not be an error

invalidate_these_args

Either provide

  • a list of argument numbers that become invalid after this function
  • a list of argument numbers that remain valid after this function with the rest becoming invalid

Also need the function which does the invalidation and a way to query the validity

This makes sure all of the args are valid and then calls the function assuming that was the case After this, the args which are supposed to become invalid are invalidated

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

ownershipworkaround-0.1.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

ownershipworkaround-0.1.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file ownershipworkaround-0.1.0.tar.gz.

File metadata

  • Download URL: ownershipworkaround-0.1.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for ownershipworkaround-0.1.0.tar.gz
Algorithm Hash digest
SHA256 27f47afbc6fbc69c3586b4a49a2dc7d52c02dcd880c0606a977a3f21d9de8291
MD5 2047cddb1b70859bf9dac4e7274d5e45
BLAKE2b-256 0b2cc39c53e399805b61be84b30951abb61856d96c50b8eb6ebcafb0057a505e

See more details on using hashes here.

File details

Details for the file ownershipworkaround-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ownershipworkaround-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d03811983b68dceba6f2816028051c599abe821d5b08090c151b6b1b944ca410
MD5 3d08fae10735c2b6f96f61ad806f5347
BLAKE2b-256 28f08a5dd9e861ce631100aab4c77373d8b5b16ecc29525a143753844efe8703

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