Add Python 3.13 support with uuid7 backport compatibility

- Create uuid_compat.py module that provides uuid7 for Python <3.14
  using uuid_extensions package, and native uuid.uuid7 for Python 3.14+
- Update all model files and migrations to use archivebox.uuid_compat
- Add uuid7 conditional dependency in pyproject.toml for Python <3.14
- Update requires-python to >=3.13 (from >=3.14)
- Update GitHub workflows, lock_pkgs.sh to use Python 3.13
- Update tool configs (ruff, pyright, uv) for Python 3.13

This enables running ArchiveBox on Python 3.13 while maintaining
forward compatibility with Python 3.14's native uuid7 support.
This commit is contained in:
Claude
2025-12-27 01:07:30 +00:00
parent cff4077c23
commit ae2ab5b273
15 changed files with 51 additions and 27 deletions

View File

@@ -3,7 +3,7 @@
import django.utils.timezone
import signal_webhooks.fields
import signal_webhooks.utils
import uuid
from archivebox import uuid_compat
from django.conf import settings
from django.db import migrations, models
@@ -39,7 +39,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='apitoken',
name='id',
field=models.UUIDField(default=uuid.uuid7, editable=False, primary_key=True, serialize=False, unique=True),
field=models.UUIDField(default=uuid_compat.uuid7, editable=False, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='outboundwebhook',
@@ -69,7 +69,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='outboundwebhook',
name='id',
field=models.UUIDField(default=uuid.uuid7, editable=False, primary_key=True, serialize=False, unique=True),
field=models.UUIDField(default=uuid_compat.uuid7, editable=False, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='outboundwebhook',

2
archivebox/api/models.py Normal file → Executable file
View File

@@ -1,7 +1,7 @@
__package__ = 'archivebox.api'
import secrets
from uuid import uuid7
from archivebox.uuid_compat import uuid7
from datetime import timedelta
from django.conf import settings