Skip to main content

No project description provided

Project description

Implements the impl pattern*

/* inspired by Rust

Useful when it is needed to extend a class (usually 3d party) with some methods

Install

pip install impl_pattern

or

poetry add impl_pattern

Usage

Regular methods

from impl_pattern import impl

class Sample:
    def __init__(self):
        self.value = 10

@impl(Sample)
def plus_one(self: Sample):
    self.value += 1

s = Sample()
s.plus_one()

print(s.value) 
# 11

it works with async methods as well

from asyncio import sleep

@impl(Sample)
async def plus_one(self: Sample):
    await sleep(1)
    self.value += 1

s = Sample()
await s.plus_one()

print(s.value) 
# 11

Class methods

To register function as a classmethod you can use impl_classmethod decorator

from impl_pattern import impl_classmethod

class Sample:
    value = 10

@impl_classmethod(Sample)
def plus_one(cls):
    cls.value += 1

Sample.plus_one()

print(Sample.value) 
# 11

This works with async methods too

from asyncio import sleep

@impl_classmethod(Sample)
async def plus_one(cls):
    await sleep(1)
    self.value += 1

await Sample.plus_one()

print(Sample.value) 
# 11

Static methods

Static methods use the same syntax but with the impl_staticmethod decorator

from impl_pattern import impl_staticmethod

class Sample:
    ...

@impl_staticmethod(Sample)
def get_one():
    return 1

print(Sample.get_one()) 
# 1

This works with async methods too

from asyncio import sleep

@impl_staticmethod(Sample)
async def get_one():
    return 1

print(await Sample.get_one()) 
# 1

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

impl_pattern-0.1.1.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

impl_pattern-0.1.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file impl_pattern-0.1.1.tar.gz.

File metadata

  • Download URL: impl_pattern-0.1.1.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.5 Linux/5.11.0-46-generic

File hashes

Hashes for impl_pattern-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b4e773a16335fc6653b5a787ef47fc16eb041f334809e3507d8f19153d87f674
MD5 6839cede26a3441be255344a74c103fd
BLAKE2b-256 35ade4b66ce306f06f5a0b92a8e3e93fe76abaed5991feb0152823c5fa2736b3

See more details on using hashes here.

File details

Details for the file impl_pattern-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: impl_pattern-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.5 Linux/5.11.0-46-generic

File hashes

Hashes for impl_pattern-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5d5518f335260c7f858558e47029bc489205d960a44c8abde28495592a6ddf55
MD5 5a1c6bd7505b4a28119c1195f9729ac1
BLAKE2b-256 113438f8b291141ea191855228a2c6b5d5d53fb928459864d037748d7a4c8017

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