mirror of
https://github.com/ArchiveBox/ArchiveBox
synced 2024-11-22 04:03:06 +00:00
merge dev
This commit is contained in:
commit
9b24fe7390
19 changed files with 632 additions and 275 deletions
198
.github/ISSUE_TEMPLATE/1-bug_report.yml
vendored
Normal file
198
.github/ISSUE_TEMPLATE/1-bug_report.yml
vendored
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
name: 🐞 Bug report
|
||||||
|
description: Report a bug or error you encountered in ArchiveBox
|
||||||
|
title: "Bug: ..."
|
||||||
|
assignees:
|
||||||
|
- pirate
|
||||||
|
type: 'Bug'
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
*Please note:* it is normal to see errors occasionally for some extractors on some URLs (not every extractor will work on every type of page).
|
||||||
|
Please report archiving errors if you are seeing them *consistently across many URLs* or if they are *preventing you from using ArchiveBox*.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Provide a screenshot and describe the bug
|
||||||
|
description: |
|
||||||
|
Attach a screenshot and describe what the issue is, what you expected to happen, and if relevant, the *URLs you were trying to archive*.
|
||||||
|
placeholder: |
|
||||||
|
Got a bunch of 'singlefile was unable to archive this page' errors when trying to archive URLs from this site: https://example.com/xyz ...
|
||||||
|
I also tried to archive the same URLs using `singlefile` directly and some of them worked but not all of them. etc. ...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: steps_to_reproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: Please include the exact steps you took to trigger the issue.
|
||||||
|
render: markdown
|
||||||
|
placeholder: |
|
||||||
|
1. Started ArchiveBox by running: `docker run -v $PWD:/data -p 8000:8000 archivebox/archivebox:latest`
|
||||||
|
2. Went to the https://127.0.0.1:8000/add/ page in Google Chrome
|
||||||
|
3. Typed 'https://example.com/xyz' into the 'Add URL' input field
|
||||||
|
4. Clicked the 'Add+' button
|
||||||
|
5. Got a 500 error and saw the errors below in terminal
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Logs or errors
|
||||||
|
description: "Paste any terminal output, logs, or errors (check `data/logs/errors.log` as well)."
|
||||||
|
placeholder: |
|
||||||
|
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||||
|
│ [2024-11-02 19:54:28] ArchiveBox v0.8.6rc0: archivebox add https://example.com#1234567 │
|
||||||
|
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
[+] [2024-11-02 19:54:29] Adding 1 links to index (crawl depth=0)...
|
||||||
|
> Saved verbatim input to sources/1730577269-import.txt
|
||||||
|
> Parsed 1 URLs from input (Generic TXT)
|
||||||
|
...
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: ArchiveBox Version
|
||||||
|
description: |
|
||||||
|
**REQUIRED:** Run the `archivebox version` command inside your collection dir and paste the *full output* here (*not just the version number*).
|
||||||
|
For Docker Compose run: `docker compose run archivebox version`
|
||||||
|
For plain Docker run: `docker run -v $PWD:/data archivebox/archivebox version`
|
||||||
|
render: shell
|
||||||
|
placeholder: |
|
||||||
|
0.8.6
|
||||||
|
ArchiveBox v0.8.6rc0 COMMIT_HASH=721427a BUILD_TIME=2024-10-21 12:57:02 1729515422
|
||||||
|
IN_DOCKER=False IN_QEMU=False ARCH=arm64 OS=Darwin PLATFORM=macOS-15.1-arm64-arm-64bit PYTHON=Cpython (venv)
|
||||||
|
EUID=502:20 UID=502:20 PUID=502:20 FS_UID=502:20 FS_PERMS=644 FS_ATOMIC=True FS_REMOTE=False
|
||||||
|
DEBUG=False IS_TTY=True SUDO=False ID=dfa11485:aa78ad45 SEARCH_BACKEND=ripgrep LDAP=False
|
||||||
|
|
||||||
|
Binary Dependencies:
|
||||||
|
√ python 3.11.9 venv_pip ~/.venv/bin/python
|
||||||
|
√ django 5.1.2 venv_pip ~/.venv/lib/python3.11/site-packages/django/__init__.py
|
||||||
|
√ sqlite 2.6.0 venv_pip ~/.venv/lib/python3.11/site-packages/django/db/backends/sqlite3/base.py
|
||||||
|
√ pip 24.3.1 venv_pip ~/.venv/bin/pip
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: install_method
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: How did you install the version of ArchiveBox you are using?
|
||||||
|
multiple: false
|
||||||
|
options:
|
||||||
|
- pip
|
||||||
|
- apt
|
||||||
|
- brew
|
||||||
|
- nix
|
||||||
|
- Docker (or other container system like podman/LXC/Kubernetes or TrueNAS/Cloudron/YunoHost/etc.)
|
||||||
|
- Other
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: operating_system
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: What operating system are you running on?
|
||||||
|
description: |
|
||||||
|
Please note we are *unable to provide support for Windows users* unless you are using [Docker on Windows](https://github.com/ArchiveBox/archivebox#:~:text=windows%20without%20docker).
|
||||||
|
multiple: false
|
||||||
|
options:
|
||||||
|
- Linux (Ubuntu/Debian/Arch/Alpine/etc.)
|
||||||
|
- macOS (including Docker on macOS)
|
||||||
|
- BSD (FreeBSD/OpenBSD/NetBSD/etc.)
|
||||||
|
- Windows (including WSL, WSL2, Docker Desktop on Windows)
|
||||||
|
- Other
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: filesystem
|
||||||
|
attributes:
|
||||||
|
label: What type of drive are you using to store your ArchiveBox data?
|
||||||
|
description: Are you using a [remote filesystem](https://github.com/ArchiveBox/ArchiveBox/wiki/Setting-Up-Storage#supported-remote-filesystems) or FUSE mount for `data/` or `data/archive` (e.g. NFS/SMB/CIFS/etc. or FUSE/RClone/S3/B2/OneDrive/etc.)?
|
||||||
|
options:
|
||||||
|
- label: "`data/` is on a local SSD or NVMe drive"
|
||||||
|
required: false
|
||||||
|
- label: "`data/` is on a spinning hard drive or external USB drive"
|
||||||
|
required: false
|
||||||
|
- label: "`data/` is on a network mount (e.g. NFS/SMB/CIFS/etc.)"
|
||||||
|
required: false
|
||||||
|
- label: "`data/` is on a FUSE mount (e.g. SSHFS/RClone/S3/B2/OneDrive, etc.)"
|
||||||
|
required: false
|
||||||
|
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: docker_compose_yml
|
||||||
|
attributes:
|
||||||
|
label: Docker Compose Configuration
|
||||||
|
description: "If using Docker Compose, please share your full `docker-compose.yml` file. If using plain Docker, paste the `docker run ...` command you use."
|
||||||
|
placeholder: |
|
||||||
|
services:
|
||||||
|
archivebox:
|
||||||
|
image: archivebox/archivebox:latest
|
||||||
|
ports:
|
||||||
|
- 8000:8000
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
environment:
|
||||||
|
- ADMIN_USERNAME=admin
|
||||||
|
- ADMIN_PASSWORD=****<redact any passwords>****
|
||||||
|
- ALLOWED_HOSTS=*
|
||||||
|
- CSRF_TRUSTED_ORIGINS=https://archivebox.example.com
|
||||||
|
- PUBLIC_INDEX=True
|
||||||
|
- PUBLIC_SNAPSHOTS=True
|
||||||
|
- PUBLIC_ADD_VIEW=False
|
||||||
|
...
|
||||||
|
|
||||||
|
archivebox_scheduler:
|
||||||
|
image: archivebox/archivebox:latest
|
||||||
|
command: schedule --foreground --update --every=day
|
||||||
|
environment:
|
||||||
|
...
|
||||||
|
|
||||||
|
...
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: configuration
|
||||||
|
attributes:
|
||||||
|
label: ArchiveBox Configuration
|
||||||
|
description: "Please share your full `data/ArchiveBox.conf` file here."
|
||||||
|
render: shell
|
||||||
|
placeholder: |
|
||||||
|
[SERVER_CONFIG]
|
||||||
|
SECRET_KEY = "*********<redact any secrets/passwords>************"
|
||||||
|
|
||||||
|
WGET_RESTRICT_FILE_NAMES=windows
|
||||||
|
USE_SYSTEM_WGET=true
|
||||||
|
CHECK_SSL_VALIDITY=false
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
---
|
||||||
|
|
||||||
|
We strive to answer issues as quickly as possible, it usually takes us *about a ~week* to respond.
|
||||||
|
Make sure your `data/` is [**fully backed up**](https://github.com/ArchiveBox/ArchiveBox/wiki/Usage#disk-layout) before trying anything suggested here, **we are not responsible for data loss**.
|
||||||
|
|
||||||
|
In the meantime please consider:
|
||||||
|
|
||||||
|
- 💰 [Donating to support ArchiveBox open-source](https://github.com/ArchiveBox/ArchiveBox/wiki/Donations)
|
||||||
|
- 👨✈️ [Hiring us for corporate deployments](https://docs.monadical.com/s/archivebox-consulting-services) with professional support, custom feature development, and help with CAPTCHAs/rate-limits
|
||||||
|
- 🔍 [Searching the Documentation](https://docs.archivebox.io/) for answers to common questions
|
||||||
|
- 📚 Reading the [Troubleshooting Guide](https://github.com/ArchiveBox/ArchiveBox/wiki)
|
||||||
|
- ✨ Testing out a newer [`BETA` release](https://github.com/ArchiveBox/ArchiveBox/releases) (issues are often already fixed in our latest `BETA` releases)
|
||||||
|
|
127
.github/ISSUE_TEMPLATE/2-feature_request.yml
vendored
Normal file
127
.github/ISSUE_TEMPLATE/2-feature_request.yml
vendored
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
name: 💡 Feature or enhancement request
|
||||||
|
description: Suggest an idea or improvement for this project
|
||||||
|
title: "Feature Request: ..."
|
||||||
|
assignees:
|
||||||
|
- pirate
|
||||||
|
type: 'Enhancement'
|
||||||
|
labels: 'status: idea phase'
|
||||||
|
body:
|
||||||
|
- type: dropdown
|
||||||
|
id: suggestion_type
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: "What type of suggestion are you making?"
|
||||||
|
multiple: false
|
||||||
|
options:
|
||||||
|
- New extractor / type of content to save
|
||||||
|
- Proposing a new feature
|
||||||
|
- Modification of existing behavior
|
||||||
|
- Web UI or UX design improvement
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: current_problem
|
||||||
|
attributes:
|
||||||
|
label: "What is the problem that your feature request solves?"
|
||||||
|
description: |
|
||||||
|
Describe the problem that your feature request solves, feel free to include any screenshots or examples.
|
||||||
|
placeholder: |
|
||||||
|
e.g. I need to be able to archive spanish and french subtitle files from a particular movie site https://example.com/somevideos that's going down soon.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: proposed_solution
|
||||||
|
attributes:
|
||||||
|
label: "What is your proposed solution?"
|
||||||
|
description: |
|
||||||
|
Describe the ideal specific solution you'd want, and whether it fits into any broader scope of changes.
|
||||||
|
placeholder: |
|
||||||
|
e.g. I specifically need a new archive method to look for multilingual subtitle files related to pages.
|
||||||
|
The bigger picture solution is the ability for custom user scripts to be run in a puppeteer context during archiving.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: workarounds_tried
|
||||||
|
attributes:
|
||||||
|
label: "What hacks or alternative solutions have you tried to solve the problem?"
|
||||||
|
description: |
|
||||||
|
A clear and concise description of any alternative solutions, workarounds, or other software you've considered using to fix the problem.
|
||||||
|
placeholder: |
|
||||||
|
e.g. I wait for archivebox to finish archiving the page, then I manually run `yt-dlp --subs <URL>` inside
|
||||||
|
the `data/archive/<timestamp>/` directory to download the subtitle files and add them to the snapshot folder.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: What version of ArchiveBox are you currently using?
|
||||||
|
description: |
|
||||||
|
We need to know what version of ArchiveBox and what OS you're currently using in order to contextualize your feature request.
|
||||||
|
Sometimes we've already fixed the issues in newer BETA versions, sometimes features already exist but may not be available in specific environments/versions.
|
||||||
|
|
||||||
|
Run the `archivebox version` command inside your current collection dir and paste the *full output* here (*not just the version number*).
|
||||||
|
For Docker Compose run: `docker compose run archivebox version`
|
||||||
|
For plain Docker run: `docker run -v $PWD:/data archivebox/archivebox version`
|
||||||
|
render: shell
|
||||||
|
placeholder: |
|
||||||
|
0.8.6
|
||||||
|
ArchiveBox v0.8.6rc0 COMMIT_HASH=721427a BUILD_TIME=2024-10-21 12:57:02 1729515422
|
||||||
|
IN_DOCKER=False IN_QEMU=False ARCH=arm64 OS=Darwin PLATFORM=macOS-15.1-arm64-arm-64bit PYTHON=Cpython (venv)
|
||||||
|
EUID=502:20 UID=502:20 PUID=502:20 FS_UID=502:20 FS_PERMS=644 FS_ATOMIC=True FS_REMOTE=False
|
||||||
|
DEBUG=False IS_TTY=True SUDO=False ID=dfa11485:aa78ad45 SEARCH_BACKEND=ripgrep LDAP=False
|
||||||
|
|
||||||
|
Binary Dependencies:
|
||||||
|
√ python 3.11.9 venv_pip ~/.venv/bin/python
|
||||||
|
√ django 5.1.2 venv_pip ~/.venv/lib/python3.11/site-packages/django/__init__.py
|
||||||
|
√ sqlite 2.6.0 venv_pip ~/.venv/lib/python3.11/site-packages/django/db/backends/sqlite3/base.py
|
||||||
|
√ pip 24.3.1 venv_pip ~/.venv/bin/pip
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: priority
|
||||||
|
attributes:
|
||||||
|
label: "How badly do you want this new feature?"
|
||||||
|
options:
|
||||||
|
- label: "It's an urgent deal-breaker, I can't live without it"
|
||||||
|
required: false
|
||||||
|
- label: "It's important to add it in the near-mid term future"
|
||||||
|
required: false
|
||||||
|
- label: "It would be nice to have eventually"
|
||||||
|
required: false
|
||||||
|
- label: "I'm willing to [work on a PR](https://github.com/ArchiveBox/ArchiveBox#archivebox-development) to develop this myself"
|
||||||
|
required: false
|
||||||
|
- label: "I have [donated money](https://github.com/ArchiveBox/ArchiveBox/wiki/Donations) to go towards fixing this issue"
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: satisfaction_survey
|
||||||
|
attributes:
|
||||||
|
label: Mini Survey
|
||||||
|
description: How do you like ArchiveBox so far?
|
||||||
|
options:
|
||||||
|
- label: "I like ArchiveBox so far / would recommend it to a friend"
|
||||||
|
required: false
|
||||||
|
- label: "I've had a lot of difficulty getting ArchiveBox set up"
|
||||||
|
required: false
|
||||||
|
- label: "I would pay $10/mo for a hosted version of ArchiveBox if it had this feature"
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
---
|
||||||
|
|
||||||
|
We strive to answer issues as quickly as possible, it usually takes us *about a ~week* to respond.
|
||||||
|
Make sure your `data/` is [**fully backed up**](https://github.com/ArchiveBox/ArchiveBox/wiki/Usage#disk-layout) before trying any workarounds or BETAs suggested here, **we are not responsible for data loss**.
|
||||||
|
|
||||||
|
In the meantime please consider:
|
||||||
|
|
||||||
|
- 💰 [Donating to support ArchiveBox open-source](https://github.com/ArchiveBox/ArchiveBox/wiki/Donations)
|
||||||
|
- 📊 [Hiring us for corporate deployments](https://docs.monadical.com/s/archivebox-consulting-services) with professional support, custom feature development, and help with CAPTCHAs/rate-limits
|
||||||
|
- 🔍 [Searching the Documentation](https://docs.archivebox.io/) for answers to common questions
|
||||||
|
- ✨ Testing out a newer [`BETA` release](https://github.com/ArchiveBox/ArchiveBox/releases) (issues are often already fixed in our latest `BETA` releases)
|
52
.github/ISSUE_TEMPLATE/3-documentation_change.yml
vendored
Normal file
52
.github/ISSUE_TEMPLATE/3-documentation_change.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: 📑 Documentation improvement
|
||||||
|
description: Submit an idea or correction for the Wiki documentation
|
||||||
|
title: "Documentation: ..."
|
||||||
|
labels: 'touches: docs'
|
||||||
|
type: 'Enhancement'
|
||||||
|
assignees:
|
||||||
|
- pirate
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
If you prefer, you can submit a [Pull Request](https://github.com/ArchiveBox/docs) on https://github.com/ArchiveBox/docs to edit the docs directly instead.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: page_url
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: "What is the URL of the page you'd like to see improved?"
|
||||||
|
placeholder: e.g. https://github.com/ArchiveBox/docs/wiki/Install
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: section_title
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: "What is the title of the relevant section?"
|
||||||
|
placeholder: e.g. Option B. Automatic Setup Script
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: suggested_edit
|
||||||
|
attributes:
|
||||||
|
label: "What is the suggested edit?"
|
||||||
|
placeholder: |
|
||||||
|
e.g. Please document how to run the automatic setup script for ArchiveBox on TempleOS.
|
||||||
|
Attach images, screenshots, code snippets, etc. anything you think would help.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
---
|
||||||
|
|
||||||
|
We strive to address issues as quickly as possible, it usually takes us *about a ~week* to respond.
|
||||||
|
|
||||||
|
In the meantime please consider:
|
||||||
|
|
||||||
|
- 💰 [Donating to support ArchiveBox open-source](https://github.com/ArchiveBox/ArchiveBox/wiki/Donations)
|
||||||
|
- 👨✈️ [Hiring us for corporate deployments](https://docs.monadical.com/s/archivebox-consulting-services) with professional support, custom feature development, and help with CAPTCHAs/rate-limits
|
||||||
|
- 🔍 [Checking out the new ReadTheDocs Documentation](https://docs.archivebox.io/)
|
||||||
|
- ✨ Helping us test a newer [`BETA` release](https://github.com/ArchiveBox/ArchiveBox/releases)
|
46
.github/ISSUE_TEMPLATE/bug_report.md
vendored
46
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -1,46 +0,0 @@
|
||||||
---
|
|
||||||
name: 🐞 Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: 'Bug: ...'
|
|
||||||
labels: 'bug'
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Please fill out the following information,
|
|
||||||
feel free to delete sections if they're not applicable
|
|
||||||
or if long issue templates annoy you.
|
|
||||||
(the only required section is the version information)
|
|
||||||
-->
|
|
||||||
|
|
||||||
#### Describe the bug
|
|
||||||
<!--
|
|
||||||
A description of what the bug is,
|
|
||||||
what you expected to happen,
|
|
||||||
and any relevant context about issue.
|
|
||||||
-->
|
|
||||||
|
|
||||||
#### Steps to reproduce
|
|
||||||
<!--
|
|
||||||
For example:
|
|
||||||
1. Ran ArchiveBox with the following config '...'
|
|
||||||
2. Saw this output during archiving '....'
|
|
||||||
3. UI didn't show the thing I was expecting '....'
|
|
||||||
-->
|
|
||||||
|
|
||||||
#### Screenshots or log output
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If applicable, post any relevant screenshots or copy/pasted terminal output from ArchiveBox.
|
|
||||||
If you're reporting a parsing / importing error, **you must paste a copy of your redacted import file here**.
|
|
||||||
-->
|
|
||||||
|
|
||||||
#### ArchiveBox version
|
|
||||||
|
|
||||||
<!-- Run the `archivebox version` command locally then copy paste the result here: -->
|
|
||||||
```logs
|
|
||||||
replace this line with the *full*, unshortened output of running `archivebox version`
|
|
||||||
```
|
|
||||||
<!-- Tickets without full version info will closed until it is provided,
|
|
||||||
we need the full output here to help you solve your issue -->
|
|
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: 💬 Chat with us on Zulip
|
||||||
|
url: https://zulip.archivebox.io
|
||||||
|
about: "Join us on our Zulip forum to chat with the developers and other users (it's similar to Discord but self-hosted)."
|
||||||
|
- name: 💁♂️ Hire us to provide archiving for your organization
|
||||||
|
url: https://docs.monadical.com/s/archivebox-consulting-services
|
||||||
|
about: "We provide hosting, develoment, and support, including on-prem/cloud setup w/ SSO & storage, CAPTCHA/rate-limiting avoidance, etc."
|
17
.github/ISSUE_TEMPLATE/documentation_change.md
vendored
17
.github/ISSUE_TEMPLATE/documentation_change.md
vendored
|
@ -1,17 +0,0 @@
|
||||||
---
|
|
||||||
name: 📑 Documentation change
|
|
||||||
about: Submit a suggestion for the Wiki documentation
|
|
||||||
title: 'Documentation: Improvement request ...'
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
<!-- If you perfer, you can make a PR to https://github.com/ArchiveBox/docs instead of opening an issue -->
|
|
||||||
|
|
||||||
## Wiki Page URL
|
|
||||||
<!-- e.g. https://github.com/pirate/ArchiveBox/wiki/Configuration#use_color -->
|
|
||||||
|
|
||||||
|
|
||||||
## Suggested Edit
|
|
||||||
<!-- e.g. Please add more example usages, or please fix `xyz` typo to be `abc`. -->
|
|
||||||
|
|
50
.github/ISSUE_TEMPLATE/feature_request.md
vendored
50
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
@ -1,50 +0,0 @@
|
||||||
---
|
|
||||||
name: 💡 Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
title: 'Feature Request: ...'
|
|
||||||
labels: 'changes: behavior,status: idea phase'
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Please fill out the following information,
|
|
||||||
feel free to delete sections if they're not applicable
|
|
||||||
or if long issue templates annoy you :)
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Type
|
|
||||||
|
|
||||||
- [ ] General question or discussion
|
|
||||||
- [ ] Propose a brand new feature
|
|
||||||
- [ ] Request modification of existing behavior or design
|
|
||||||
|
|
||||||
## What is the problem that your feature request solves
|
|
||||||
<!--
|
|
||||||
e.g. I need to be able to archive spanish and french subtitle files
|
|
||||||
from a particular <example.com> movie site that's going down soon.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Describe the ideal specific solution you'd want, and whether it fits into any broader scope of changes
|
|
||||||
<!--
|
|
||||||
e.g. I specifically need a new archive method to look for multilingual subtitle files related to pages.
|
|
||||||
The bigger picture solution is the ability for custom user scripts to be run in a puppeteer context during archiving.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## What hacks or alternative solutions have you tried to solve the problem?
|
|
||||||
<!--
|
|
||||||
A clear and concise description of any alternative solutions,
|
|
||||||
workarounds, or other software you've considered using to fix the problem.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## How badly do you want this new feature?
|
|
||||||
|
|
||||||
- [ ] It's an urgent deal-breaker, I can't live without it
|
|
||||||
- [ ] It's important to add it in the near-mid term future
|
|
||||||
- [ ] It would be nice to have eventually
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [ ] I'm willing to contribute [dev time](https://github.com/ArchiveBox/ArchiveBox#archivebox-development) / [money](https://github.com/sponsors/pirate) to fix this issue
|
|
||||||
- [ ] I like ArchiveBox so far / would recommend it to a friend
|
|
||||||
- [ ] I've had a lot of difficulty getting ArchiveBox set up
|
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
name: 💬 Question, discussion, or support request
|
|
||||||
about: Start a discussion or ask a question about ArchiveBox
|
|
||||||
title: 'Question: ...'
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Without active preservation effort, everything on the internet eventually disapp
|
||||||
*ArchiveBox is an open source tool that lets organizations & individuals archive both public & private web content while retaining control over their data. It can be used to save copies of bookmarks, preserve evidence for legal cases, backup photos from FB/Insta/Flickr or media from YT/Soundcloud/etc., save research papers, and more...*
|
*ArchiveBox is an open source tool that lets organizations & individuals archive both public & private web content while retaining control over their data. It can be used to save copies of bookmarks, preserve evidence for legal cases, backup photos from FB/Insta/Flickr or media from YT/Soundcloud/etc., save research papers, and more...*
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
> ➡️ Get ArchiveBox with `pip install archivebox` on [Linux](#quickstart), [macOS](#quickstart), and [Windows](#quickstart) (WSL2), or via **[Docker](#quickstart)** ⭐️.
|
> ➡️ Get ArchiveBox with `pip install archivebox` on [Linux](#quickstart)/[macOS](#quickstart), or via **[Docker](#quickstart)** ⭐️ on any OS.
|
||||||
|
|
||||||
*Once installed, it can be used as a [CLI tool](#usage), [self-hosted Web App](https://github.com/ArchiveBox/ArchiveBox/wiki/Publishing-Your-Archive), [Python library](https://github.com/ArchiveBox/ArchiveBox/wiki/Usage#python-shell-usage), or [one-off command](#static-archive-exporting).*
|
*Once installed, it can be used as a [CLI tool](#usage), [self-hosted Web App](https://github.com/ArchiveBox/ArchiveBox/wiki/Publishing-Your-Archive), [Python library](https://github.com/ArchiveBox/ArchiveBox/wiki/Usage#python-shell-usage), or [one-off command](#static-archive-exporting).*
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,10 @@ class ABIDModel(models.Model):
|
||||||
|
|
||||||
allowed_to_invalidate_abid = self.abid_drift_allowed if (abid_drift_allowed is None) else abid_drift_allowed
|
allowed_to_invalidate_abid = self.abid_drift_allowed if (abid_drift_allowed is None) else abid_drift_allowed
|
||||||
if allowed_to_invalidate_abid:
|
if allowed_to_invalidate_abid:
|
||||||
print(f'\n#### WARNING: Change allowed despite it invalidating the ABID of an existing record ({self.__class__.__name__}.abid_drift_allowed={self.abid_drift_allowed})!', self.abid)
|
# print(f'\n#### WARNING: Change allowed despite it invalidating the ABID of an existing record ({self.__class__.__name__}.abid_drift_allowed={self.abid_drift_allowed})!', self.abid)
|
||||||
print(change_error)
|
# print(change_error)
|
||||||
print('--------------------------------------------------------------------------------------------------')
|
# print('--------------------------------------------------------------------------------------------------')
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
print(f'\n#### ERROR: Change blocked because it would invalidate ABID of an existing record ({self.__class__.__name__}.abid_drift_allowed={self.abid_drift_allowed})', self.abid)
|
print(f'\n#### ERROR: Change blocked because it would invalidate ABID of an existing record ({self.__class__.__name__}.abid_drift_allowed={self.abid_drift_allowed})', self.abid)
|
||||||
print(change_error)
|
print(change_error)
|
||||||
|
|
|
@ -64,7 +64,7 @@ class NinjaAPIWithIOCapture(NinjaAPI):
|
||||||
|
|
||||||
# Add Auth Headers to response
|
# Add Auth Headers to response
|
||||||
api_token = getattr(request, '_api_token', None)
|
api_token = getattr(request, '_api_token', None)
|
||||||
token_expiry = api_token.expires.isoformat() if api_token else 'Never'
|
token_expiry = api_token.expires.isoformat() if api_token and api_token.expires else 'Never'
|
||||||
|
|
||||||
response['X-ArchiveBox-Auth-Method'] = getattr(request, '_api_auth_method', None) or 'None'
|
response['X-ArchiveBox-Auth-Method'] = getattr(request, '_api_auth_method', None) or 'None'
|
||||||
response['X-ArchiveBox-Auth-Expires'] = token_expiry
|
response['X-ArchiveBox-Auth-Expires'] = token_expiry
|
||||||
|
|
|
@ -9,4 +9,28 @@ from .paths import (
|
||||||
from .constants import CONSTANTS, CONSTANTS_CONFIG, PACKAGE_DIR, DATA_DIR, ARCHIVE_DIR # noqa
|
from .constants import CONSTANTS, CONSTANTS_CONFIG, PACKAGE_DIR, DATA_DIR, ARCHIVE_DIR # noqa
|
||||||
from .version import VERSION # noqa
|
from .version import VERSION # noqa
|
||||||
|
|
||||||
|
# import abx
|
||||||
|
|
||||||
|
# @abx.hookimpl
|
||||||
|
# def get_CONFIG():
|
||||||
|
# from .common import (
|
||||||
|
# SHELL_CONFIG,
|
||||||
|
# STORAGE_CONFIG,
|
||||||
|
# GENERAL_CONFIG,
|
||||||
|
# SERVER_CONFIG,
|
||||||
|
# ARCHIVING_CONFIG,
|
||||||
|
# SEARCH_BACKEND_CONFIG,
|
||||||
|
# )
|
||||||
|
# return {
|
||||||
|
# 'SHELL_CONFIG': SHELL_CONFIG,
|
||||||
|
# 'STORAGE_CONFIG': STORAGE_CONFIG,
|
||||||
|
# 'GENERAL_CONFIG': GENERAL_CONFIG,
|
||||||
|
# 'SERVER_CONFIG': SERVER_CONFIG,
|
||||||
|
# 'ARCHIVING_CONFIG': ARCHIVING_CONFIG,
|
||||||
|
# 'SEARCHBACKEND_CONFIG': SEARCH_BACKEND_CONFIG,
|
||||||
|
# }
|
||||||
|
|
||||||
|
# @abx.hookimpl
|
||||||
|
# def ready():
|
||||||
|
# for config in get_CONFIG().values():
|
||||||
|
# config.validate()
|
||||||
|
|
|
@ -13,7 +13,7 @@ from django.utils.crypto import get_random_string
|
||||||
from abx_spec_config.base_configset import BaseConfigSet
|
from abx_spec_config.base_configset import BaseConfigSet
|
||||||
|
|
||||||
from .constants import CONSTANTS
|
from .constants import CONSTANTS
|
||||||
from .version import get_COMMIT_HASH, get_BUILD_TIME
|
from .version import get_COMMIT_HASH, get_BUILD_TIME, VERSION
|
||||||
from .permissions import IN_DOCKER
|
from .permissions import IN_DOCKER
|
||||||
|
|
||||||
###################### Config ##########################
|
###################### Config ##########################
|
||||||
|
@ -31,9 +31,6 @@ class ShellConfig(BaseConfigSet):
|
||||||
|
|
||||||
ANSI: Dict[str, str] = Field(default=lambda c: CONSTANTS.DEFAULT_CLI_COLORS if c.USE_COLOR else CONSTANTS.DISABLED_CLI_COLORS)
|
ANSI: Dict[str, str] = Field(default=lambda c: CONSTANTS.DEFAULT_CLI_COLORS if c.USE_COLOR else CONSTANTS.DISABLED_CLI_COLORS)
|
||||||
|
|
||||||
# VERSIONS_AVAILABLE: bool = False # .check_for_update.get_versions_available_on_github(c)},
|
|
||||||
# CAN_UPGRADE: bool = False # .check_for_update.can_upgrade(c)},
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def TERM_WIDTH(self) -> int:
|
def TERM_WIDTH(self) -> int:
|
||||||
if not self.IS_TTY:
|
if not self.IS_TTY:
|
||||||
|
@ -47,6 +44,7 @@ class ShellConfig(BaseConfigSet):
|
||||||
@property
|
@property
|
||||||
def BUILD_TIME(self) -> str:
|
def BUILD_TIME(self) -> str:
|
||||||
return get_BUILD_TIME()
|
return get_BUILD_TIME()
|
||||||
|
|
||||||
|
|
||||||
SHELL_CONFIG = ShellConfig()
|
SHELL_CONFIG = ShellConfig()
|
||||||
|
|
||||||
|
@ -76,7 +74,6 @@ STORAGE_CONFIG = StorageConfig()
|
||||||
class GeneralConfig(BaseConfigSet):
|
class GeneralConfig(BaseConfigSet):
|
||||||
TAG_SEPARATOR_PATTERN: str = Field(default=r'[,]')
|
TAG_SEPARATOR_PATTERN: str = Field(default=r'[,]')
|
||||||
|
|
||||||
|
|
||||||
GENERAL_CONFIG = GeneralConfig()
|
GENERAL_CONFIG = GeneralConfig()
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,6 +84,7 @@ class ServerConfig(BaseConfigSet):
|
||||||
CSRF_TRUSTED_ORIGINS: str = Field(default=lambda c: 'http://localhost:8000,http://127.0.0.1:8000,http://0.0.0.0:8000,http://{}'.format(c.BIND_ADDR))
|
CSRF_TRUSTED_ORIGINS: str = Field(default=lambda c: 'http://localhost:8000,http://127.0.0.1:8000,http://0.0.0.0:8000,http://{}'.format(c.BIND_ADDR))
|
||||||
|
|
||||||
SNAPSHOTS_PER_PAGE: int = Field(default=40)
|
SNAPSHOTS_PER_PAGE: int = Field(default=40)
|
||||||
|
PREVIEW_ORIGINALS: bool = Field(default=True)
|
||||||
FOOTER_INFO: str = Field(default='Content is hosted for personal archiving purposes only. Contact server owner for any takedown requests.')
|
FOOTER_INFO: str = Field(default='Content is hosted for personal archiving purposes only. Contact server owner for any takedown requests.')
|
||||||
# CUSTOM_TEMPLATES_DIR: Path = Field(default=None) # this is now a constant
|
# CUSTOM_TEMPLATES_DIR: Path = Field(default=None) # this is now a constant
|
||||||
|
|
||||||
|
@ -96,10 +94,10 @@ class ServerConfig(BaseConfigSet):
|
||||||
|
|
||||||
ADMIN_USERNAME: str = Field(default=None)
|
ADMIN_USERNAME: str = Field(default=None)
|
||||||
ADMIN_PASSWORD: str = Field(default=None)
|
ADMIN_PASSWORD: str = Field(default=None)
|
||||||
|
|
||||||
REVERSE_PROXY_USER_HEADER: str = Field(default='Remote-User')
|
REVERSE_PROXY_USER_HEADER: str = Field(default='Remote-User')
|
||||||
REVERSE_PROXY_WHITELIST: str = Field(default='')
|
REVERSE_PROXY_WHITELIST: str = Field(default='')
|
||||||
LOGOUT_REDIRECT_URL: str = Field(default='/')
|
LOGOUT_REDIRECT_URL: str = Field(default='/')
|
||||||
PREVIEW_ORIGINALS: bool = Field(default=True)
|
|
||||||
|
|
||||||
SERVER_CONFIG = ServerConfig()
|
SERVER_CONFIG = ServerConfig()
|
||||||
|
|
||||||
|
@ -113,7 +111,7 @@ class ArchivingConfig(BaseConfigSet):
|
||||||
MEDIA_MAX_SIZE: str = Field(default='750m')
|
MEDIA_MAX_SIZE: str = Field(default='750m')
|
||||||
RESOLUTION: str = Field(default='1440,2000')
|
RESOLUTION: str = Field(default='1440,2000')
|
||||||
CHECK_SSL_VALIDITY: bool = Field(default=True)
|
CHECK_SSL_VALIDITY: bool = Field(default=True)
|
||||||
USER_AGENT: str = Field(default='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)')
|
USER_AGENT: str = Field(default=f'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)')
|
||||||
COOKIES_FILE: Path | None = Field(default=None)
|
COOKIES_FILE: Path | None = Field(default=None)
|
||||||
|
|
||||||
URL_DENYLIST: str = Field(default=r'\.(css|js|otf|ttf|woff|woff2|gstatic\.com|googleapis\.com/css)(\?.*)?$', alias='URL_BLACKLIST')
|
URL_DENYLIST: str = Field(default=r'\.(css|js|otf|ttf|woff|woff2|gstatic\.com|googleapis\.com/css)(\?.*)?$', alias='URL_BLACKLIST')
|
||||||
|
@ -131,17 +129,15 @@ class ArchivingConfig(BaseConfigSet):
|
||||||
# CHROME_HEADLESS: bool = Field(default=True)
|
# CHROME_HEADLESS: bool = Field(default=True)
|
||||||
# CHROME_SANDBOX: bool = Field(default=lambda: not SHELL_CONFIG.IN_DOCKER)
|
# CHROME_SANDBOX: bool = Field(default=lambda: not SHELL_CONFIG.IN_DOCKER)
|
||||||
|
|
||||||
@field_validator('TIMEOUT', mode='after')
|
def validate(self):
|
||||||
def validate_timeout(cls, v):
|
if int(self.TIMEOUT) < 5:
|
||||||
if int(v) < 5:
|
print(f'[red][!] Warning: TIMEOUT is set too low! (currently set to TIMEOUT={self.TIMEOUT} seconds)[/red]', file=sys.stderr)
|
||||||
print(f'[red][!] Warning: TIMEOUT is set too low! (currently set to TIMEOUT={v} seconds)[/red]', file=sys.stderr)
|
|
||||||
print(' You must allow *at least* 5 seconds for indexing and archive methods to run succesfully.', file=sys.stderr)
|
print(' You must allow *at least* 5 seconds for indexing and archive methods to run succesfully.', file=sys.stderr)
|
||||||
print(' (Setting it to somewhere between 30 and 3000 seconds is recommended)', file=sys.stderr)
|
print(' (Setting it to somewhere between 30 and 3000 seconds is recommended)', file=sys.stderr)
|
||||||
print(file=sys.stderr)
|
print(file=sys.stderr)
|
||||||
print(' If you want to make ArchiveBox run faster, disable specific archive methods instead:', file=sys.stderr)
|
print(' If you want to make ArchiveBox run faster, disable specific archive methods instead:', file=sys.stderr)
|
||||||
print(' https://github.com/ArchiveBox/ArchiveBox/wiki/Configuration#archive-method-toggles', file=sys.stderr)
|
print(' https://github.com/ArchiveBox/ArchiveBox/wiki/Configuration#archive-method-toggles', file=sys.stderr)
|
||||||
print(file=sys.stderr)
|
print(file=sys.stderr)
|
||||||
return v
|
|
||||||
|
|
||||||
@field_validator('CHECK_SSL_VALIDITY', mode='after')
|
@field_validator('CHECK_SSL_VALIDITY', mode='after')
|
||||||
def validate_check_ssl_validity(cls, v):
|
def validate_check_ssl_validity(cls, v):
|
||||||
|
@ -164,15 +160,17 @@ class ArchivingConfig(BaseConfigSet):
|
||||||
@property
|
@property
|
||||||
def SAVE_ALLOWLIST_PTNS(self) -> Dict[re.Pattern, List[str]]:
|
def SAVE_ALLOWLIST_PTNS(self) -> Dict[re.Pattern, List[str]]:
|
||||||
return {
|
return {
|
||||||
re.compile(k, CONSTANTS.ALLOWDENYLIST_REGEX_FLAGS): v
|
# regexp: methods list
|
||||||
for k, v in self.SAVE_ALLOWLIST.items()
|
re.compile(key, CONSTANTS.ALLOWDENYLIST_REGEX_FLAGS): val
|
||||||
|
for key, val in self.SAVE_ALLOWLIST.items()
|
||||||
} if self.SAVE_ALLOWLIST else {}
|
} if self.SAVE_ALLOWLIST else {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def SAVE_DENYLIST_PTNS(self) -> Dict[re.Pattern, List[str]]:
|
def SAVE_DENYLIST_PTNS(self) -> Dict[re.Pattern, List[str]]:
|
||||||
return {
|
return {
|
||||||
re.compile(k, CONSTANTS.ALLOWDENYLIST_REGEX_FLAGS): v
|
# regexp: methods list
|
||||||
for k, v in self.SAVE_DENYLIST.items()
|
re.compile(key, CONSTANTS.ALLOWDENYLIST_REGEX_FLAGS): val
|
||||||
|
for key, val in self.SAVE_DENYLIST.items()
|
||||||
} if self.SAVE_DENYLIST else {}
|
} if self.SAVE_DENYLIST else {}
|
||||||
|
|
||||||
ARCHIVING_CONFIG = ArchivingConfig()
|
ARCHIVING_CONFIG = ArchivingConfig()
|
||||||
|
|
|
@ -13,7 +13,7 @@ from django.template import Template, RequestContext
|
||||||
from django.contrib.admin.helpers import ActionForm
|
from django.contrib.admin.helpers import ActionForm
|
||||||
from django.contrib.admin.widgets import FilteredSelectMultiple
|
from django.contrib.admin.widgets import FilteredSelectMultiple
|
||||||
|
|
||||||
from archivebox.config import DATA_DIR, VERSION
|
from archivebox.config import DATA_DIR
|
||||||
from archivebox.config.common import SERVER_CONFIG
|
from archivebox.config.common import SERVER_CONFIG
|
||||||
from archivebox.misc.util import htmldecode, urldecode
|
from archivebox.misc.util import htmldecode, urldecode
|
||||||
from archivebox.misc.paginators import AccelleratedPaginator
|
from archivebox.misc.paginators import AccelleratedPaginator
|
||||||
|
@ -32,8 +32,8 @@ from core.admin_tags import TagInline
|
||||||
from core.admin_archiveresults import ArchiveResultInline, result_url
|
from core.admin_archiveresults import ArchiveResultInline, result_url
|
||||||
|
|
||||||
|
|
||||||
GLOBAL_CONTEXT = {'VERSION': VERSION, 'VERSIONS_AVAILABLE': [], 'CAN_UPGRADE': False}
|
# GLOBAL_CONTEXT = {'VERSION': VERSION, 'VERSIONS_AVAILABLE': [], 'CAN_UPGRADE': False}
|
||||||
|
GLOBAL_CONTEXT = {}
|
||||||
|
|
||||||
|
|
||||||
class SnapshotActionForm(ActionForm):
|
class SnapshotActionForm(ActionForm):
|
||||||
|
|
|
@ -188,6 +188,10 @@ class ChromeConfig(BaseConfigSet):
|
||||||
# cmd_args += ('--timeout={}'.format(options.CHROME_TIMEOUT * 1000),)
|
# cmd_args += ('--timeout={}'.format(options.CHROME_TIMEOUT * 1000),)
|
||||||
|
|
||||||
if options.CHROME_USER_DATA_DIR:
|
if options.CHROME_USER_DATA_DIR:
|
||||||
|
# remove SingletonLock file
|
||||||
|
lockfile = options.CHROME_USER_DATA_DIR / options.CHROME_PROFILE_NAME / 'SingletonLock'
|
||||||
|
lockfile.unlink(missing_ok=True)
|
||||||
|
|
||||||
cmd_args.append('--user-data-dir={}'.format(options.CHROME_USER_DATA_DIR))
|
cmd_args.append('--user-data-dir={}'.format(options.CHROME_USER_DATA_DIR))
|
||||||
cmd_args.append('--profile-directory={}'.format(options.CHROME_PROFILE_NAME or 'Default'))
|
cmd_args.append('--profile-directory={}'.format(options.CHROME_PROFILE_NAME or 'Default'))
|
||||||
|
|
||||||
|
|
|
@ -148,6 +148,7 @@
|
||||||
{% block footer %}<div id="footer"></div>{% endblock %}
|
{% block footer %}<div id="footer"></div>{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% comment %}
|
||||||
{% if user.is_authenticated and user.is_superuser and CAN_UPGRADE %}
|
{% if user.is_authenticated and user.is_superuser and CAN_UPGRADE %}
|
||||||
<script>
|
<script>
|
||||||
if (!localStorage.getItem("bannerDismissed")) {
|
if (!localStorage.getItem("bannerDismissed")) {
|
||||||
|
@ -184,6 +185,7 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$ = django.jQuery;
|
$ = django.jQuery;
|
||||||
|
|
|
@ -61,6 +61,7 @@ dependencies = [
|
||||||
"pluggy>=1.5.0",
|
"pluggy>=1.5.0",
|
||||||
"requests>=2.32.3",
|
"requests>=2.32.3",
|
||||||
"dateparser>=1.2.0",
|
"dateparser>=1.2.0",
|
||||||
|
"tzdata>=2024.2", # needed for dateparser {TZ: UTC} on some systems: https://github.com/ArchiveBox/ArchiveBox/issues/1553
|
||||||
"feedparser>=6.0.11",
|
"feedparser>=6.0.11",
|
||||||
"w3lib>=2.2.1",
|
"w3lib>=2.2.1",
|
||||||
"rich>=13.8.0",
|
"rich>=13.8.0",
|
||||||
|
@ -135,11 +136,12 @@ ldap = [
|
||||||
"django-auth-ldap>=4.1.0",
|
"django-auth-ldap>=4.1.0",
|
||||||
]
|
]
|
||||||
debug = [
|
debug = [
|
||||||
# libs needed to run archivebox server with DEBUG=True
|
# packages needed for running with DEBUG=True
|
||||||
"django-debug-toolbar>=4.4.6",
|
"django-debug-toolbar>=4.4.6",
|
||||||
"requests-tracker>=0.3.3",
|
|
||||||
"djdt_flamegraph>=0.2.13",
|
"djdt_flamegraph>=0.2.13",
|
||||||
"ipdb>=0.13.13",
|
"ipdb>=0.13.13",
|
||||||
|
"requests-tracker>=0.3.3",
|
||||||
|
"django-autotyping>=0.5.1",
|
||||||
]
|
]
|
||||||
all = [
|
all = [
|
||||||
"archivebox[sonic,ldap,debug]"
|
"archivebox[sonic,ldap,debug]"
|
||||||
|
@ -152,7 +154,8 @@ dev-dependencies = [
|
||||||
"pip>=24.2",
|
"pip>=24.2",
|
||||||
"setuptools>=75.1.0",
|
"setuptools>=75.1.0",
|
||||||
"wheel>=0.44.0",
|
"wheel>=0.44.0",
|
||||||
"homebrew-pypi-poet>=0.10.0", # for: generating archivebox.rb brewfile list of python packages
|
"bumpver>=2023.1129",
|
||||||
|
#"homebrew-pypi-poet>=0.10.0", # for: generating archivebox.rb brewfile list of python packages
|
||||||
### DOCS
|
### DOCS
|
||||||
"recommonmark>=0.7.1",
|
"recommonmark>=0.7.1",
|
||||||
"sphinx>=8.1.3",
|
"sphinx>=8.1.3",
|
||||||
|
@ -174,7 +177,6 @@ dev-dependencies = [
|
||||||
"ruff>=0.6.6",
|
"ruff>=0.6.6",
|
||||||
"flake8>=7.1.1",
|
"flake8>=7.1.1",
|
||||||
"mypy>=1.11.2",
|
"mypy>=1.11.2",
|
||||||
"django-autotyping>=0.5.1",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
|
@ -295,3 +297,21 @@ Demo = "https://demo.archivebox.io"
|
||||||
Donate = "https://github.com/ArchiveBox/ArchiveBox/wiki/Donations"
|
Donate = "https://github.com/ArchiveBox/ArchiveBox/wiki/Donations"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[tool.bumpver]
|
||||||
|
current_version = "v0.8.5rc53"
|
||||||
|
version_pattern = "vMAJOR.MINOR.PATCH[PYTAGNUM]"
|
||||||
|
commit_message = "bump version {old_version} -> {new_version}"
|
||||||
|
tag_message = "{new_version}"
|
||||||
|
tag_scope = "default"
|
||||||
|
pre_commit_hook = ""
|
||||||
|
post_commit_hook = ""
|
||||||
|
commit = true
|
||||||
|
tag = true
|
||||||
|
push = true
|
||||||
|
|
||||||
|
[tool.bumpver.file_patterns]
|
||||||
|
"pyproject.toml" = [
|
||||||
|
'current_version = "{version}"',
|
||||||
|
'version = "{pep440_version}"',
|
||||||
|
]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# This file was autogenerated by uv via the following command:
|
# This file was autogenerated by uv via the following command:
|
||||||
# uv pip compile pyproject.toml --all-extras -o requirements.txt
|
# uv pip compile pyproject.toml --all-extras -o requirements.txt
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-archivedotorg
|
# abx-plugin-archivedotorg
|
||||||
|
@ -30,59 +30,59 @@
|
||||||
# abx-spec-extractor
|
# abx-spec-extractor
|
||||||
# abx-spec-pydantic-pkgr
|
# abx-spec-pydantic-pkgr
|
||||||
# abx-spec-searchbackend
|
# abx-spec-searchbackend
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-archivedotorg
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-archivedotorg
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-chrome
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-chrome
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-curl
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-curl
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-archivedotorg
|
# abx-plugin-archivedotorg
|
||||||
# abx-plugin-favicon
|
# abx-plugin-favicon
|
||||||
# abx-plugin-title
|
# abx-plugin-title
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-default-binproviders
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-default-binproviders
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-git
|
# abx-plugin-git
|
||||||
# abx-plugin-npm
|
# abx-plugin-npm
|
||||||
# abx-plugin-pip
|
# abx-plugin-pip
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-favicon
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-favicon
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-git
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-git
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-htmltotext
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-htmltotext
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-ldap-auth
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-ldap-auth
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-mercury
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-mercury
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-npm
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-npm
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-pip
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-pip
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-playwright
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-playwright
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-puppeteer
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-puppeteer
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-readability
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-readability
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-ripgrep-search
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-ripgrep-search
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-singlefile
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-singlefile
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-sonic-search
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-sonic-search
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-sqlitefts-search
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-sqlitefts-search
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-title
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-title
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-wget
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-wget
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-plugin-ytdlp
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-plugin-ytdlp
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-archivebox
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-archivebox
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-config
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-config
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-archivedotorg
|
# abx-plugin-archivedotorg
|
||||||
|
@ -105,13 +105,13 @@
|
||||||
# abx-plugin-title
|
# abx-plugin-title
|
||||||
# abx-plugin-wget
|
# abx-plugin-wget
|
||||||
# abx-plugin-ytdlp
|
# abx-plugin-ytdlp
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-django
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-django
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-ldap-auth
|
# abx-plugin-ldap-auth
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-extractor
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-extractor
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-pydantic-pkgr
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-pydantic-pkgr
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-chrome
|
# abx-plugin-chrome
|
||||||
|
@ -126,7 +126,7 @@
|
||||||
# abx-plugin-sonic-search
|
# abx-plugin-sonic-search
|
||||||
# abx-plugin-wget
|
# abx-plugin-wget
|
||||||
# abx-plugin-ytdlp
|
# abx-plugin-ytdlp
|
||||||
-e file:///Volumes/NVME/Users/squash/Local/Code/archiveboxes/ArchiveBox7/archivebox/pkgs/abx-spec-searchbackend
|
-e file:///Users/squash/Local/Code/archiveboxes/archivebox7/archivebox/pkgs/abx-spec-searchbackend
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-plugin-ripgrep-search
|
# abx-plugin-ripgrep-search
|
||||||
|
@ -163,7 +163,7 @@ brotli==1.1.0
|
||||||
# via yt-dlp
|
# via yt-dlp
|
||||||
bx-django-utils==81
|
bx-django-utils==81
|
||||||
# via django-huey-monitor
|
# via django-huey-monitor
|
||||||
bx-py-utils==104
|
bx-py-utils==105
|
||||||
# via
|
# via
|
||||||
# bx-django-utils
|
# bx-django-utils
|
||||||
# django-huey-monitor
|
# django-huey-monitor
|
||||||
|
@ -181,7 +181,7 @@ charset-normalizer==3.4.0
|
||||||
# via requests
|
# via requests
|
||||||
constantly==23.10.4
|
constantly==23.10.4
|
||||||
# via twisted
|
# via twisted
|
||||||
croniter==4.0.0
|
croniter==5.0.1
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
cryptography==43.0.3
|
cryptography==43.0.3
|
||||||
# via
|
# via
|
||||||
|
@ -208,6 +208,7 @@ django==5.1.2
|
||||||
# channels
|
# channels
|
||||||
# django-admin-data-views
|
# django-admin-data-views
|
||||||
# django-auth-ldap
|
# django-auth-ldap
|
||||||
|
# django-autotyping
|
||||||
# django-charid-field
|
# django-charid-field
|
||||||
# django-debug-toolbar
|
# django-debug-toolbar
|
||||||
# django-extensions
|
# django-extensions
|
||||||
|
@ -221,10 +222,12 @@ django==5.1.2
|
||||||
# django-stubs-ext
|
# django-stubs-ext
|
||||||
# django-taggit
|
# django-taggit
|
||||||
# requests-tracker
|
# requests-tracker
|
||||||
django-admin-data-views==0.4.1
|
django-admin-data-views==0.4.2
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
django-auth-ldap==5.1.0
|
django-auth-ldap==5.1.0
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
|
django-autotyping==0.5.1
|
||||||
|
# via archivebox (pyproject.toml)
|
||||||
django-charid-field==0.4
|
django-charid-field==0.4
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
django-debug-toolbar==4.4.6
|
django-debug-toolbar==4.4.6
|
||||||
|
@ -243,11 +246,11 @@ django-object-actions==4.3.0
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
django-pydantic-field==0.3.10
|
django-pydantic-field==0.3.10
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
django-settings-holder==0.1.2
|
django-settings-holder==0.2.2
|
||||||
# via
|
# via
|
||||||
# django-admin-data-views
|
# django-admin-data-views
|
||||||
# django-signal-webhooks
|
# django-signal-webhooks
|
||||||
django-signal-webhooks==0.3.0
|
django-signal-webhooks==0.3.1
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
django-stubs==5.1.1
|
django-stubs==5.1.1
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
|
@ -296,6 +299,8 @@ ipython==8.29.0
|
||||||
# ipdb
|
# ipdb
|
||||||
jedi==0.19.1
|
jedi==0.19.1
|
||||||
# via ipython
|
# via ipython
|
||||||
|
libcst==1.5.0
|
||||||
|
# via django-autotyping
|
||||||
mailchecker==6.0.11
|
mailchecker==6.0.11
|
||||||
# via python-benedict
|
# via python-benedict
|
||||||
markdown-it-py==3.0.0
|
markdown-it-py==3.0.0
|
||||||
|
@ -375,7 +380,7 @@ pydantic-pkgr==0.5.4
|
||||||
# abx-plugin-sonic-search
|
# abx-plugin-sonic-search
|
||||||
# abx-plugin-ytdlp
|
# abx-plugin-ytdlp
|
||||||
# abx-spec-pydantic-pkgr
|
# abx-spec-pydantic-pkgr
|
||||||
pydantic-settings==2.6.0
|
pydantic-settings==2.6.1
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-spec-config
|
# abx-spec-config
|
||||||
|
@ -416,7 +421,9 @@ pytz==2024.2
|
||||||
# croniter
|
# croniter
|
||||||
# dateparser
|
# dateparser
|
||||||
pyyaml==6.0.2
|
pyyaml==6.0.2
|
||||||
# via python-benedict
|
# via
|
||||||
|
# libcst
|
||||||
|
# python-benedict
|
||||||
regex==2024.9.11
|
regex==2024.9.11
|
||||||
# via dateparser
|
# via dateparser
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
|
@ -427,16 +434,16 @@ requests==2.32.3
|
||||||
# yt-dlp
|
# yt-dlp
|
||||||
requests-tracker==0.3.3
|
requests-tracker==0.3.3
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
rich==13.9.3
|
rich==13.9.4
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# abx-spec-config
|
# abx-spec-config
|
||||||
# rich-argparse
|
# rich-argparse
|
||||||
rich-argparse==1.5.2
|
rich-argparse==1.6.0
|
||||||
# via archivebox (pyproject.toml)
|
# via archivebox (pyproject.toml)
|
||||||
service-identity==24.2.0
|
service-identity==24.2.0
|
||||||
# via twisted
|
# via twisted
|
||||||
setuptools==75.2.0
|
setuptools==75.3.0
|
||||||
# via
|
# via
|
||||||
# archivebox (pyproject.toml)
|
# archivebox (pyproject.toml)
|
||||||
# autobahn
|
# autobahn
|
||||||
|
@ -492,6 +499,8 @@ typing-extensions==4.12.2
|
||||||
# pydantic-core
|
# pydantic-core
|
||||||
# pydantic-pkgr
|
# pydantic-pkgr
|
||||||
# twisted
|
# twisted
|
||||||
|
tzdata==2024.2
|
||||||
|
# via archivebox (pyproject.toml)
|
||||||
tzlocal==5.2
|
tzlocal==5.2
|
||||||
# via dateparser
|
# via dateparser
|
||||||
ulid-py==1.1.0
|
ulid-py==1.1.0
|
||||||
|
|
210
uv.lock
210
uv.lock
|
@ -669,6 +669,7 @@ dependencies = [
|
||||||
{ name = "supervisor" },
|
{ name = "supervisor" },
|
||||||
{ name = "typeid-python" },
|
{ name = "typeid-python" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
|
{ name = "tzdata" },
|
||||||
{ name = "ulid-py" },
|
{ name = "ulid-py" },
|
||||||
{ name = "w3lib" },
|
{ name = "w3lib" },
|
||||||
{ name = "yt-dlp" },
|
{ name = "yt-dlp" },
|
||||||
|
@ -677,6 +678,7 @@ dependencies = [
|
||||||
[package.optional-dependencies]
|
[package.optional-dependencies]
|
||||||
all = [
|
all = [
|
||||||
{ name = "django-auth-ldap" },
|
{ name = "django-auth-ldap" },
|
||||||
|
{ name = "django-autotyping" },
|
||||||
{ name = "django-debug-toolbar" },
|
{ name = "django-debug-toolbar" },
|
||||||
{ name = "djdt-flamegraph" },
|
{ name = "djdt-flamegraph" },
|
||||||
{ name = "ipdb" },
|
{ name = "ipdb" },
|
||||||
|
@ -684,6 +686,7 @@ all = [
|
||||||
{ name = "requests-tracker" },
|
{ name = "requests-tracker" },
|
||||||
]
|
]
|
||||||
debug = [
|
debug = [
|
||||||
|
{ name = "django-autotyping" },
|
||||||
{ name = "django-debug-toolbar" },
|
{ name = "django-debug-toolbar" },
|
||||||
{ name = "djdt-flamegraph" },
|
{ name = "djdt-flamegraph" },
|
||||||
{ name = "ipdb" },
|
{ name = "ipdb" },
|
||||||
|
@ -697,11 +700,10 @@ ldap = [
|
||||||
[package.dev-dependencies]
|
[package.dev-dependencies]
|
||||||
dev = [
|
dev = [
|
||||||
{ name = "bottle" },
|
{ name = "bottle" },
|
||||||
{ name = "django-autotyping" },
|
{ name = "bumpver" },
|
||||||
{ name = "django-debug-toolbar" },
|
{ name = "django-debug-toolbar" },
|
||||||
{ name = "djdt-flamegraph" },
|
{ name = "djdt-flamegraph" },
|
||||||
{ name = "flake8" },
|
{ name = "flake8" },
|
||||||
{ name = "homebrew-pypi-poet" },
|
|
||||||
{ name = "ipdb" },
|
{ name = "ipdb" },
|
||||||
{ name = "logfire", extra = ["django"] },
|
{ name = "logfire", extra = ["django"] },
|
||||||
{ name = "mypy" },
|
{ name = "mypy" },
|
||||||
|
@ -759,6 +761,7 @@ requires-dist = [
|
||||||
{ name = "django", specifier = ">=5.1.1,<6.0" },
|
{ name = "django", specifier = ">=5.1.1,<6.0" },
|
||||||
{ name = "django-admin-data-views", specifier = ">=0.4.1" },
|
{ name = "django-admin-data-views", specifier = ">=0.4.1" },
|
||||||
{ name = "django-auth-ldap", marker = "extra == 'ldap'", specifier = ">=4.1.0" },
|
{ name = "django-auth-ldap", marker = "extra == 'ldap'", specifier = ">=4.1.0" },
|
||||||
|
{ name = "django-autotyping", marker = "extra == 'debug'", specifier = ">=0.5.1" },
|
||||||
{ name = "django-charid-field", specifier = ">=0.4" },
|
{ name = "django-charid-field", specifier = ">=0.4" },
|
||||||
{ name = "django-debug-toolbar", marker = "extra == 'debug'", specifier = ">=4.4.6" },
|
{ name = "django-debug-toolbar", marker = "extra == 'debug'", specifier = ">=4.4.6" },
|
||||||
{ name = "django-extensions", specifier = ">=3.2.3" },
|
{ name = "django-extensions", specifier = ">=3.2.3" },
|
||||||
|
@ -795,6 +798,7 @@ requires-dist = [
|
||||||
{ name = "supervisor", specifier = ">=4.2.5" },
|
{ name = "supervisor", specifier = ">=4.2.5" },
|
||||||
{ name = "typeid-python", specifier = ">=0.3.1" },
|
{ name = "typeid-python", specifier = ">=0.3.1" },
|
||||||
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
||||||
|
{ name = "tzdata", specifier = ">=2024.2" },
|
||||||
{ name = "ulid-py", specifier = ">=1.1.0" },
|
{ name = "ulid-py", specifier = ">=1.1.0" },
|
||||||
{ name = "w3lib", specifier = ">=2.2.1" },
|
{ name = "w3lib", specifier = ">=2.2.1" },
|
||||||
{ name = "yt-dlp", specifier = ">=2024.8.6" },
|
{ name = "yt-dlp", specifier = ">=2024.8.6" },
|
||||||
|
@ -803,11 +807,10 @@ requires-dist = [
|
||||||
[package.metadata.requires-dev]
|
[package.metadata.requires-dev]
|
||||||
dev = [
|
dev = [
|
||||||
{ name = "bottle", specifier = ">=0.13.1" },
|
{ name = "bottle", specifier = ">=0.13.1" },
|
||||||
{ name = "django-autotyping", specifier = ">=0.5.1" },
|
{ name = "bumpver", specifier = ">=2023.1129" },
|
||||||
{ name = "django-debug-toolbar", specifier = ">=4.4.6" },
|
{ name = "django-debug-toolbar", specifier = ">=4.4.6" },
|
||||||
{ name = "djdt-flamegraph", specifier = ">=0.2.13" },
|
{ name = "djdt-flamegraph", specifier = ">=0.2.13" },
|
||||||
{ name = "flake8", specifier = ">=7.1.1" },
|
{ name = "flake8", specifier = ">=7.1.1" },
|
||||||
{ name = "homebrew-pypi-poet", specifier = ">=0.10.0" },
|
|
||||||
{ name = "ipdb", specifier = ">=0.13.13" },
|
{ name = "ipdb", specifier = ">=0.13.13" },
|
||||||
{ name = "logfire", extras = ["django"], specifier = ">=0.51.0" },
|
{ name = "logfire", extras = ["django"], specifier = ">=0.51.0" },
|
||||||
{ name = "mypy", specifier = ">=1.11.2" },
|
{ name = "mypy", specifier = ">=1.11.2" },
|
||||||
|
@ -1020,6 +1023,22 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/72/a9/0971251c4427c14b2a827dba3d910d4d3330dabf23d4278bf6d06a978847/brotlicffi-1.1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d", size = 361760 },
|
{ url = "https://files.pythonhosted.org/packages/72/a9/0971251c4427c14b2a827dba3d910d4d3330dabf23d4278bf6d06a978847/brotlicffi-1.1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d", size = 361760 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bumpver"
|
||||||
|
version = "2023.1129"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "click" },
|
||||||
|
{ name = "colorama" },
|
||||||
|
{ name = "lexid" },
|
||||||
|
{ name = "looseversion" },
|
||||||
|
{ name = "toml" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/7e/31/7087ec411432b395e04c449e9c5569b6ef677bbb506a900251fe91070eb5/bumpver-2023.1129.tar.gz", hash = "sha256:2a09813066d92ae2eabf882d4f9a88ebd60135e828c424bdf7800e1723e15010", size = 110275 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/f0/ee/147b9a684a9af36e429f75b6dc76c06f8086b114483de4bd4ae3a303fda9/bumpver-2023.1129-py2.py3-none-any.whl", hash = "sha256:b2a55c0224215b6ca1c3a0c99827749927b7c61cbb5dfef75565dbda8e75f687", size = 61957 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bx-django-utils"
|
name = "bx-django-utils"
|
||||||
version = "81"
|
version = "81"
|
||||||
|
@ -1036,11 +1055,11 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bx-py-utils"
|
name = "bx-py-utils"
|
||||||
version = "104"
|
version = "105"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/25/9d/d60b1594c40f63b77752a4cdba5ddb746fc61653ba6ea6f79995198087a9/bx_py_utils-104.tar.gz", hash = "sha256:508cfc1d0fa6c22298f697c4efaa913337847d488d8a53eeccfae9ee106123f6", size = 190865 }
|
sdist = { url = "https://files.pythonhosted.org/packages/f7/c3/4949fd3031a26eaf7378befacc5a2858d68a4e328b342e2ffc4c321c9a89/bx_py_utils-105.tar.gz", hash = "sha256:1bb7c1401147df35a95ca78c1de9f25d104aeda941a5cc89f9cfc2d1616ddbd7", size = 192317 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/2e/da/959a65959ae49ad949ed9e1375df12c8b61f4af041d644a81403daf4f915/bx_py_utils-104-py3-none-any.whl", hash = "sha256:c92ebc4fb122e3e3c228d984d0a1f5c3284c3da6aab1a1c753f7eb1f71bdab3a", size = 175501 },
|
{ url = "https://files.pythonhosted.org/packages/6c/e5/da929891157b56f7a9bf825118926910e5e3629eb1cd3ec441d292e7501c/bx_py_utils-105-py3-none-any.whl", hash = "sha256:d441b0e413f8b19b03ab1784187ca2cf2ec5b68d64082790bdbca16a4612cb3e", size = 175660 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1196,6 +1215,18 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 },
|
{ url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "click"
|
||||||
|
version = "8.1.7"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "colorama", marker = "platform_system == 'Windows'" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colorama"
|
name = "colorama"
|
||||||
version = "0.4.6"
|
version = "0.4.6"
|
||||||
|
@ -1225,15 +1256,15 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "croniter"
|
name = "croniter"
|
||||||
version = "4.0.0"
|
version = "5.0.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "python-dateutil" },
|
{ name = "python-dateutil" },
|
||||||
{ name = "pytz" },
|
{ name = "pytz" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/c7/7c/ad5d5ecca499c00ac83c08fde57a49af929844b9c39d6256cc3fea30c940/croniter-4.0.0.tar.gz", hash = "sha256:3df735b70d005b68414d80728987ecba4d71054a1bb1b011f6d475bdefdbeddd", size = 55312 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a7/8c/0656200bfa5c1e90b26f4bb1cc8aecb4a7722f8386ee044bdc2d4efb589e/croniter-5.0.1.tar.gz", hash = "sha256:7d9b1ef25b10eece48fdf29d8ac52f9b6252abff983ac614ade4f3276294019e", size = 57084 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/4e/a5/b4cbef8a130382a84fc9342c2d1b2551dcf2817e768bb3e2881b71617119/croniter-4.0.0-py2.py3-none-any.whl", hash = "sha256:312717b8017ad6052817934af563f6754b1f25cb942dcca1e617240aca4aa254", size = 23411 },
|
{ url = "https://files.pythonhosted.org/packages/3c/68/34c3d74d2af6ea98ff8a0b50d149cff26e88a3f09817121d1186e9185e97/croniter-5.0.1-py2.py3-none-any.whl", hash = "sha256:eb28439742291f6c10b181df1a5ecf421208b1fc62ef44501daec1780a0b09e9", size = 24149 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1335,15 +1366,16 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-admin-data-views"
|
name = "django-admin-data-views"
|
||||||
version = "0.4.1"
|
version = "0.4.2"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "django" },
|
{ name = "django" },
|
||||||
{ name = "django-settings-holder" },
|
{ name = "django-settings-holder" },
|
||||||
|
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/5a/24/6467910537747af96c6c447b221d0e1c36e64547368700f43aecbbfa3097/django_admin_data_views-0.4.1.tar.gz", hash = "sha256:fbdd2d5d0caf3b1cb1ffac57f7caff0e38f02dfc71dfa4e230c8c50f1741bb61", size = 12073 }
|
sdist = { url = "https://files.pythonhosted.org/packages/44/4f/3092990fa7ab550f5ab5b14eb8be272c141a7a768c118fcf3bf5f2c1259c/django_admin_data_views-0.4.2.tar.gz", hash = "sha256:d89310eaeae4e441267a27ba51b7cfe70f91d41da96d1cda73c1e8c46ba52d84", size = 12469 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/2a/4b/087370e416b91dfce3a67bbc079fe202cdacbf6040e8fecf9bc96a66dbaf/django_admin_data_views-0.4.1-py3-none-any.whl", hash = "sha256:ed4988ce2f1c000bfa0ebef3b0126be1284399e03e23763eeb9d2c499745bf08", size = 15242 },
|
{ url = "https://files.pythonhosted.org/packages/32/86/5ab784b6a487cf85c9df03f66dcc7ffa817d9fe603fd44c0ba11bf0da590/django_admin_data_views-0.4.2-py3-none-any.whl", hash = "sha256:e7ebfc822187b53ff20f63b975745d660153f9735ab7d2c607bc5f7b90ff7ec2", size = 15319 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1488,16 +1520,16 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-settings-holder"
|
name = "django-settings-holder"
|
||||||
version = "0.1.2"
|
version = "0.2.2"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/1e/36/0ea7d1e6e782c8c8ec7e8a8f0614526e732e3728dee7778d575f35267e3c/django_settings_holder-0.1.2.tar.gz", hash = "sha256:8ab0f2dabf5a1c79ec9e95e97a296808e0f2c48f6f9aa1da1b77b433ee1e2f9e", size = 6454 }
|
sdist = { url = "https://files.pythonhosted.org/packages/76/a2/eca3105add8254158ebc67b605a81aceeefc69238e3eae87ed50c2e2c438/django_settings_holder-0.2.2.tar.gz", hash = "sha256:a894e1a0e2573ff72ed752b97f5c8b03cda2745b64d3baff81db4ebd1e505b03", size = 8606 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/10/96/03b2ed31f267eeaf7d339d1f2ecd95d6ab6cb32a7dca3c3338e90a124c9b/django_settings_holder-0.1.2-py3-none-any.whl", hash = "sha256:7a65f888fc1e8427a807be72d43d5f3f242163e0a0eaf33a393592e6fff3e102", size = 8197 },
|
{ url = "https://files.pythonhosted.org/packages/4f/55/250e5b80c785e2ca36f7db3346df0ba38ed63930cf791b2ad926a26dd466/django_settings_holder-0.2.2-py3-none-any.whl", hash = "sha256:37f229d44686dd2dc6f82ff75213c90f633c5fea0492df9c5660c775fa5d6941", size = 8689 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-signal-webhooks"
|
name = "django-signal-webhooks"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "asgiref" },
|
{ name = "asgiref" },
|
||||||
|
@ -1505,10 +1537,11 @@ dependencies = [
|
||||||
{ name = "django" },
|
{ name = "django" },
|
||||||
{ name = "django-settings-holder" },
|
{ name = "django-settings-holder" },
|
||||||
{ name = "httpx" },
|
{ name = "httpx" },
|
||||||
|
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/0f/e2/1974349def31611eeb689651d50c744c1a0810d36dc3830a961ea950578e/django_signal_webhooks-0.3.0.tar.gz", hash = "sha256:3efff4305a8c0555a17ce8f4cbb1006014afd7314862647db5724e06eec4493e", size = 16566 }
|
sdist = { url = "https://files.pythonhosted.org/packages/41/15/865e72e1da78bc6c6865ff16b0dffb11db62999fc91bed8c3c1668eac4c1/django_signal_webhooks-0.3.1.tar.gz", hash = "sha256:23dc439be2fdea24b746726495eb1a7a59440809056482eebceb153d050a3f5b", size = 17806 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/b0/75/63944fa0d6a854ce59158f5a02e4afc4d64dab5a1ddb3f25efe8747fdf10/django_signal_webhooks-0.3.0-py3-none-any.whl", hash = "sha256:64be32ff06c1b74fe80176395258cfb51f1757fed28f026285f38a44d559c00f", size = 22571 },
|
{ url = "https://files.pythonhosted.org/packages/eb/7a/0f193eb3351af74de8c3d0fa89f72005caf63ad9456e281e5cd9b2be1a10/django_signal_webhooks-0.3.1-py3-none-any.whl", hash = "sha256:863beb94f6536a09b04d516df6103037748891f5f4555df36796fb54c8649854", size = 22940 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1657,19 +1690,6 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
|
{ url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "homebrew-pypi-poet"
|
|
||||||
version = "0.10.0"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "jinja2" },
|
|
||||||
{ name = "setuptools" },
|
|
||||||
]
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/f7/d9/4b525af3be6ac0a0a962e101b7771db6511d9e96369ded2765406233f9ff/homebrew-pypi-poet-0.10.0.tar.gz", hash = "sha256:e09e997e35a98f66445f9a39ccb33d6d93c5cd090302a59f231707eac0bf378e", size = 5953 }
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/3b/85/998232eae0b5c6798c7140ef37d2c1be02ea06cd38dd80169b3abd63b600/homebrew_pypi_poet-0.10.0-py2.py3-none-any.whl", hash = "sha256:65824f97aea0e713c4ac18aa2ef4477aca69426554eac842eeaaddf97df3fc47", size = 7813 },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httpcore"
|
name = "httpcore"
|
||||||
version = "1.0.6"
|
version = "1.0.6"
|
||||||
|
@ -1829,6 +1849,15 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 },
|
{ url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lexid"
|
||||||
|
version = "2021.1006"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/60/0b/28a3f9abc75abbf1fa996eb2dd77e1e33a5d1aac62566e3f60a8ec8b8a22/lexid-2021.1006.tar.gz", hash = "sha256:509a3a4cc926d3dbf22b203b18a4c66c25e6473fb7c0e0d30374533ac28bafe5", size = 11525 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/cf/e3/35764404a4b7e2021be1f88f42264c2e92e0c4720273559a62461ce64a47/lexid-2021.1006-py2.py3-none-any.whl", hash = "sha256:5526bb5606fd74c7add23320da5f02805bddd7c77916f2dc1943e6bada8605ed", size = 7587 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libcst"
|
name = "libcst"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
|
@ -1866,7 +1895,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "logfire"
|
name = "logfire"
|
||||||
version = "1.3.1"
|
version = "2.1.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "executing" },
|
{ name = "executing" },
|
||||||
|
@ -1878,9 +1907,9 @@ dependencies = [
|
||||||
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/66/41/7b563b7db2490ba9090edd0ba7b70ad9a003bfd608dc132edf5f1b394140/logfire-1.3.1.tar.gz", hash = "sha256:73f9ff2691c927fc3ad28da5308ffd43af30d9bb8efedef52266a797da878381", size = 242221 }
|
sdist = { url = "https://files.pythonhosted.org/packages/ee/b8/b4f3a741076a9bdce82ed25218a8167d74c9834588710babc03cb587773a/logfire-2.1.1.tar.gz", hash = "sha256:fd0b9a8b3334cd8c7efb52c04297c2360380818a021e8024ca37bae5f32b78aa", size = 244832 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/56/6e/2d1a1b116733e930e8a20e2263cc5a9968d51ef546cc473895c1b5252ee0/logfire-1.3.1-py3-none-any.whl", hash = "sha256:974657b9d775a65b5c526550baa95c121257a907ab5d9e8c99cbb715562c2673", size = 164833 },
|
{ url = "https://files.pythonhosted.org/packages/7e/93/905aef6a938fdd8633cf4937a35ae2438e2830788e8465588e1063ab79b5/logfire-2.1.1-py3-none-any.whl", hash = "sha256:5ead7b0f3edf6cab9bbe9a02e0f6a4c5f3f693411928b32b727ecb3d2b709814", size = 167207 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.optional-dependencies]
|
[package.optional-dependencies]
|
||||||
|
@ -1888,6 +1917,15 @@ django = [
|
||||||
{ name = "opentelemetry-instrumentation-django" },
|
{ name = "opentelemetry-instrumentation-django" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "looseversion"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/64/7e/f13dc08e0712cc2eac8e56c7909ce2ac280dbffef2ffd87bd5277ce9d58b/looseversion-1.3.0.tar.gz", hash = "sha256:ebde65f3f6bb9531a81016c6fef3eb95a61181adc47b7f949e9c0ea47911669e", size = 8799 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/4e/74/d5405b9b3b12e9176dff223576d7090bc161092878f533fd0dc23dd6ae1d/looseversion-1.3.0-py2.py3-none-any.whl", hash = "sha256:781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0", size = 8237 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mailchecker"
|
name = "mailchecker"
|
||||||
version = "6.0.11"
|
version = "6.0.11"
|
||||||
|
@ -2339,8 +2377,6 @@ version = "6.1.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/26/10/2a30b13c61e7cf937f4adf90710776b7918ed0a9c434e2c38224732af310/psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a", size = 508565 }
|
sdist = { url = "https://files.pythonhosted.org/packages/26/10/2a30b13c61e7cf937f4adf90710776b7918ed0a9c434e2c38224732af310/psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a", size = 508565 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/da/2b/f4dea5d993d9cd22ad958eea828a41d5d225556123d372f02547c29c4f97/psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e", size = 246648 },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/9f/14/4aa97a7f2e0ac33a050d990ab31686d651ae4ef8c86661fef067f00437b9/psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85", size = 249905 },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/01/9e/8be43078a171381953cfee33c07c0d628594b5dbfc5157847b85022c2c1b/psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688", size = 247762 },
|
{ url = "https://files.pythonhosted.org/packages/01/9e/8be43078a171381953cfee33c07c0d628594b5dbfc5157847b85022c2c1b/psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688", size = 247762 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/1d/cb/313e80644ea407f04f6602a9e23096540d9dc1878755f3952ea8d3d104be/psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e", size = 248777 },
|
{ url = "https://files.pythonhosted.org/packages/1d/cb/313e80644ea407f04f6602a9e23096540d9dc1878755f3952ea8d3d104be/psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e", size = 248777 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/65/8e/bcbe2025c587b5d703369b6a75b65d41d1367553da6e3f788aff91eaf5bd/psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38", size = 284259 },
|
{ url = "https://files.pythonhosted.org/packages/65/8e/bcbe2025c587b5d703369b6a75b65d41d1367553da6e3f788aff91eaf5bd/psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38", size = 284259 },
|
||||||
|
@ -2541,15 +2577,15 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic-settings"
|
name = "pydantic-settings"
|
||||||
version = "2.6.0"
|
version = "2.6.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "pydantic" },
|
{ name = "pydantic" },
|
||||||
{ name = "python-dotenv" },
|
{ name = "python-dotenv" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/6c/66/5f1a9da10675bfb3b9da52f5b689c77e0a5612263fcce510cfac3e99a168/pydantic_settings-2.6.0.tar.gz", hash = "sha256:44a1804abffac9e6a30372bb45f6cafab945ef5af25e66b1c634c01dd39e0188", size = 75232 }
|
sdist = { url = "https://files.pythonhosted.org/packages/b5/d4/9dfbe238f45ad8b168f5c96ee49a3df0598ce18a0795a983b419949ce65b/pydantic_settings-2.6.1.tar.gz", hash = "sha256:e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0", size = 75646 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/34/19/26bb6bdb9fdad5f0dfce538780814084fb667b4bc37fcb28459c14b8d3b5/pydantic_settings-2.6.0-py3-none-any.whl", hash = "sha256:4a819166f119b74d7f8c765196b165f95cc7487ce58ea27dec8a5a26be0970e0", size = 28578 },
|
{ url = "https://files.pythonhosted.org/packages/5e/f9/ff95fd7d760af42f647ea87f9b8a383d891cdb5e5dbd4613edaeb094252a/pydantic_settings-2.6.1-py3-none-any.whl", hash = "sha256:7fb0637c786a558d3103436278a7c4f1cfd29ba8973238a50c5bb9a55387da87", size = 28595 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2868,53 +2904,53 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich"
|
name = "rich"
|
||||||
version = "13.9.3"
|
version = "13.9.4"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "markdown-it-py" },
|
{ name = "markdown-it-py" },
|
||||||
{ name = "pygments" },
|
{ name = "pygments" },
|
||||||
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/d9/e9/cf9ef5245d835065e6673781dbd4b8911d352fb770d56cf0879cf11b7ee1/rich-13.9.3.tar.gz", hash = "sha256:bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", size = 222889 }
|
sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/9a/e2/10e9819cf4a20bd8ea2f5dabafc2e6bf4a78d6a0965daeb60a4b34d1c11f/rich-13.9.3-py3-none-any.whl", hash = "sha256:9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", size = 242157 },
|
{ url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich-argparse"
|
name = "rich-argparse"
|
||||||
version = "1.5.2"
|
version = "1.6.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "rich" },
|
{ name = "rich" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/26/f1/0a5ba24d684012e2f25deec88d9a9a1199d8e26e3bb595b812c8b0218cff/rich_argparse-1.5.2.tar.gz", hash = "sha256:84d348d5b6dafe99fffe2c7ea1ca0afe14096c921693445b9eee65ee4fcbfd2c", size = 17142 }
|
sdist = { url = "https://files.pythonhosted.org/packages/7f/ee/c410251ff6123d4417f2fe8e72c8628f187682b70ce34134a2a3e307a2d5/rich_argparse-1.6.0.tar.gz", hash = "sha256:092083c30da186f25bcdff8b1d47fdfb571288510fb051e0488a72cc3128de13", size = 17499 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/77/83/4585bd18f0cda471ce44b8364620dc9cbb7ce7179b923123ad3feddf99da/rich_argparse-1.5.2-py3-none-any.whl", hash = "sha256:7027503d5849e27fc7cc85fb58504363606f2ec1c8b3c27d9a8ad28788faf877", size = 19777 },
|
{ url = "https://files.pythonhosted.org/packages/25/45/54b95bb72bb17c27a7252bee5034955020b5869a33918b660ffc29cbf608/rich_argparse-1.6.0-py3-none-any.whl", hash = "sha256:fbe70a1d821b3f2fa8958cddf0cae131870a6e9faa04ab52b409cb1eda809bd7", size = 20072 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.7.1"
|
version = "0.7.2"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a6/21/5c6e05e0fd3fbb41be4fb92edbc9a04de70baf60adb61435ce0c6b8c3d55/ruff-0.7.1.tar.gz", hash = "sha256:9d8a41d4aa2dad1575adb98a82870cf5db5f76b2938cf2206c22c940034a36f4", size = 3181670 }
|
sdist = { url = "https://files.pythonhosted.org/packages/95/51/231bb3790e5b0b9fd4131f9a231d73d061b3667522e3f406fd9b63334d0e/ruff-0.7.2.tar.gz", hash = "sha256:2b14e77293380e475b4e3a7a368e14549288ed2931fce259a6f99978669e844f", size = 3210036 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/65/45/8a20a9920175c9c4892b2420f80ff3cf14949cf3067118e212f9acd9c908/ruff-0.7.1-py3-none-linux_armv6l.whl", hash = "sha256:cb1bc5ed9403daa7da05475d615739cc0212e861b7306f314379d958592aaa89", size = 10389268 },
|
{ url = "https://files.pythonhosted.org/packages/5c/56/0caa2b5745d66a39aa239c01059f6918fc76ed8380033d2f44bf297d141d/ruff-0.7.2-py3-none-linux_armv6l.whl", hash = "sha256:b73f873b5f52092e63ed540adefc3c36f1f803790ecf2590e1df8bf0a9f72cb8", size = 10373973 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/1b/d3/2f8382db2cf4f9488e938602e33e36287f9d26cb283aa31f11c31297ce79/ruff-0.7.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27c1c52a8d199a257ff1e5582d078eab7145129aa02721815ca8fa4f9612dc35", size = 10188348 },
|
{ url = "https://files.pythonhosted.org/packages/1a/33/cad6ff306731f335d481c50caa155b69a286d5b388e87ff234cd2a4b3557/ruff-0.7.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5b813ef26db1015953daf476202585512afd6a6862a02cde63f3bafb53d0b2d4", size = 10171140 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a2/31/7d14e2a88da351200f844b7be889a0845d9e797162cf76b136d21b832a23/ruff-0.7.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:588a34e1ef2ea55b4ddfec26bbe76bc866e92523d8c6cdec5e8aceefeff02d99", size = 9841448 },
|
{ url = "https://files.pythonhosted.org/packages/97/f5/6a2ca5c9ba416226eac9cf8121a1baa6f06655431937e85f38ffcb9d0d01/ruff-0.7.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:853277dbd9675810c6826dad7a428d52a11760744508340e66bf46f8be9701d9", size = 9809333 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/db/99/738cafdc768eceeca0bd26c6f03e213aa91203d2278e1d95b1c31c4ece41/ruff-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94fc32f9cdf72dc75c451e5f072758b118ab8100727168a3df58502b43a599ca", size = 10674864 },
|
{ url = "https://files.pythonhosted.org/packages/16/83/e3e87f13d1a1dc205713632978cd7bc287a59b08bc95780dbe359b9aefcb/ruff-0.7.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21aae53ab1490a52bf4e3bf520c10ce120987b047c494cacf4edad0ba0888da2", size = 10622987 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fe/12/bcf2836b50eab53c65008383e7d55201e490d75167c474f14a16e1af47d2/ruff-0.7.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:985818742b833bffa543a84d1cc11b5e6871de1b4e0ac3060a59a2bae3969250", size = 10192105 },
|
{ url = "https://files.pythonhosted.org/packages/22/16/97ccab194480e99a2e3c77ae132b3eebfa38c2112747570c403a4a13ba3a/ruff-0.7.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc7e0fc6e0cb3168443eeadb6445285abaae75142ee22b2b72c27d790ab60ba", size = 10184640 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2b/71/261d5d668bf98b6c44e89bfb5dfa4cb8cb6c8b490a201a3d8030e136ea4f/ruff-0.7.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32f1e8a192e261366c702c5fb2ece9f68d26625f198a25c408861c16dc2dea9c", size = 11194144 },
|
{ url = "https://files.pythonhosted.org/packages/97/1b/82ff05441b036f68817296c14f24da47c591cb27acfda473ee571a5651ac/ruff-0.7.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd77877a4e43b3a98e5ef4715ba3862105e299af0c48942cc6d51ba3d97dc859", size = 11210203 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/90/1f/0926d18a3b566fa6e7b3b36093088e4ffef6b6ba4ea85a462d9a93f7e35c/ruff-0.7.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:699085bf05819588551b11751eff33e9ca58b1b86a6843e1b082a7de40da1565", size = 11917066 },
|
{ url = "https://files.pythonhosted.org/packages/a6/96/7ecb30a7ef7f942e2d8e0287ad4c1957dddc6c5097af4978c27cfc334f97/ruff-0.7.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e00163fb897d35523c70d71a46fbaa43bf7bf9af0f4534c53ea5b96b2e03397b", size = 11870894 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/cd/a8/9fac41f128b6a44ab4409c1493430b4ee4b11521e8aeeca19bfe1ce851f9/ruff-0.7.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:344cc2b0814047dc8c3a8ff2cd1f3d808bb23c6658db830d25147339d9bf9ea7", size = 11458821 },
|
{ url = "https://files.pythonhosted.org/packages/06/6a/c716bb126218227f8e604a9c484836257708a05ee3d2ebceb666ff3d3867/ruff-0.7.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3c54b538633482dc342e9b634d91168fe8cc56b30a4b4f99287f4e339103e88", size = 11449533 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/25/cd/59644168f086ab13fe4e02943b9489a0aa710171f66b178e179df5383554/ruff-0.7.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4316bbf69d5a859cc937890c7ac7a6551252b6a01b1d2c97e8fc96e45a7c8b4a", size = 12700379 },
|
{ url = "https://files.pythonhosted.org/packages/e6/2f/3a5f9f9478904e5ae9506ea699109070ead1e79aac041e872cbaad8a7458/ruff-0.7.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b792468e9804a204be221b14257566669d1db5c00d6bb335996e5cd7004ba80", size = 12607919 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fb/30/3bac63619eb97174661829c07fc46b2055a053dee72da29d7c304c1cd2c0/ruff-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79d3af9dca4c56043e738a4d6dd1e9444b6d6c10598ac52d146e331eb155a8ad", size = 11019813 },
|
{ url = "https://files.pythonhosted.org/packages/a0/57/4642e57484d80d274750dcc872ea66655bbd7e66e986fede31e1865b463d/ruff-0.7.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba53ed84ac19ae4bfb4ea4bf0172550a2285fa27fbb13e3746f04c80f7fa088", size = 11016915 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4b/af/f567b885b5cb3bcdbcca3458ebf210cc8c9c7a9f61c332d3c2a050c3b21e/ruff-0.7.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5c121b46abde94a505175524e51891f829414e093cd8326d6e741ecfc0a9112", size = 10662146 },
|
{ url = "https://files.pythonhosted.org/packages/4d/6d/59be6680abee34c22296ae3f46b2a3b91662b8b18ab0bf388b5eb1355c97/ruff-0.7.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b19fafe261bf741bca2764c14cbb4ee1819b67adb63ebc2db6401dcd652e3748", size = 10625424 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bc/ad/eb930d3ad117a9f2f7261969c21559ebd82bb13b6e8001c7caed0d44be5f/ruff-0.7.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8422104078324ea250886954e48f1373a8fe7de59283d747c3a7eca050b4e378", size = 10256911 },
|
{ url = "https://files.pythonhosted.org/packages/82/e7/f6a643683354c9bc7879d2f228ee0324fea66d253de49273a0814fba1927/ruff-0.7.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:28bd8220f4d8f79d590db9e2f6a0674f75ddbc3847277dd44ac1f8d30684b828", size = 10233692 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/20/d5/af292ce70a016fcec792105ca67f768b403dd480a11888bc1f418fed0dd5/ruff-0.7.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:56aad830af8a9db644e80098fe4984a948e2b6fc2e73891538f43bbe478461b8", size = 10767488 },
|
{ url = "https://files.pythonhosted.org/packages/d7/48/b4e02fc835cd7ed1ee7318d9c53e48bcf6b66301f55925a7dcb920e45532/ruff-0.7.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9fd67094e77efbea932e62b5d2483006154794040abb3a5072e659096415ae1e", size = 10751825 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/24/85/cc04a3bd027f433bebd2a097e63b3167653c079f7f13d8f9a1178e693412/ruff-0.7.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:658304f02f68d3a83c998ad8bf91f9b4f53e93e5412b8f2388359d55869727fd", size = 11093368 },
|
{ url = "https://files.pythonhosted.org/packages/1e/06/6c5ee6ab7bb4cbad9e8bb9b2dd0d818c759c90c1c9e057c6ed70334b97f4/ruff-0.7.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:576305393998b7bd6c46018f8104ea3a9cb3fa7908c21d8580e3274a3b04b691", size = 11074811 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/0b/fb/c39cbf32d1f3e318674b8622f989417231794926b573f76dd4d0ca49f0f1/ruff-0.7.1-py3-none-win32.whl", hash = "sha256:b517a2011333eb7ce2d402652ecaa0ac1a30c114fbbd55c6b8ee466a7f600ee9", size = 8594180 },
|
{ url = "https://files.pythonhosted.org/packages/a1/16/8969304f25bcd0e4af1778342e63b715e91db8a2dbb51807acd858cba915/ruff-0.7.2-py3-none-win32.whl", hash = "sha256:fa993cfc9f0ff11187e82de874dfc3611df80852540331bc85c75809c93253a8", size = 8650268 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/5a/71/ec8cdea34ecb90c830ca60d54ac7b509a7b5eab50fae27e001d4470fe813/ruff-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f38c41fcde1728736b4eb2b18850f6d1e3eedd9678c914dede554a70d5241307", size = 9419751 },
|
{ url = "https://files.pythonhosted.org/packages/d9/18/c4b00d161def43fe5968e959039c8f6ce60dca762cec4a34e4e83a4210a0/ruff-0.7.2-py3-none-win_amd64.whl", hash = "sha256:dd8800cbe0254e06b8fec585e97554047fb82c894973f7ff18558eee33d1cb88", size = 9433693 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/79/7b/884553415e9f0a9bf358ed52fb68b934e67ef6c5a62397ace924a1afdf9a/ruff-0.7.1-py3-none-win_arm64.whl", hash = "sha256:19aa200ec824c0f36d0c9114c8ec0087082021732979a359d6f3c390a6ff2a37", size = 8717402 },
|
{ url = "https://files.pythonhosted.org/packages/7f/7b/c920673ac01c19814dd15fc617c02301c522f3d6812ca2024f4588ed4549/ruff-0.7.2-py3-none-win_arm64.whl", hash = "sha256:bb8368cd45bba3f57bb29cbb8d64b4a33f8415d0149d2655c5c8539452ce7760", size = 8735845 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2934,11 +2970,11 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "setuptools"
|
name = "setuptools"
|
||||||
version = "75.2.0"
|
version = "75.3.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/07/37/b31be7e4b9f13b59cde9dcaeff112d401d49e0dc5b37ed4a9fc8fb12f409/setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec", size = 1350308 }
|
sdist = { url = "https://files.pythonhosted.org/packages/ed/22/a438e0caa4576f8c383fa4d35f1cc01655a46c75be358960d815bfbb12bd/setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686", size = 1351577 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/31/2d/90165d51ecd38f9a02c6832198c13a4e48652485e2ccf863ebb942c531b6/setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8", size = 1249825 },
|
{ url = "https://files.pythonhosted.org/packages/90/12/282ee9bce8b58130cb762fbc9beabd531549952cac11fc56add11dcb7ea0/setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd", size = 1251070 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3285,27 +3321,27 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "uv"
|
name = "uv"
|
||||||
version = "0.4.28"
|
version = "0.4.29"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/67/5f/4c227d6ca86c1b27a27d953b0f6f7d867d16bf84802dbb2e03dacbcff629/uv-0.4.28.tar.gz", hash = "sha256:bc33e318b676aeba2ea8bcd1e8f38623272b891200cefc54f9c420f4f4091434", size = 2093199 }
|
sdist = { url = "https://files.pythonhosted.org/packages/6a/23/6e8d8177112b40d4905a49c03d397c5b93eb030f87cdddf0c5d4be599fc9/uv-0.4.29.tar.gz", hash = "sha256:9c559b6fdc042add463e86afa1c210716f7020bfc2e96b00df5af7afcb587ce7", size = 2102901 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/fa/47/ba9c8dba784f5fe822ce0591e4951504db8294e549ae9b8c0eabcf80372a/uv-0.4.28-py3-none-linux_armv6l.whl", hash = "sha256:524f38d996b51c27d1342af0d4e69c1524fbcfe57c8e036498811a5079fab070", size = 13207872 },
|
{ url = "https://files.pythonhosted.org/packages/1c/8d/78b6927a3e511a4bc05347714c8917896477537bf09a6301e84de08b7a59/uv-0.4.29-py3-none-linux_armv6l.whl", hash = "sha256:287dc3fd3f78093a5a82136f01cbd9f224e0905b38d3dcffdc96c08fbbe48ee9", size = 13250618 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/3b/93/d19ab3a55778f97985203e3792ed79f53739d75f818a4792b0de07e29058/uv-0.4.28-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c8c3a719d68181127fcf90c0e5d2a4b76bb405bf464e04c8bf5c6d356109cec", size = 13281267 },
|
{ url = "https://files.pythonhosted.org/packages/d8/2f/1bbfc3c15933fcf07c222e063044696320f5a9fe3d5c584960ed0c490cf8/uv-0.4.29-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6b03859068aaa08ca9907a51d403d54b0a9d8054091646845a9192f213f099d4", size = 13316211 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/5a/4f/d672cb7467719b4b348e5380e59ac9dc2962b418f66167814e61f96f00a2/uv-0.4.28-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e44e46aecf42e7d075d3428864c42598b3397fd4cdf5fbf198b38673870ac932", size = 12283215 },
|
{ url = "https://files.pythonhosted.org/packages/fb/1a/1c862cc36f29cf58b22758f31eb5f9611ee86429d470c8e4c0fd235592ec/uv-0.4.29-py3-none-macosx_11_0_arm64.whl", hash = "sha256:950bbfe1954e9c3a5d6c4777bb778b4c23d0dea9ad9f77622c45d4fbba433355", size = 12363705 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/24/15/67755fb799c205f7eb3843f60980d794fc4fefe7596097f96bd911ded348/uv-0.4.28-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:7932026532a8294969777fa500dbd3c3a80aada14ac131d9696d596d31068550", size = 12599223 },
|
{ url = "https://files.pythonhosted.org/packages/a1/0e/76e947db1135fa2436b11cc1ca927de187601be7ec65b0102f42a6a58211/uv-0.4.29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:3473b05142ba436ac30d036b7ab5e9bcfa97f63df5d1382f92e0a3e4aaa391bc", size = 12622825 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/50/69/f6e67de2aea1476953fd412a76d2f634369fcd0cdeb23fb64f4c14d1ccbb/uv-0.4.28-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d9b8543712257678a5ab7e6865486bc71903c231d151ad1aff663b1c25596744", size = 13014207 },
|
{ url = "https://files.pythonhosted.org/packages/41/3d/b54226b11eb935e4e57585905cf3ded2ac7d972c551bef1c3a000d4c5e47/uv-0.4.29-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7060dfbad0bc26e9cecbb4f8482445c958071511f23728948478f81acfb29048", size = 13054445 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/26/55/14f9f2f1f38493107462b2e8055c25ad8e3eea0821475c9888e91abdfdb1/uv-0.4.28-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274b5af065a1a3a37456e9f1a8c1c4e9b07825be1c4135d299e022fb0547de38", size = 13621543 },
|
{ url = "https://files.pythonhosted.org/packages/bf/00/02fa712a3991957d2a65d043173d06d3a429acb3c4e54976f4385c034d97/uv-0.4.29-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df35d9cbe4cfbb7bce287f56e3bb7a7cef0b7b5173ed889d936d4c470f2b1b83", size = 13655646 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/aa/09/4642cbcb8bcd74bb61089eca207c70dfde535c1a9c1933d809458781b7dc/uv-0.4.28-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:09a50416622b5df476be774739d1682db9079b7bc7493346c2085cf11b91706b", size = 14230000 },
|
{ url = "https://files.pythonhosted.org/packages/61/85/f6796032396bbd350648747c984376c8c8add14c75476ed8d5a3438a9c76/uv-0.4.29-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfb797a87b55d96cc0593e9f29ab5d58454be74598ea0158e1b2f4f2dc97cede", size = 14281147 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d3/bf/76f3a245f7c7ee9058202136f83fa9628f7642bbc95eaa50c974c8ad50f1/uv-0.4.28-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d12b58c945e4805f06b954475642049d97f69796b9a4c5742a6e0a281de0db9c", size = 13964366 },
|
{ url = "https://files.pythonhosted.org/packages/17/48/3314a03c6580d0b05bd1b9122ff9a9fbde5163815cf84f5a220fc013cea1/uv-0.4.29-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:668d3e6095c6f0cac6a831ef4030f7ad79442d1c84b9569f01f50b60c2d51a77", size = 14004714 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/27/be/59613a92b6fc47b70ab08390f28a429d2aeeee71901e29ab6e069e05cbc9/uv-0.4.28-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ec1bf494dcf30984b5e6e8208d78a8a4e483855c45c3ea2b1d9e7201d8af00f", size = 18007523 },
|
{ url = "https://files.pythonhosted.org/packages/11/e0/456bc5271f09ff385c57570628705757a59f9a3f8205ff029dc9b2213dbd/uv-0.4.29-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0be21afa0e582ddc5badff6ef40c3c6784efc5feae4ad568307b668d40dc49bd", size = 18032241 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c6/55/1aad99613982f87eb9aacb405018365a256387232a12e00fabe3aff6536b/uv-0.4.28-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f6d4f95ceb4735a4c8f0555dda6761a57c8ee7fc1b6b7d7004d6a25a8aec38", size = 13764938 },
|
{ url = "https://files.pythonhosted.org/packages/ef/6c/db10ff7f178ee93a832941e1cddbf38bfb1b0e30fd07580db10eb909f19d/uv-0.4.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6224a322267570e0470c61008fd1c8e2f50bf073b339f4c3010da86aef3c44c", size = 13787528 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/00/24/560fa8d5c81df81d33bd61aa677a0c86502035b09a3332a9218e29ef56e3/uv-0.4.28-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:2e82236e655c5af1905d7ca15c3c96c28a878f2d77a2e4f714d5254baad85b2e", size = 12768270 },
|
{ url = "https://files.pythonhosted.org/packages/1b/cf/501cd6aeeae0413e83ed0c112a362e44c05fa01144ecfd05c6fb3533778d/uv-0.4.29-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:24cccff9c248864ba0ab3429bae56314146c9494ce66a881d70ea8cf2805945f", size = 12789635 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a3/74/8e35216352a8654ab4bfdf6ccd875433c7183ef725bb7947535378f01283/uv-0.4.28-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:a3c59d5a11e0ddf550e20ea10b5d26ed06acab1192d3b70fe3993444cfe8fd41", size = 13004268 },
|
{ url = "https://files.pythonhosted.org/packages/8d/8d/3103af713c6369b6c1afe2bd8415eb43ea2cd4d11aa823f2e5747736b410/uv-0.4.29-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:68d4967b5f0af8bd46085e0f3ded229026700668a97734a21c3d11a5fc350c47", size = 13022589 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/24/fb/5723f6b60e0089a1c53d638cbd9c73f8132d361eed68966b7a80afb289bd/uv-0.4.28-py3-none-musllinux_1_1_i686.whl", hash = "sha256:be1ce25068d24b42273182729dc1917654438797346a5d470606949ec344fb22", size = 13344079 },
|
{ url = "https://files.pythonhosted.org/packages/4f/4d/e9a0da7c43301f27503ed0af881afb9059e3700bd374d1c7c6579ff9fb29/uv-0.4.29-py3-none-musllinux_1_1_i686.whl", hash = "sha256:75927da78f74bb935314d236dc61ecdc192e878e06eb79585b6d9d5ee9829f98", size = 13367805 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/5f/8d/5cf54b786ce69788a00ffcb7e275bacff80dab72653a04fcd0214be03ec4/uv-0.4.28-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:dea9d143e52cc295c9da9840530629196b0dc24c71b31a880f2f979fe3f1d62e", size = 15247117 },
|
{ url = "https://files.pythonhosted.org/packages/be/70/a78cd7cdac7581cf0a7e027cf3c69d07ca5b6b83d39f571411cc73f1590f/uv-0.4.29-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:246da468ac0d51e7fb257cd038db2f8d6376ae269a44d01f56776e32108aa9da", size = 15158094 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fd/75/b22afa960bf8a74ec66bd35c702ad2552ad93edf3b231e9f29b96d0d519e/uv-0.4.28-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:6ea1fac8b9b8d785f66e2ab46296e6939a43ab85da538d3eea12a27dfefd84a6", size = 13899919 },
|
{ url = "https://files.pythonhosted.org/packages/e6/93/3bcb18a54a9823c8bfadd362022b1c480da10c0bcd86398101f9a124e0a7/uv-0.4.29-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:8c71663c7df4f512c697de39a4926dc191897f5fede73644bb2329f532c1ebfa", size = 13917229 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/56/30/c9691fc0d9bb8b5c7719429c4313591a251961e7e89b79b2e42349f3cf91/uv-0.4.28-py3-none-win32.whl", hash = "sha256:8a32af23fc619e1e70923a498c097ec6eb120e764315ba164fa7ab8a65af9ba3", size = 13124306 },
|
{ url = "https://files.pythonhosted.org/packages/8a/38/bd90e265f868ddbc2dd3cc9625e2d8670d3ac35984a078491be11be754f3/uv-0.4.29-py3-none-win32.whl", hash = "sha256:b5775db128b98251c3ea7874367fc20dce9f9aac3dbfa635e3ef4a1c56842d9c", size = 13203439 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/45/86/7bb87d8b97fcf807e97f256bfe9d55e31ef788778ec9793f2c9a6a5d128a/uv-0.4.28-py3-none-win_amd64.whl", hash = "sha256:e680313c3b25eee9f9f521fab20746292cf6ef4e162e4f973e0758867702384f", size = 14886993 },
|
{ url = "https://files.pythonhosted.org/packages/cb/4f/446a0fe5901b110093f3888e93c8ebee1b08f35ba1699bbaf3645b553865/uv-0.4.29-py3-none-win_amd64.whl", hash = "sha256:67dcfd253020e25ed1c49e5bd06406205c37264f99e14002de53a357cd1cdadf", size = 14902665 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
Loading…
Reference in a new issue