Name | hatch-openzim JSON |
Version |
0.2.1
JSON |
| download |
home_page | None |
Summary | openZIM hatch plugin to set metadata automatically and download files at build time |
upload_time | 2024-05-06 10:04:55 |
maintainer | None |
docs_url | None |
author | None |
requires_python | <3.13,>=3.8 |
license | GPL-3.0-or-later |
keywords |
download
file
hatch
openzim
plugin
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
hatch-openzim
=======
[![Code Quality Status](https://github.com/openzim/hatch-openzim/workflows/QA/badge.svg?query=branch%3Amain)](https://github.com/openzim/hatch-openzim/actions/workflows/QA.yml?query=branch%3Amain)
[![Tests Status](https://github.com/openzim/hatch-openzim/workflows/Tests/badge.svg?query=branch%3Amain)](https://github.com/openzim/hatch-openzim/actions/workflows/Tests.yml?query=branch%3Amain)
[![CodeFactor](https://www.codefactor.io/repository/github/openzim/hatch-openzim/badge)](https://www.codefactor.io/repository/github/openzim/hatch-openzim)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![codecov](https://codecov.io/gh/openzim/hatch-openzim/branch/main/graph/badge.svg)](https://codecov.io/gh/openzim/hatch-openzim)
This provides a [Hatch](https://pypi.org/project/hatch/)(ling) plugin for common openZIM operations:
- automatically populate common project metadatas
- install static files (e.g. external JS dependencies) at build time
This plugin intentionally has few dependencies, using the Python standard library whenever possible and hence limiting footprint to a minimum.
hatch-openzim adheres to openZIM's [Contribution Guidelines](https://github.com/openzim/overview/wiki/Contributing).
hatch-openzim has implemented openZIM's [Python bootstrap, conventions and policies](https://github.com/openzim/_python-bootstrap/blob/main/docs/Policy.md) **v1.0.1**.
## Quick start
Assuming you have an openZIM project, you could use such a configuration in your `pyproject.toml`
```toml
# Use the hatchling build backend, with the hatch-openzim plugin.
[build-system]
requires = ["hatchling", "hatch-openzim"]
build-backend = "hatchling.build"
[project]
name = "MyAwesomeScraper"
requires-python = ">=3.11,<3.12"
description = "Awesome scraper"
readme = "README.md"
# These project metadatas are dynamic because they will be generated from hatch-openzim
# and version plugins.
dynamic = ["authors", "classifiers", "keywords", "license", "version", "urls"]
# Enable the hatch-openzim metadata hook to generate default openZIM metadata.
[tool.hatch.metadata.hooks.openzim-metadata]
additional-keywords = ["awesome"] # some additional keywords
kind = "scraper" # indicate this is a scraper, so that additional keywords are added
# Additional author #1
[[tool.hatch.metadata.hooks.openzim-metadata.additional-authors]]
name="Bob"
email="bob@acme.com"
# Additional author #2
[[tool.hatch.metadata.hooks.openzim-metadata.additional-authors]]
name="Alice"
email="alice@acme.com"
# Enable the hatch-openzim build hook to install files (e.g. JS libs) at build time.
[tool.hatch.build.hooks.openzim-build]
toml-config = "openzim.toml" # optional location of the configuration file
dependencies = [ "zimscraperlib==3.1.0" ] # optional dependencies needed for file installations
```
NOTA: the `dependencies` attribute is not specific to our hook(s), it is a generic [hatch(ling) feature](https://hatch.pypa.io/1.9/config/build/#dependencies_1).
## Metadata hook usage
### Configuration (in `pyproject.toml`)
| Variable | Required | Description |
|---|---|---|
| `additional-authors` | N | List of authors that will be appended to the automatic one |
| `additional-classifiers` | N | List of classifiers that will be appended to the automatic ones |
| `additional-keywords` | N | List of keywords that will be appended to the automatic ones |
| `kind` | N | If set to `scraper`, scrapers keywords will be automatically added as well |
| `organization` | N | Override organization (otherwise detected from Github repository to set author and keyword appropriately). Case-insentive. Supported values are `openzim`, `kiwix` and `offspot` |
| `preserve-authors` | N | Boolean indicating that we do not want to set `authors` metadata but use the ones of `pyproject.toml` |
| `preserve-classifiers` | N | Boolean indicating that we do not want to set `classifiers` metadata but use the ones of `pyproject.toml` |
| `preserve-keywords` | N | Boolean indicating that we do not want to set `keywords` metadata but use the ones of `pyproject.toml` |
| `preserve-license` | N | Boolean indicating that we do not want to set `license` metadata but use the one of `pyproject.toml` |
| `preserve-urls` | N | Boolean indicating that we do not want to set `urls` metadata but use the ones of `pyproject.toml` |
### Behavior
The metadata hook will set:
- `authors` to `[{"email": "dev@kiwix.org", "name": "Kiwix"}]`
- `classifiers` will contain:
- `License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)`
- all `Programming Language :: Python :: x` and `Programming Language :: Python :: x.y` matching the `required-versions`
- `keywords` will contain:
- at least `kiwix`
- if `kind` is `scraper`, it will add `zim` and `offline`
- and `additional-keywords` passed in the configuration
- `license` to `{"text": "GPL-3.0-or-later"}`
- `urls` to
- `Donate`: `https://www.kiwix.org/en/support-us/`
- `Homepage`: Github repository URL (e.g. `https://github.com/openzim/hatch-openzim`) if code is a git clone, otherwise `https://www.kiwix.org`
## Build hook usage
### High-level configuration (in `pyproject.toml`)
| Variable | Required | Description |
|---|---|---|
| `toml-config` | N | Location of the configuration, default to `openzim.toml` |
### Details configuration (in `openzim.toml`)
The build hook detailed configuration is done in a TOML file named `openzim.toml` (if not customized
via `toml-config`, see above). This file must be placed your project root folder, next to your
`pyproject.toml`.
The build hook supports to download web resources at various location at build time.
To configure, this you first have to create a `files` section in the `openzim.toml` configuration
and declare its `config` configuration. Name of the section (`assets` in example below) is
free (do not forgot to escape it if you want to use special chars like `.` in the name).
```toml
[files.assets.config]
target_dir="src/hatch_openzim/templates/assets"
execute_after=[
"touch somewhere/something.txt"
]
```
| Variable | Required | Description |
|---|---|---|
| `target_dir` | Y | Base directory where all downloaded content will be placed |
| `execute_after` | N | List of shell commands to execute once all actions (see below) have been executed; actions are executed with `target_dir` as current working directory |
**Important:** The `execute_after` commands are **always** executed, no matter how many action are
present or how many actions have been ignored (see below for details about why an action might be ignored).
Nota: The example `execute_after` command (`touch`) is not representative of what you would usually do ^^
Once this section configuration is done, you will then declare multiple actions. All
actions in a given section share the same base configuration declared above.
Three kinds of actions are supported:
- `get_file`: downloads a file to a location
- `extract_all`: extracts all content of a zip file to a location
- `extract_items`: extracts some items of a zip file to some locations
Each action is declared in its own TOML table. Action names are free.
```toml
[files.assets.actions.some_name]
action=...
```
### `get_file` action configuration (in `openzim.toml`)
This action downloads a file to a location.
**Important:** If `target_file` is already present, the action is not executed, it is simply ignored.
| Variable | Required | Description |
|---|---|---|
| `action` | Y | Must be "get_file" |
| `source`| Y | URL of the online resource to download |
| `target_file` | Y | Relative path to the file target location, relative to the section `target_dir` |
| `execute_after` | N | List of shell commands to execute once file installation is completed; actions are executed with the section `target_dir` as current working directory |
You will find a sample below.
```toml
[files.assets.actions."jquery.min.js"]
action="get_file"
source="https://code.jquery.com/jquery-3.5.1.min.js"
target_file="jquery.min.js"
```
### `extract_all` action configuration (in `openzim.toml`)
This action downloads a ZIP and extracts it to a location. Some items in the Zip content
can be removed afterwards.
**Important:** If `target_dir` is already present, the action is not executed, it is simply ignored.
| Variable | Required | Description |
|---|---|---|
| `action` | Y | Must be "extract_all" |
| `source` | Y | URL of the online ZIP to download |
| `target_dir` | Y | Relative path of the directory where ZIP content will be extracted, relative to the section `target_dir` |
| `remove` | N | List of glob patterns of ZIP content to remove after extraction (relative to action `target_dir`) |
| `execute_after` | N | List of shell commands to execute once files extraction is completed; actions are executed with the section `target_dir` as current working directory |
You will find a sample below.
Nota:
- the ZIP is first saved to a temporary location before extraction, consuming some disk space
```toml
[files.assets.actions.chosen]
action="extract_all"
source="https://github.com/harvesthq/chosen/releases/download/v1.8.7/chosen_v1.8.7.zip"
target_dir="chosen"
remove=["docsupport", "chosen.proto.*", "*.html", "*.md"]
```
### `extract_items` action configuration (in `openzim.toml`)
This action extracts a ZIP to a temporary directory, and move selected items to some locations.
Some sub-items in the Zip content can be removed afterwards.
**Important:** If any `target_paths` is already present, the action is not executed, it is simply ignored.
| Variable | Required | Description |
|---|---|---|
| `action`| Y | Must be "extract_all" |
| `source`| Y | URL of the online ZIP to download |
| `zip_paths` | Y | List of relative path in ZIP to select |
| `target_paths` | Y | Relative path of the target directory where selected items will be moved (relative to ZIP home folder) |
| `remove` | N | List of glob patterns of ZIP content to remove after extraction (must include the necessary `target_paths`, they are relative to the section `target_dir`) |
| `execute_after` | N | List of shell commands to execute once ZIP extraction is completed; actions are executed with the section `target_dir` as current working directory |
Nota:
- the `zip_paths` and `target_paths` are matched one-by-one, and must hence have the same length.
- the ZIP is first saved to a temporary location before extraction, consuming some disk space
- all content is extracted before selected items are moved, and the rest is deleted
You will find a sample below.
```toml
[files.assets.actions.ogvjs]
action="extract_items"
source="https://github.com/brion/ogv.js/releases/download/1.8.9/ogvjs-1.8.9.zip"
zip_paths=["ogvjs-1.8.9"]
target_paths=["ogvjs"]
remove=["ogvjs/COPYING", "ogvjs/*.txt", "ogvjs/README.md"]
```
### Full sample
A full example with two distinct sections and three actions in total is below.
Nota: The `touch` command in `execute_after` is not representative of what you would usually do ^^
```toml
[files.assets.config]
target_dir="src/hatch_openzim/templates/assets"
execute_after=[
"fix_ogvjs_dist .",
]
[files.assets.actions."jquery.min.js"]
action="get_file"
source="https://code.jquery.com/jquery-3.5.1.min.js"
target_file="jquery.min.js"
execute_after=[
"touch done.txt",
]
[files.assets.actions.chosen]
action="extract_all"
source="https://github.com/harvesthq/chosen/releases/download/v1.8.7/chosen_v1.8.7.zip"
target_dir="chosen"
remove=["docsupport", "chosen.proto.*", "*.html", "*.md"]
[files.videos.config]
target_dir="src/hatch_openzim/templates/videos"
[files.videos.actions.ogvjs]
action="extract_items"
source="https://github.com/brion/ogv.js/releases/download/1.8.9/ogvjs-1.8.9.zip"
zip_paths=["ogvjs-1.8.9"]
target_paths=["ogvjs"]
remove=["ogvjs/COPYING", "ogvjs/*.txt", "ogvjs/README.md"]
```
Raw data
{
"_id": null,
"home_page": null,
"name": "hatch-openzim",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.8",
"maintainer_email": null,
"keywords": "download, file, hatch, openzim, plugin",
"author": null,
"author_email": "openZIM <dev@openzim.org>",
"download_url": "https://files.pythonhosted.org/packages/25/7d/e3944fa05000cfbe782291c36d7f7532647f7984f0e9d9f15295a99e9df8/hatch_openzim-0.2.1.tar.gz",
"platform": null,
"description": "hatch-openzim\n=======\n\n[![Code Quality Status](https://github.com/openzim/hatch-openzim/workflows/QA/badge.svg?query=branch%3Amain)](https://github.com/openzim/hatch-openzim/actions/workflows/QA.yml?query=branch%3Amain)\n[![Tests Status](https://github.com/openzim/hatch-openzim/workflows/Tests/badge.svg?query=branch%3Amain)](https://github.com/openzim/hatch-openzim/actions/workflows/Tests.yml?query=branch%3Amain)\n[![CodeFactor](https://www.codefactor.io/repository/github/openzim/hatch-openzim/badge)](https://www.codefactor.io/repository/github/openzim/hatch-openzim)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![codecov](https://codecov.io/gh/openzim/hatch-openzim/branch/main/graph/badge.svg)](https://codecov.io/gh/openzim/hatch-openzim)\n\nThis provides a [Hatch](https://pypi.org/project/hatch/)(ling) plugin for common openZIM operations:\n- automatically populate common project metadatas\n- install static files (e.g. external JS dependencies) at build time\n\nThis plugin intentionally has few dependencies, using the Python standard library whenever possible and hence limiting footprint to a minimum.\n\nhatch-openzim adheres to openZIM's [Contribution Guidelines](https://github.com/openzim/overview/wiki/Contributing).\n\nhatch-openzim has implemented openZIM's [Python bootstrap, conventions and policies](https://github.com/openzim/_python-bootstrap/blob/main/docs/Policy.md) **v1.0.1**.\n\n## Quick start\n\nAssuming you have an openZIM project, you could use such a configuration in your `pyproject.toml`\n\n```toml\n# Use the hatchling build backend, with the hatch-openzim plugin.\n[build-system]\nrequires = [\"hatchling\", \"hatch-openzim\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"MyAwesomeScraper\"\nrequires-python = \">=3.11,<3.12\"\ndescription = \"Awesome scraper\"\nreadme = \"README.md\"\n\n# These project metadatas are dynamic because they will be generated from hatch-openzim\n# and version plugins.\ndynamic = [\"authors\", \"classifiers\", \"keywords\", \"license\", \"version\", \"urls\"]\n\n# Enable the hatch-openzim metadata hook to generate default openZIM metadata.\n[tool.hatch.metadata.hooks.openzim-metadata]\nadditional-keywords = [\"awesome\"] # some additional keywords\nkind = \"scraper\" # indicate this is a scraper, so that additional keywords are added\n\n# Additional author #1\n[[tool.hatch.metadata.hooks.openzim-metadata.additional-authors]]\nname=\"Bob\"\nemail=\"bob@acme.com\"\n\n# Additional author #2\n[[tool.hatch.metadata.hooks.openzim-metadata.additional-authors]]\nname=\"Alice\"\nemail=\"alice@acme.com\"\n\n# Enable the hatch-openzim build hook to install files (e.g. JS libs) at build time.\n[tool.hatch.build.hooks.openzim-build]\ntoml-config = \"openzim.toml\" # optional location of the configuration file\ndependencies = [ \"zimscraperlib==3.1.0\" ] # optional dependencies needed for file installations\n```\n\nNOTA: the `dependencies` attribute is not specific to our hook(s), it is a generic [hatch(ling) feature](https://hatch.pypa.io/1.9/config/build/#dependencies_1).\n\n## Metadata hook usage\n\n### Configuration (in `pyproject.toml`)\n\n| Variable | Required | Description |\n|---|---|---|\n| `additional-authors` | N | List of authors that will be appended to the automatic one |\n| `additional-classifiers` | N | List of classifiers that will be appended to the automatic ones |\n| `additional-keywords` | N | List of keywords that will be appended to the automatic ones |\n| `kind` | N | If set to `scraper`, scrapers keywords will be automatically added as well |\n| `organization` | N | Override organization (otherwise detected from Github repository to set author and keyword appropriately). Case-insentive. Supported values are `openzim`, `kiwix` and `offspot` |\n| `preserve-authors` | N | Boolean indicating that we do not want to set `authors` metadata but use the ones of `pyproject.toml` |\n| `preserve-classifiers` | N | Boolean indicating that we do not want to set `classifiers` metadata but use the ones of `pyproject.toml` |\n| `preserve-keywords` | N | Boolean indicating that we do not want to set `keywords` metadata but use the ones of `pyproject.toml` |\n| `preserve-license` | N | Boolean indicating that we do not want to set `license` metadata but use the one of `pyproject.toml` |\n| `preserve-urls` | N | Boolean indicating that we do not want to set `urls` metadata but use the ones of `pyproject.toml` |\n\n### Behavior\n\nThe metadata hook will set:\n\n- `authors` to `[{\"email\": \"dev@kiwix.org\", \"name\": \"Kiwix\"}]`\n- `classifiers` will contain:\n - `License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)`\n - all `Programming Language :: Python :: x` and `Programming Language :: Python :: x.y` matching the `required-versions`\n- `keywords` will contain:\n - at least `kiwix`\n - if `kind` is `scraper`, it will add `zim` and `offline`\n - and `additional-keywords` passed in the configuration\n- `license` to `{\"text\": \"GPL-3.0-or-later\"}`\n- `urls` to\n - `Donate`: `https://www.kiwix.org/en/support-us/`\n - `Homepage`: Github repository URL (e.g. `https://github.com/openzim/hatch-openzim`) if code is a git clone, otherwise `https://www.kiwix.org`\n\n\n## Build hook usage\n\n### High-level configuration (in `pyproject.toml`)\n\n| Variable | Required | Description |\n|---|---|---|\n| `toml-config` | N | Location of the configuration, default to `openzim.toml` |\n\n### Details configuration (in `openzim.toml`)\n\nThe build hook detailed configuration is done in a TOML file named `openzim.toml` (if not customized\n via `toml-config`, see above). This file must be placed your project root folder, next to your\n `pyproject.toml`.\n\nThe build hook supports to download web resources at various location at build time.\n\nTo configure, this you first have to create a `files` section in the `openzim.toml` configuration\nand declare its `config` configuration. Name of the section (`assets` in example below) is\nfree (do not forgot to escape it if you want to use special chars like `.` in the name).\n\n```toml\n[files.assets.config]\ntarget_dir=\"src/hatch_openzim/templates/assets\"\nexecute_after=[\n \"touch somewhere/something.txt\"\n]\n```\n\n| Variable | Required | Description |\n|---|---|---|\n| `target_dir` | Y | Base directory where all downloaded content will be placed |\n| `execute_after` | N | List of shell commands to execute once all actions (see below) have been executed; actions are executed with `target_dir` as current working directory |\n\n**Important:** The `execute_after` commands are **always** executed, no matter how many action are\n present or how many actions have been ignored (see below for details about why an action might be ignored).\n\nNota: The example `execute_after` command (`touch`) is not representative of what you would usually do ^^\n\nOnce this section configuration is done, you will then declare multiple actions. All\nactions in a given section share the same base configuration declared above.\n\nThree kinds of actions are supported:\n\n- `get_file`: downloads a file to a location\n- `extract_all`: extracts all content of a zip file to a location\n- `extract_items`: extracts some items of a zip file to some locations\n\nEach action is declared in its own TOML table. Action names are free.\n\n```toml\n[files.assets.actions.some_name]\naction=...\n```\n\n### `get_file` action configuration (in `openzim.toml`)\n\nThis action downloads a file to a location.\n\n**Important:** If `target_file` is already present, the action is not executed, it is simply ignored.\n\n| Variable | Required | Description |\n|---|---|---|\n| `action` | Y | Must be \"get_file\" |\n| `source`| Y | URL of the online resource to download |\n| `target_file` | Y | Relative path to the file target location, relative to the section `target_dir` |\n| `execute_after` | N | List of shell commands to execute once file installation is completed; actions are executed with the section `target_dir` as current working directory |\n\nYou will find a sample below.\n\n```toml\n[files.assets.actions.\"jquery.min.js\"]\naction=\"get_file\"\nsource=\"https://code.jquery.com/jquery-3.5.1.min.js\"\ntarget_file=\"jquery.min.js\"\n```\n\n### `extract_all` action configuration (in `openzim.toml`)\n\nThis action downloads a ZIP and extracts it to a location. Some items in the Zip content\ncan be removed afterwards.\n\n**Important:** If `target_dir` is already present, the action is not executed, it is simply ignored.\n\n| Variable | Required | Description |\n|---|---|---|\n| `action` | Y | Must be \"extract_all\" |\n| `source` | Y | URL of the online ZIP to download |\n| `target_dir` | Y | Relative path of the directory where ZIP content will be extracted, relative to the section `target_dir` |\n| `remove` | N | List of glob patterns of ZIP content to remove after extraction (relative to action `target_dir`) |\n| `execute_after` | N | List of shell commands to execute once files extraction is completed; actions are executed with the section `target_dir` as current working directory |\n\n\nYou will find a sample below.\n\nNota:\n- the ZIP is first saved to a temporary location before extraction, consuming some disk space\n\n```toml\n[files.assets.actions.chosen]\naction=\"extract_all\"\nsource=\"https://github.com/harvesthq/chosen/releases/download/v1.8.7/chosen_v1.8.7.zip\"\ntarget_dir=\"chosen\"\nremove=[\"docsupport\", \"chosen.proto.*\", \"*.html\", \"*.md\"]\n```\n\n### `extract_items` action configuration (in `openzim.toml`)\n\nThis action extracts a ZIP to a temporary directory, and move selected items to some locations.\nSome sub-items in the Zip content can be removed afterwards.\n\n**Important:** If any `target_paths` is already present, the action is not executed, it is simply ignored.\n\n| Variable | Required | Description |\n|---|---|---|\n| `action`| Y | Must be \"extract_all\" |\n| `source`| Y | URL of the online ZIP to download |\n| `zip_paths` | Y | List of relative path in ZIP to select |\n| `target_paths` | Y | Relative path of the target directory where selected items will be moved (relative to ZIP home folder) |\n| `remove` | N | List of glob patterns of ZIP content to remove after extraction (must include the necessary `target_paths`, they are relative to the section `target_dir`) |\n| `execute_after` | N | List of shell commands to execute once ZIP extraction is completed; actions are executed with the section `target_dir` as current working directory |\n\nNota:\n- the `zip_paths` and `target_paths` are matched one-by-one, and must hence have the same length.\n- the ZIP is first saved to a temporary location before extraction, consuming some disk space\n- all content is extracted before selected items are moved, and the rest is deleted\n\nYou will find a sample below.\n\n```toml\n[files.assets.actions.ogvjs]\naction=\"extract_items\"\nsource=\"https://github.com/brion/ogv.js/releases/download/1.8.9/ogvjs-1.8.9.zip\"\nzip_paths=[\"ogvjs-1.8.9\"]\ntarget_paths=[\"ogvjs\"]\nremove=[\"ogvjs/COPYING\", \"ogvjs/*.txt\", \"ogvjs/README.md\"]\n```\n\n### Full sample\n\nA full example with two distinct sections and three actions in total is below.\n\nNota: The `touch` command in `execute_after` is not representative of what you would usually do ^^\n\n```toml\n[files.assets.config]\ntarget_dir=\"src/hatch_openzim/templates/assets\"\nexecute_after=[\n \"fix_ogvjs_dist .\",\n]\n\n[files.assets.actions.\"jquery.min.js\"]\naction=\"get_file\"\nsource=\"https://code.jquery.com/jquery-3.5.1.min.js\"\ntarget_file=\"jquery.min.js\"\nexecute_after=[\n \"touch done.txt\",\n]\n\n[files.assets.actions.chosen]\naction=\"extract_all\"\nsource=\"https://github.com/harvesthq/chosen/releases/download/v1.8.7/chosen_v1.8.7.zip\"\ntarget_dir=\"chosen\"\nremove=[\"docsupport\", \"chosen.proto.*\", \"*.html\", \"*.md\"]\n\n[files.videos.config]\ntarget_dir=\"src/hatch_openzim/templates/videos\"\n\n[files.videos.actions.ogvjs]\naction=\"extract_items\"\nsource=\"https://github.com/brion/ogv.js/releases/download/1.8.9/ogvjs-1.8.9.zip\"\nzip_paths=[\"ogvjs-1.8.9\"]\ntarget_paths=[\"ogvjs\"]\nremove=[\"ogvjs/COPYING\", \"ogvjs/*.txt\", \"ogvjs/README.md\"]\n```\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "openZIM hatch plugin to set metadata automatically and download files at build time",
"version": "0.2.1",
"project_urls": {
"Donate": "https://www.kiwix.org/en/support-us/",
"Homepage": "https://github.com/openzim/hatch-openzim"
},
"split_keywords": [
"download",
" file",
" hatch",
" openzim",
" plugin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "eb1aaa2d9b5bd957544d2c9f2094e8c6f433281778a803d5b7b40d7a1de61d1d",
"md5": "b2933dbd71ef7d813f4ab253ef5d4212",
"sha256": "de4bf87564b0d9551eb17444a3d0f06c53af707a2bcb84d40a97779dcb371fc0"
},
"downloads": -1,
"filename": "hatch_openzim-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b2933dbd71ef7d813f4ab253ef5d4212",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.8",
"size": 24462,
"upload_time": "2024-05-06T10:04:54",
"upload_time_iso_8601": "2024-05-06T10:04:54.222377Z",
"url": "https://files.pythonhosted.org/packages/eb/1a/aa2d9b5bd957544d2c9f2094e8c6f433281778a803d5b7b40d7a1de61d1d/hatch_openzim-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "257de3944fa05000cfbe782291c36d7f7532647f7984f0e9d9f15295a99e9df8",
"md5": "089c07fb81b58fcff6f26e181db3d456",
"sha256": "b2bfca9e9a2eca7ba46314a61ac0ff3bb3fe84055e9cf80368fb6367e1fd934c"
},
"downloads": -1,
"filename": "hatch_openzim-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "089c07fb81b58fcff6f26e181db3d456",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.8",
"size": 30555,
"upload_time": "2024-05-06T10:04:55",
"upload_time_iso_8601": "2024-05-06T10:04:55.818297Z",
"url": "https://files.pythonhosted.org/packages/25/7d/e3944fa05000cfbe782291c36d7f7532647f7984f0e9d9f15295a99e9df8/hatch_openzim-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-06 10:04:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openzim",
"github_project": "hatch-openzim",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "hatch-openzim"
}