Skip to main content

Implementation Test CD

Overview

You must have often wondered about how to make a function restricted to the user so that it could only be called a specific number of time, or even a function that is password protected.

This library provides an array of function decorators that can be used for the same.

Table of Contents

Features

  • Easily restrict any function according to your needs.
  • improve overall acessibility of your program.

Installation

Install using pip.

pip install deny-me

Usage

  • Once/Twice

To make your function run only once.

import the decorators.

from deny_me.restrict import once, twice

use acording to your needs.

# demo function
# This function will be callable only once.
# Repeated calling will generate error.
class some_class:
    def __init__(self):
        ...

    @once
    def function1(self, name: str, school: str = "ABC"):
        print(f"{name} goes to {school}!")
        ...

    # demo funtion 2
    # This function will be callable two times.
    # will generate error if called more than twice
    @twice
    def function2(self, *args, **kwargs):
        ...

Note to the users.

If other decorators are used for a function other than these, then it is recommended to use these decorators at the last.

For example:

# demo class
class Demo:
    def __init__(self):
        ...
    
    # suppose you need to define a property
    # that is only callable once.
    @property
    # use property first
    @once
    # and then use once
    def property1(self):
        return ...
    
    # similarly if you want to define a setter
    # for the property.
    @property1.setter # use this
    # and then the once decorator
    @once
    def property1(self, value: str):
        self.value = value
        ...
  • Run custom times

To run a function n times.

import the Allow class.

from deny_me.restrict import Allow

run n=10 times

# demo function
# this function will run 10 times

class Demo:
    def __init__(Self):
        ...
    
    @Allow(10).times
    def function(self, *args, **kwargs):
        ...

Note: Similar to the Once/Twice decorators, If other decorators are needed, such as property, then it should be at the top and the Allow(n).times should be the last decorator.

  • Password Protection

To make your function password protected.

import the Password class.

from deny_me.password import Password

Use the password decorator.

# demo function
# this function will be password protected.
class some_class:
    def __init__(self):
        ...

    @Password("pass123").protected
    def function(*args, **kwargs):
        ...

    # It is recommended that the above function has `*args` 
    # and `**kwargs` in its parameters.
    # If some parameters are mandatory, they can be defined before 
    # mentioning `*args` and `**kwargs`.
    ## FOR EXAMPLE:

    @Password("pass123").protected
    def function(name: str, school: str = "ABC", *args, **kwargs):
        ... 

How to call the function?

# To call the function, just add `password=` parameter 
# while calling.

c = some_class()
c.function(name="hehe", password="pass123")

# This will run fine as the password is correct!
# However, if the password is wrong, it will
# prompt about the same.

# NOTE: if the `password=` parameter is missing while calling
# the function then it will raise an error stating that
# an exclusive feature has been called that is not made
# available to the users.

Metadata

Release files for deny-me 1.1

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

Source distribution (sdist)

Source distribution for deny-me 1.1
File Size Uploaded Provenance
deny_me-1.1.tar.gz 6.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for deny-me 1.1
File Interpreter ABI Platform
deny_me-1.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.4 kB

Release files / deny_me-1.1.tar.gz

Download URL deny_me-1.1.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
fd7da4b35cdc6e039fb3ecfc68c7ac5b279dc8e061f747a03f086bc8ff42eb70
BLAKE2b-256 checksum
How to use checksums
b26162f3d33278cc0d37f78efc548aaa721a610c70fa13e68f24ebcffe7b95ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / deny_me-1.1-py3-none-any.whl

Download URL deny_me-1.1-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e7006aefab954876c5295cdb3ba6f46de3fd2ef17308cd4ff01c10b3a0329dd
BLAKE2b-256 checksum
How to use checksums
b5bc1263fe557fbbad0e0d44ff49699532fcc94ee8a6b66e8d362d3cad8ba73f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Security for deny-me 1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.1 This release

2 release files No provenance

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