Skip to main content

A python library that implements many small tools that are often used in python development.

Project description

🧰 ten-utils

A Python toolkit with commonly used development utilities: logging, in-memory buffers, env variable loading, and more — designed to reduce boilerplate and accelerate development.

PyPI version License Python Downloads


✨ Features

  • ✅ Structured logging with file support(at the time of version 0.0.14 the file saving functionality has not yet been implemented)
  • ✅ Memory-based buffer system
  • ✅ Env file loading with type validation
  • 🛠️ More utilities coming soon...

📦 Installation

You can install ten-utils using pip:

pip install ten-utils

Or with development tools:

pip install ten-utils[dev]

🚀 Quick Start

So far, the library has a few utilities like this:

  • log - Utility for logging any actions in the code. The tool implements the main class Logger and the class for configuration of the main class LoggerConfig.
  • buffer - A utility that creates a value inside the program memory and stores it until it is disabled or intentionally deleted by the user using a method.
  • env_loader - A utility for loading and validating environment variables using a .env file.

Quick start for log utility

from ten_utils.log.logger import Logger
from ten_utils.log.config import LoggerConfig


# Set global configuration
LoggerConfig().set_default_level_log(1)       # Set minimum level to INFO
LoggerConfig().set_save_log_to_file(False)    # Don't write to file

# Create logger instance
logger = Logger(__name__)  # or any other logger name

# Logging
logger.debug("This is a debug message")     # Will be ignored (default = INFO)
logger.info("App started successfully")
logger.warning("This is a warning")
logger.error("An error occurred")

You can also change the configuration at any time within the code. A new instance of the Logger class will use the new configuration you set, while an old instance of the Logger class will use the old configuration.

from ten_utils.log.logger import Logger
from ten_utils.log.config import LoggerConfig


LoggerConfig().set_default_level_log(1)       # Set minimum level to INFO
LoggerConfig().set_save_log_to_file(False)    # Don't write to file

# Create logger instance
logger = Logger(__name__)

# Logging
logger.debug("This is a debug message")     # Will be ignored (default = INFO)
logger.info("App started successfully")
logger.warning("This is a warning")
logger.error("An error occurred")

# Installing a new configuration
LoggerConfig().set_default_level_log(2)       # Set minimum level to WARNING
LoggerConfig().set_save_log_to_file(True)     # Enable file output

# Creating a new instance
logger1 = Logger(__name__)

# Logging
logger1.debug("This is a debug message 1")     # Will be ignored (default = WARNING)
logger1.info("App started successfully 1")     # Will be ignored (default = WARNING)
logger1.warning("This is a warning 1")
logger1.error("An error occurred 1")

Warning:

  • Logs will not be saved to a file, because at the time of v0.0.14 this is not yet implemented.

It's also worth talking about the logger.critical methods:

from ten_utils.log.logger import Logger
from ten_utils.log.config import LoggerConfig


LoggerConfig().set_default_level_log(4)     # Set minimum level to CRITICAL

logger = Logger(__name__)

logger.critical("Critical log!")

There is an important point that when logger.critical is triggered, the programme crashes with the message: Process finished with exit code 1. This behaviour occurs because logger.critical executes exit(1) at the end of execution.

Quick start for buffer utility

from ten_utils.buffer import Buffer


buffer = Buffer()

# Set a value named 'Test' with a value of 'True'.
buffer.set("Test", True)

# Getting value from buffer
value = buffer.get("Test")
print(value)

# Clearing the entire buffer
buffer.clear()

Info:

  • The Buffer class is implemented using the metaclass Singleton. Therefore an instance of the Buffer class can be initialised once and used throughout the programme

Quick start for env_loader utility

from ten_utils.env_loader import EnvLoader

# Create instance and load .env file
env_loader = EnvLoader(".env")

# Reading environment variables
db_name = env_loader.load("DB_NAME", str)
port = env_loader.load("PORT", int)
is_active = env_loader.load("IS_ACTIVE", bool)
allowed_hosts = env_loader.load("ALLOWED_HOSTS", list)

print(db_name, port, is_active, allowed_hosts)

Example .env file:

DB_NAME=mydatabase
PORT=5432
IS_ACTIVE=true
ALLOWED_HOSTS=localhost,127.0.0.1,example.com

🧪 Running Tests

pytest tests/ --disable-warnings -v

To install test/dev dependencies:

pip install ten-utils[dev]

📜 License

This project is licensed under the MIT License — see the LICENSE file for details.


👤 Author

Александр Караваев
Email
GitHub Profile


💡 Contributing

Contributions, issues and feature requests are welcome!
Feel free to open a discussion or a pull request.

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

ten_utils-0.0.15.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

ten_utils-0.0.15-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file ten_utils-0.0.15.tar.gz.

File metadata

  • Download URL: ten_utils-0.0.15.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for ten_utils-0.0.15.tar.gz
Algorithm Hash digest
SHA256 14d7a1dbe14dd0a0a1304c70bb7d7d67fecef159e1dfdf29982f1142662c79cd
MD5 59acc1687e8f8d5612eb0f968bfc5ba8
BLAKE2b-256 cb0832f867f0cd02b433310ef4fa830f0fe8c8c85df5de2cd0567fb710dbc8e7

See more details on using hashes here.

File details

Details for the file ten_utils-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: ten_utils-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for ten_utils-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 83b52c6fb634cd446379018178ae91fce3ddcc4d743556458cb2b071bc5b8d49
MD5 2c4ff781a22d5c9f1da8fe21007edc66
BLAKE2b-256 6ce9e9bcba74fe27284230aa362cf2fba969961531b227e0654f7872760cf964

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