Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

🚀 Atomik

Atomik provides you a python-friendly way to manage writing new file and folders in an atomic way. The main way to use the library is with to use the file and folder context manager. They will provide an easy interface to make sure the destination file/folder remain consistent.

This means you can be sure that you will not leave a file half written or a folder with half the files you wanted to write into in case of failure. When overwriting you can be sure that the data will be either the previous or the next version.

📚 Example

File

This will ensure either all the data is correctly written to file or none of it

with atomik.file("./result.json") as f:
    print(stream, file=f)

Folder

with atomik.folder("./result_folder") as dir:
    with open(Path(dir, "result_1.json") as f:
        print(result_1, file=f)
    with open(Path(dir, "result_2.json") as f:
        print(result_2, file=f)

🔐 Safe default

By default, atomik will not overwrite files/folders (but it's configurable)

🤓 How ?

Atomik uses the new renameat2 syscall to allow to rename file in an atomic way. The syscall doesn't allow to overwrite a non-empty folder when renaming. This is achieved using the exchange flag to swap the two folder and then the source folder is cleaned. This may leave the src folder in case of interruption/issue when deleting but the destination folder will still be written in an atomic way.

Limitations

The rename syscall only work if the source and destination are on the same filesystem

Acknowledgement

This library's main goal is to provide a simple interface to rename file in a safe and simple way, without having to dive deep into OS specific documentation and limitations behind it. If you want to use the syscall directly I recommend these two libraries which helped the development of Atomik a lot:

Metadata

Release files for atomik 0.0.3rc1

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

Source distribution (sdist)

Source distribution for atomik 0.0.3rc1
File Size Uploaded
atomik-0.0.3rc1.tar.gz 8.0 kB Details

Built distribution (wheel)

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

Total release size: 14.4 kB

Release files / atomik-0.0.3rc1.tar.gz

Download URL atomik-0.0.3rc1.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
53dad91ecb8d0fcb22512a7134ef70c5993663a986eb6349496df188a336a112
BLAKE2b-256 checksum
How to use checksums
7ca5978ad38755fc762e8cb3704def88a5855dea6e93206cfbfa143c196c777c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / atomik-0.0.3rc1-py3-none-any.whl

Download URL atomik-0.0.3rc1-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
abee8b36bc9331bb4d903389fca620617f3eb94878fd832433871b9ebcba3e45
BLAKE2b-256 checksum
How to use checksums
f2e98f3239d10467febfa520ed6dab860112681a02b2bde79895c52d2c80e4f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.0.3rc1 This release

2 release files

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