Install & Compatibility
Where this runs
tested against v1.16 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.910 runs
installs and imports cleanly · install 0.0s · import 0.000s · 19.7MB
glibcpy 3.10–3.910 runs
installs and imports cleanly · install 1.8s · import 0.000s · 20MB
18MB installed
● package 18MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
AffirmationError
✓ from aeidon import AffirmationError
✗ from aeidon.files import File
Calculator
✓ from aeidon import Calculator
Markup
✓ from aeidon import Markup
This quickstart demonstrates how to load SRT subtitle content from a string, manipulate cues (add, shift times), and then save the modified content back to a string using Aeidon's `File` and `SrtFormat` classes.
import io
from aeidon.files import File
from aeidon.formats import SrtFormat
from aeidon.cues import Cue, Time, Line
# Simulate an existing SRT file content
srt_content = """
1
00:00:01,000 --> 00:00:03,000
Hello World!
2
00:00:04,500 --> 00:00:06,500
This is a test.
"""
# Create an Aeidon File object
subtitle_file = File()
# Load subtitle content from a string (can be a file path too)
sio_input = io.StringIO(srt_content)
SrtFormat.read(sio_input, subtitle_file)
print("--- Original Cues ---")
for cue in subtitle_file.cues:
print(f" {cue.start_time} --> {cue.end_time}: {[line.text for line in cue.lines]}")
# Add a new cue
new_cue = Cue()
new_cue.start_time = Time(milliseconds=8000)
new_cue.end_time = Time(milliseconds=10000)
new_cue.lines.append(Line("A new cue added by Aeidon!"))
subtitle_file.cues.append(new_cue)
# Shift all cues by 2 seconds forward
for cue in subtitle_file.cues:
cue.start_time = cue.start_time.shift_milliseconds(2000)
cue.end_time = cue.end_time.shift_milliseconds(2000)
print("\n--- Modified Cues (shifted and new cue) ---")
for cue in subtitle_file.cues:
print(f" {cue.start_time} --> {cue.end_time}: {[line.text for line in cue.lines]}")
# Save the modified subtitle content to a string
sio_output = io.StringIO()
SrtFormat.write(sio_output, subtitle_file)
print("\n--- Saved SRT Content ---")
print(sio_output.getvalue())
sio_input.close()
sio_output.close()
Debug
Known issues
breakingAeidon dropped support for Python versions older than 3.5 starting with version 1.15. Attempting to install or run Aeidon 1.15+ on Python < 3.5 will result in installation errors or runtime `SyntaxError`.fixUpgrade your Python environment to 3.5 or newer. The latest stable Python is recommended for best compatibility.
affects: >=1.15
gotchaOn Python 3.12 and newer, `distutils` was removed from the standard library. Aeidon (versions < 1.14) may fail to install or run due to missing `distutils` modules. Version 1.14 fixed this by leveraging `setuptools` to provide `distutils` compatibility.fixUpgrade Aeidon to version 1.14 or newer (`pip install --upgrade aeidon`). Ensure `setuptools` is installed and up-to-date (`pip install --upgrade setuptools`).
affects: <1.14 on Python >=3.12
deprecatedAeidon versions older than 1.16 may encounter deprecation warnings or runtime issues on future Python versions (e.g., Python 3.15+) due to its use of `locale.getdefaultlocale` and `importlib.load_module`, which are being removed. While Aeidon 1.16 addresses these, using older versions with cutting-edge Python may lead to errors.fixUpgrade Aeidon to version 1.16 or newer (`pip install --upgrade aeidon`) to ensure forward compatibility with upcoming Python releases.
affects: <1.16 with Python >=3.15
gotchaVersion 1.15 removed the dependency on `chardet` and introduced `charset-normalizer`. While this is an internal change, if you had custom environments relying on `chardet` for some reason (e.g., indirect dependency resolution), this change might affect your setup or cause `ModuleNotFoundError` if `charset-normalizer` is not installed.fixEnsure `charset-normalizer` is installed in your environment. It should be automatically installed by `pip` when installing Aeidon 1.15+.
affects: >=1.15
Upgrade
Version history
1.16latest on PyPI · released Apr 13, 2026
Audit
Dependencies
charset-normalizerrequiredUsed for robust character encoding detection when reading subtitle files. Required since version 1.15.
setuptoolsrequiredRequired on Python 3.12+ for `distutils` compatibility, which Aeidon uses internally. Included as an indirect dependency.