Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ddeutil-io

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ddeutil-io

Input/Output transport utility objects

  • 0.2.3
  • PyPI
  • Socket score

Maintainers
1

Input/Output Data Transport

test codecov pypi version python support version size code style: black type check: mypy pre-commit

The Input/Output Data Transport utility objects was created for full managed engine of configuration file that include load from any config file format types like .yaml, .json, or .toml, and manage retention and version of config files lifecycle.

This package has 3 parts of core module; Register, Stores, and Files. The base module is the file module that is open file objects with specific format that want to open include open directory objects (I think the open dir object do not should to use now because I do not do with its code.)

:round_pushpin: Installation

pip install -U ddeutil-io

Python version supported:

Python VersionInstallationSupport Fixed Bug
>=3.9,<3.14pip install -U ddeutil-io:heavy_check_mark:

[!NOTE] This package need to install ddeutil first to be core package namespace. You do not need to pip it because I include this package to the required list.

For optional dependencies that should to additional installation;

ModuleInstallationAdditional dependencies
YamlFlddeutil-io[yaml]pip install PyYaml
TomlFlddeutil-io[toml]pip install toml
MsgpackFlddeutil-io[msgpack]pip install msgpack

:dart: Features

The features of this package is Input/Output data transport utility objects.

ModuleNameDescriptionRemark
filesPathSearchPath Search object that use to search path tree from an input root path.
rmRemove a file or dir from an input path.
touchCreate an empty file with specific name and modified time of path it an input times was set.
files.fileFlOpen File object that use to open any normal or compression file from current local file system
EnvFlMixinEnvironment Mapping to read method of open file object mixin.
EnvFlDot env open file object which mapping search engine to data context that reading from dot env file format (.env).
YamlEnvFlYaml open file object which mapping search environment variable.
YamlFlYaml open file object that read data context from Yaml file format (.yml, or .yaml).
YamlFlResolveYaml open file object with resolve boolean convert value problem such as convert 'on' value to true instead a string of 'on' value.
JsonEnvFlJson open file object which mapping search environment variable before parsing with json package.
JsonLineFlJson open file object that read data context from Json file format (.json) with a newline seperator.
JsonFlJson open file object that read data context from Json file format (.json).
CsvFlCSV open file object with comma (,) seperator charactor.
CsvPipeFlCSV open file object with pipe (|) seperator charactor.
TomlEnvFlTOML open file object which mapping search environment variable before parsing with toml package from TOML file format (.toml).
TomlFlTOML open file object that read data context from TOML file format (.toml).
PickleFlPickle open file object that read data context from Pickle file format (.pickle).no cover
MarshalFlMarshal open file object that read data context from Marshal file format.no cover
MsgpackFlMsgpack open file object that read data context from Msgpack file format.no cover
storesStoreStore File Loading Object for get data from configuration and stage.
StoreJsonToCsvStore object that getting the Json context data and save it to stage with CSV file format.
StoreToJsonLineStore object that getting the YAML context data and save it to stage with Json line file format.
registerRegisterRegister Object that contain configuration loading methods and metadata management.
ArchiveRegisterArchiving Register object that implement archiving management on the Register object such as self.purge, and self.remove methods.

:beers: Usages

I will show some usage example of function in this package. If you want to use complex or adjust some parameter, please see doc-string or real source code (I think it does not complex, and you can see how that function work).

Files

For example, I will represent YamlEnvFl object that passing environment variable to reading content before passing to the Yaml loader.

data:
  get: HELLO ${HELLO}
import os
from ddeutil.io import YamlEnvFl

os.environ["HELLO"] = "WORLD"
content = YamlEnvFl('./source.yaml').read(safe=True)
assert content['data']['get'] == "HELLO WORLD"

[!NOTE] This module do not implement special function on IO like the build-in open function. It also makes standard read and write file objects.

Store

Store object is the storing dir system handler object that manage any files in that dir path with get, move, load, save, or ls operations.

from ddeutil.io.stores import Store

store: Store = Store(path='./conf', compress="gzip")

data = store.get(name='config_file.yaml')
store.save('./stage/file.json', data)
conf/
 ├─ examples/
 │   ╰─ config_file.yaml
 ╰─ stage/
     ╰─ file.json

Register

The Register Object is the metadata generator object for the config data. If you passing name and configs to this object, it will find the config name in any stage storage and generate its metadata to you.

from ddeutil.io.register import Register
from ddeutil.io.config import Params

registry: Register = Register(
    name='examples:conn_data_local_file',
    params=Params(**{
        "stages": {
            "raw": {"format": "{naming:%s}.{timestamp:%Y%m%d_%H%M%S}"},
        },
    }),
)
registry.move(stage="raw")

The raw data of this config was written in conn_file.yaml file.

conf/
 ╰─ examples/
     ╰─ conn_file.yaml

When call move method, it will transfer data from .yaml file to json file with the data hashing algorithm.

data/
 ├─ __METADATA/
 │   ├─ exampleconn_data_local_file.base.json
 │   ╰─ exampleconn_data_local_file.raw.json
 ╰─ raw/
     ╰─ conn_file_20240101_000000.json

:speech_balloon: Contribute

I do not think this project will go around the world because it has specific propose, and you can create by your coding without this project dependency for long term solution. So, on this time, you can open the GitHub issue on this project :raised_hands: for fix bug or request new feature if you want it.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc