Skip to main content

Few Utilities

Project description

Few Utility Functions

License Python PyPi Build Status

Install

pip install ddcUtils
pip install git+https://github.com/ddc/ddcUtils

Cryptography

from ddcUtils import Cryptography
cp = Cryptography()
  • GENERATE_PRIVATE_KEY

    • Generates a private key to be used instead of default one
    • But keep in mind that this private key will be needed to decode further strings
      @staticmethod
      generate_private_key() -> str
      
  • ENCODE

    • Encodes a given string
      encode(str_to_encode: str) -> str
      
  • DECODE

    • Decodes a given string
      decode(str_to_decode: str) -> str
      

File Utils

from ddcUtils import FileUtils
fu = FileUtils()
  • OPEN_FILE

    • Opens the given file and returns 0 for success and 1 for failed access to the file
      @staticmethod
      open_file(file_path: str) -> int
      
  • LIST_FILES

    • Lists all files in the given directory and returns them in a list
      @staticmethod
      list_files(directory: str, starts_with: str = None, ends_with: str = None) -> list
      
  • GZIP_FILE

    • Opens the given file and returns the path for success or None if failed
      @staticmethod
      gzip_file(file_path: str) -> Path | None
      
  • UNZIP_FILE

    • Opens the given file and returns the zipfile for success or None for failed
      @staticmethod
      unzip_file(file_path: str, out_path: str = None) -> zipfile.ZipFile | None
      
  • COPYDIR

    • Copy files from src to dst and returns True or False
      @staticmethod
      copydir(src, dst, symlinks=False, ignore=None) -> bool
      
  • DOWNLOAD_FILE

    • Download file from remote url to local and returns True or False
      @staticmethod
      download_file(remote_file_url, local_file_path) -> bool
      
  • GET_EXE_BINARY_TYPE

    • Returns the binary type of the given windows EXE file
      @staticmethod
      get_exe_binary_type(file_path: str) -> str | None
      

Functions for .ini/.conf config file structure

Example of file.ini:

[main]
files=5
path="/tmp/test_dir"
port=5432
list=1,2,3,4,5,6
  • GET_FILE_VALUES

    • Get all values from an .ini config file structure and returns them as a dictionary
      get_file_values(file_path: str, mixed_values: bool = False) -> dict
      
  • GET_FILE_SECTION_VALUES

    • Get all section values from an .ini config file structure and returns them as a dictionary
      get_file_section_values(file_path: str, section: str) -> dict
      
  • GET_FILE_VALUE

    • Get value from an .ini config file structure and returns it
      get_file_value(file_path: str, section: str, config_name: str) -> str | int | None:
      
  • SET_FILE_VALUE

    • Set value from an .ini config file structure and returns True or False
      set_file_value(file_path: str, section_name: str, config_name: str, new_value) -> bool:
      

Object

  • This class is used for creating a simple class object
from ddcUtils import Object
obj = Object()
obj.test = "test"

Misc Utils

from ddcUtils import MiscUtils
mu = MiscUtils()
  • CLEAR_SCREEN

    • Clears the terminal screen
      @staticmethod
      clear_screen() -> None
      
  • USER_CHOICE

    • This function will ask the user to select an option
      @staticmethod
      user_choice() -> input
      
  • GET_ACTIVE_BRANCH_NAME

    • This function will return the name of the active branch
      @staticmethod
      get_active_branch_name(default_master_branch_name: str = "master") -> str
      
  • GET_CURRENT_DATE_TIME

    • Returns the current date and time on UTC timezone
      @staticmethod
      get_current_date_time() -> datetime
      
  • CONVERT_DATETIME_TO_STR_LONG

    • Converts a datetime object to a long string
    • returns: "Mon Jan 01 2024 21:43:04"
      @staticmethod
      convert_datetime_to_str_long(date: datetime) -> str
      
  • CONVERT_DATETIME_TO_STR_SHORT

    • Converts a datetime object to a short string
    • returns: "2024-01-01 00:00:00.000000"
      @staticmethod
      convert_datetime_to_str_short(date: datetime) -> str
      
  • CONVERT_STR_TO_DATETIME_SHORT

    • Converts a str to a datetime
    • input: "2024-01-01 00:00:00.000000"
      @staticmethod
      convert_str_to_datetime_short(datetime_str: str) -> datetime
      
  • GET_CURRENT_DATE_TIME_STR_LONG

    • Returns the current date and time as string
    • returns: "Mon Jan 01 2024 21:47:00"
      get_current_date_time_str_long() -> str
      

OS Utils

from ddcUtils import OsUtils
ou = OsUtils()
  • GET_OS_NAME

    • Get OS name
      @staticmethod
      get_os_name() -> str
      
  • IS_WINDOWS

    • Check if OS is Windows
      @staticmethod
      is_windows() -> bool
      
  • GET_CURRENT_PATH

    • Returns the current working directory
      @staticmethod
      get_current_path() -> Path
      
  • GET_PICTURES_PATH

    • Returns the pictures directory inside the user's home directory
      get_pictures_path() -> Path
      
  • GET_DOWNLOADS_PATH

    • Returns the download directory inside the user's home directory
      get_downloads_path() -> Path
      

Logs

  • SETUP_LOGGING
    • Logs will rotate based on when variable to a .tar.gz file, defaults to midnight
    • Logs will be deleted based on the days_to_keep variable, defaults to 7
    • Current 'when' events supported:
      • S - Seconds
      • M - Minutes
      • H - Hours
      • D - Days
      • midnight - roll over at midnight
      • W{0-6} - roll over on a certain day; 0 - Monday
from ddcUtils import Log
log = Log(
    dir_logs: str = "logs",
    filename: str = "app",
    days_to_keep: int = 7,
    when: str = "midnight",
    utc: bool = True,
    level: str = "info"
)
log.setup_logging()

Databases

  • DBSQLITE
class DBSqlite(db_file_path: str, batch_size=100, echo=False)
import sqlalchemy as sa
from ddcUtils.databases import DBSqlite, DBUtils
dbsqlite = DBSqlite(database_file_path)
with dbsqlite.session() as session:
    stmt = sa.select(Table).where(Table.id == 1)
    db_utils = DBUtils(session)
    results = db_utils.fetchall(stmt)
  • DBPOSTGRES
import sqlalchemy as sa
from ddcUtils.databases import DBPostgres, DBUtils
db_configs = {
    "username": username,
    "password": password,
    "host": host,
    "port": port,
    "database": database
}
dbpostgres = DBPostgres(**db_configs)
with dbpostgres.session() as session:
    stmt = sa.select(Table).where(Table.id == 1)
    db_utils = DBUtils(session)
    results = db_utils.fetchall(stmt)
  • DBPOSTGRES ASYNC
import sqlalchemy as sa
from ddcUtils.databases import DBPostgresAsync, DBUtilsAsync
db_configs = {
    "username": username,
    "password": password,
    "host": host,
    "port": port,
    "database": database
}
dbpostgres = DBPostgresAsync(**db_configs)
async with dbpostgres.session() as session:
    stmt = sa.select(Table).where(Table.id == 1)
    db_utils = DBUtilsAsync(session)
    results = await db_utils.fetchall(stmt)
  • DBUTILS
    • Uses SQLAlchemy statements
from ddcUtils.databases import DBUtils
db_utils = DBUtils(session)
db_utils.add(stmt)
db_utils.execute(stmt)
db_utils.fetchall(stmt)
db_utils.fetchone(stmt)
db_utils.fetch_value(stmt)
  • DBUTILS ASYNC
    • Uses SQLAlchemy statements
from ddcUtils.databases import DBUtilsAsync
db_utils = DBUtilsAsync(session)
await db_utils.add(stmt)
await db_utils.execute(stmt)
await db_utils.fetchall(stmt)
await db_utils.fetchone(stmt)
await db_utils.fetch_value(stmt)

Source Code

Build

poetry build

Run Tests

poe test

Get Coverage Report

poe coverage

License

Released under the MIT License

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

ddcutils-1.0.18.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

ddcutils-1.0.18-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file ddcutils-1.0.18.tar.gz.

File metadata

  • Download URL: ddcutils-1.0.18.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for ddcutils-1.0.18.tar.gz
Algorithm Hash digest
SHA256 6099ff4eeb3659e40a9a5c86a7422017971d61d114b66e33ed8b65c9725b479e
MD5 53cb2b5f6cc7a915d67ad5308ebc7983
BLAKE2b-256 5dfdb86a1d33b72865fbdfe143df9b4dbff6a6315752c7602e3d084167b03632

See more details on using hashes here.

Provenance

File details

Details for the file ddcutils-1.0.18-py3-none-any.whl.

File metadata

  • Download URL: ddcutils-1.0.18-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for ddcutils-1.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 c352fad0c1d1e03a00808533ce8d5c3c3710e950f065a037380e84e040a8182e
MD5 d3a7b707906a2a8b4e55ab78ec1c5d4f
BLAKE2b-256 e86b775b1f1e82ea37f4cf6535d8c759962b0b58500503ea07b02de5e0df2359

See more details on using hashes here.

Provenance

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