Skip to main content

mjooln

Environmentally Friendly File Handling

PyPI Python versions License: Apache 2.0 pipeline status

mjooln is a small, dependency-free Python toolbox for file and folder handling. Two ideas make it more than a pathlib wrapper:

  • Atom — a identifier that is unique, sortable, human-readable, and can be found inside arbitrary text just by scanning for its shape.
  • AtomFolder — a folder with a persistent identity, so you can find it by name from anywhere on disk without remembering its path.

Install

pip install mjooln

Optional extras:

pip install mjooln[encryption]  # AES file encryption
pip install mjooln[yaml]        # YAML read/write for File

Quickstart

Atom: identifiers that sort, search, and read like sentences

from mjooln import Atom

a = Atom("sensor")
str(a)
# '20260722T191721u217069Z___sensor___39A238F6_83FE_40DB_BDA5_FABDE915016A'

a.way    # 'sensor'
a.time   # datetime(2026, 7, 22, 19, 17, 21, ..., tzinfo=timezone.utc)

Atoms sort chronologically as plain strings, and can be found inside arbitrary text -- handy for scanning file names:

Atom.find_one(f"my_file_{a}.json.gz")  # == a

AtomFolder: a folder you can find by name, from anywhere

from mjooln import AtomFolder

af = AtomFolder.make("~/projects/my_data")
af.file("readme.txt").write("hello")

# ... later, from anywhere, without knowing the path:
same_af = AtomFolder.get("my_data")
[f.name for f in same_af.list()]
# ['readme.txt']

AtomFolder is a subclass of Folder, so it behaves like one -- list(), file(), walk(), etc. all work directly on it.

Folder and File: everyday file handling

from mjooln import Folder

fo = Folder("~/projects/my_data")
fi = fo.file("data.json")
fi.write_json({"hello": "world"})
fi.read_json()
# {'hello': 'world'}

fi = fi.compress()  # data.json.gz
fi.checksum()        # sha256 hex digest

AtomFile: files structurally named after an Atom

from mjooln import AtomFile, Atom

fi = AtomFile.build(fo, Atom("sensor"), data_extension="json")
fi.write_json({"hello": "world"})

fi.atom          # the Atom this file's name is built from
fi.extension     # 'json' -- the data extension, never gz/mjc

list(fo.atom_files())  # -> [AtomFile(...)]

Modules

  • core — Atom, Toml, settings, exceptions
  • filesystem — Path, Folder, File, AtomFile, AtomFolder, Serializer, Compressor
  • encryption — Cipher, MasterKey, KeyFile (optional, pip install mjooln[encryption])

See docs/PRINCIPLES.md for the design rationale behind the project.

License

Apache-2.0. See LICENSE.

Release files for mjooln 0.14.0

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

Source distribution (sdist)

Source distribution for mjooln 0.14.0
File Size Uploaded
mjooln-0.14.0.tar.gz 43.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mjooln 0.14.0
File Interpreter ABI Platform
mjooln-0.14.0-py3-none-any.whl Python 3 none any Details

Total release size: 99.0 kB

Release files / mjooln-0.14.0.tar.gz

Download URL mjooln-0.14.0.tar.gz
Size 43.6 kB
Tags Source
SHA-256 checksum
How to use checksums
59ecbe5d96f7c3803b181c093431f4a1f93de27eac9328e6ed7dc8320b80ba13
BLAKE2b-256 checksum
How to use checksums
14f662d3056dac17f1a1cfd59ec6c44425063c44017b03eeb4be5a11d094c8d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mjooln-0.14.0-py3-none-any.whl

Download URL mjooln-0.14.0-py3-none-any.whl
Size 55.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4daeba3052d335a8c2e4b9a9ede1f1fe5e3461b41efe4e8aae164dd8b8e32e57
BLAKE2b-256 checksum
How to use checksums
501646edaf1b478711b5dabaae00b2a8dc13fdeb4e5bec84b3d25c2632630860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.16.1

2 release files

0.16.0

2 release files

This release

0.14.0 This release

2 release files

0.12.0

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.2

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.18

2 release files

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0.5

1 release file

0.6.0.4

1 release file

0.6.0.3

1 release file

0.6.0.2

1 release file

0.5.0.9

1 release file

0.5.0.8

1 release file

0.5.0.7

1 release file

0.5.0.6

1 release file

0.5.0.3

1 release file

0.5.0.2

1 release file

0.5.0.1

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3

1 release file

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