Skip to main content

cool plaintext archiver

Project description

This module is an implementation of archiver for a7d8473 archive format. It can archive directories, files, soft links, has shell interface.

What is a7d8473?

A7d8473 or simply a7d is a simple archive format, that has some nice features:

  • If source directory has only text files, then archive will also be text file.
  • Changing one line in the source file results in changing only one line in the archive.
  • If all source files have line lenght limit, then archive will also have line lenght limit.
  • Archived files are stored in compressor-friendly way: all the contents of the source file are usually included in the final archive file unchanged.
  • Metadata is saved in git-like manner. Thus only this metadata is saved:
    • Executable flag.
    • Link flag.
  • There is a bijection between the set of archive files and the set of directory structures.

Hello world

This is "Hello, world!" file pushed into a7d8473 archive.

a7d8473
:hello.txt/
Hello, world!
~ ~ ~

Here is a little more complex archive:

a7d8473
/name_of_directory/
:name_of_file.txt/
-> here is the content of file <-
~ ~ ~
!name_of_another_file_that_is_executable.py/
print('Hi')
~ ~ ~
@name_of_soft_link/
target_of_this_soft_link
~ ~ ~
@link_to_Hi.py/
./name_of_another_file_that_is_executable.py
~ ~ ~
/empty_directory/
\
\

The first line of archive file is always "a7d8473". Other lines describe archived files and directories. : before hello.txt means, that file hello.txt is neither executable nor soft link. There are other prefixes of file names:

  • @ denotes soft links.
  • ! denotes executable files.
  • / denotes directories.
  • : denotes simple files, which are neither executable nor soft links.

/ is also used as the end of the name because it is not a valid character in file names. \ means end of directory, while ~ ~ ~ denotes end of file content. Only printable ASCII characters are used outside of file contents. Thus, archive files are text files as long as source files are text files.

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

a7d-0.0.5.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

a7d-0.0.5-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file a7d-0.0.5.tar.gz.

File metadata

  • Download URL: a7d-0.0.5.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2

File hashes

Hashes for a7d-0.0.5.tar.gz
Algorithm Hash digest
SHA256 5a7b6ca48dbc1d8f88c450e0caf67f655df106504d45edf03f481bdbee60ac00
MD5 254df4033ea9cbd550d6dbee00d2c021
BLAKE2b-256 b2caf641e9feb02106f7df45a6502d7947c42573368f3ca4ba82e327e943d666

See more details on using hashes here.

File details

Details for the file a7d-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: a7d-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2

File hashes

Hashes for a7d-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 46421ed28d419aa4bf102af1a6580fa400ead6f90c46fcfb97f650095c243335
MD5 4d01acf7b207a7038071b8fa20bdbcb0
BLAKE2b-256 da7abb5672a2258d4383598f72d78c2b46b52da38a1f32e8655e1103c1e3f863

See more details on using hashes here.

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