Skip to main content

chives

chives is a collection of personal helper utilities for managing, validating, and maintaining local media archives.

I store my local media archives as static websites and use Python scripts to keep everything running smoothly. This package bundles the common, reusable code I share across multiple archives and sites.

Features

Here's what chives includes:

  • Media inspection and processing: get information like image dimensions and video duration, and convert subtitle files.
  • Metadata validation: ensure high-quality metadata by verifying that files in metadata actually exist on disk, and enforcing consistent timestamp formats.
  • Static site testing: pytest fixtures to check that static sites can be loaded without console or network errors.
  • HTTP and date utilities: standardised helpers for downloading web pages (for bookmarking/archiving) and handling common date patterns.

Design goals

My media archives are saved on my personal computer and I want them to last for years (ideally decades), which influences the design of this library:

  1. Human comprehensibility: I want to understand every line of code, so everything is written by hand. I understood it once, which gives me a decent chance of understanding it later.

  2. Minimal dependencies: I keep third-party dependencies to a minimum. This is to reduce my exposure to supply-chain attacks and reduce the risk of dependency rot.

  3. Rock-solid reliable: Everything is fully type-checked and throughly tested. I want this to be a reliable foundation for my media archive.

Versioning and stability

This library is monotonically versioned (releases simply go up sequentially).

I make breaking changes regularly, and I make no promise of compatibility between versions. When I make a breaking change, I update all my local media archives to the latest version immediately and fix the breakage at the same time.

I've made this repository public because it's convenient for my deployment and to contribute to the public corpus of open-source code for everybody to learn from, but expect things to shift around without warning.

Installation and usage

Because this is a personal utility library, I recommend you copy the code: duplicate the relevant functions and tests into your codebase (with a link back to this repo for attribution!). Having your own copy will protect you from disruption caused by my breaking changes.

If you really want the full package, you can install it from PyPI (but pin the version):

$ pip install alexwlchan-chives==42

For detailed usage instructions, check the docstrings inside the individual functions.

Development and feedback

Want to contribute or tweak something? Check out CONTRIBUTING.md for local setup instructions.

License

This project is shared under the MIT license.

Metadata

Release files for alexwlchan-chives 47

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

Source distribution (sdist)

Source distribution for alexwlchan-chives 47
File Size Uploaded
alexwlchan_chives-47.tar.gz 30.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for alexwlchan-chives 47
File Interpreter ABI Platform
alexwlchan_chives-47-py3-none-any.whl Python 3 none any Details

Total release size: 51.7 kB

Release files / alexwlchan_chives-47.tar.gz

Download URL alexwlchan_chives-47.tar.gz
Size 30.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6e2362951a1a165e6b71a1ca3fae726d5a8ce93c4e616d49ef56199cb5be17c2
BLAKE2b-256 checksum
How to use checksums
f86513b18036388b4fcaf2b6494abffeb51fddbd3676fbaec57af688f4425c1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / alexwlchan_chives-47-py3-none-any.whl

Download URL alexwlchan_chives-47-py3-none-any.whl
Size 21.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51c6e5638474ac6782207787f5c38e6cc0e7e6879f829eb623d29069ae47e812
BLAKE2b-256 checksum
How to use checksums
eb2affba9f5d118c62d68383b49635885df3b88a4216ff61b446826973f205ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

53

2 release files

52

2 release files

51

2 release files

50

2 release files

49

2 release files

48

2 release files

This release

47 This release

2 release files

46

2 release files

45

2 release files

44

2 release files

43

2 release files

42

2 release files

41

2 release files

40

2 release files

39

2 release files

38

2 release files

37

2 release files

36

2 release files

35

2 release files

34

2 release files

33

2 release files

32

2 release files

31

2 release files

30

2 release files

29

2 release files

28

2 release files

27

2 release files

26

2 release files

25

2 release files

24

2 release files

23

2 release files

22

2 release files

21

2 release files

20

2 release files

19

2 release files

18

2 release files

17

2 release files

16

2 release files

15

2 release files

14

2 release files

13

2 release files

12

2 release files

11

2 release files

10

2 release files

9

2 release files

8

2 release files

7

2 release files

6

2 release files

5

2 release files

4

2 release files

3

2 release files

2

2 release files

1

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