plombery


Nameplombery JSON
Version 0.4.1 PyPI version JSON
download
home_page
SummaryPython task scheduler with a user-friendly web UI
upload_time2023-10-11 15:39:02
maintainer
docs_urlNone
author
requires_python>=3.8
licenseMIT
keywords pipeline task-scheduler apscheduler orchestrator web-ui fastapi pydantic
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->

<a name="readme-top"></a>

<!-- PROJECT SHIELDS -->
<!--
*** I'm using markdown "reference style" links for readability.
*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).
*** See the bottom of this document for the declaration of the reference variables
*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.
*** https://www.markdownguide.org/basic-syntax/#reference-style-links
-->

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![PyPI Version][pypi-shield]][pypi-url]
[![Code Climate][CodeClimate-shield]][CodeClimate-url]

<!-- PROJECT LOGO -->
<br />
<div align="center">
<h3 align="center">Plombery</h3>

  <p align="center">
    Python task scheduler with a user-friendly web UI
    <br />
    <a href="https://lucafaggianelli.github.io/plombery/"><strong>Official website ยป</strong></a>
    <br />
    <br />
    <a href="https://github.com/lucafaggianelli/plombery">GitHub</a>
    ยท
    <a href="https://github.com/lucafaggianelli/plombery/issues">Report Bug</a>
  </p>
</div>

<!-- ABOUT THE PROJECT -->

## About The Project

Plombery is a simple task scheduler for Python with a web UI and a REST API,
if you need to run and monitor recurring python scripts then it's
the right tool for you!

<figure>
  <img src="https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/screenshot.png" alt="Plombery Screen Shot">
</figure>

> This project is at its beginning, so it can be shaped and improved with
> your feedback and help!
> If you like it, star it ๐ŸŒŸ! If you want a feature or find a bug, open an issue.

## Features

- โฐ Task scheduling based on [APScheduler](https://github.com/agronholm/apscheduler) (supports Interval, Cron and Date triggers)
- ๐Ÿ’ป Built-in Web interface, no HTML/JS/CSS coding required
- ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ Pipelines and tasks are defined in pure Python
- ๐ŸŽ›๏ธ Pipelines can be parametrized via [Pydantic](https://docs.pydantic.dev/)
- ๐Ÿ‘‰ Pipelines can be run manually from the web UI
- ๐Ÿ” Secured via OAuth2
- ๐Ÿ” Debug each run exploring logs and output data
- ๐Ÿ“ฉ Monitor the pipelines and get alerted if something goes wrong
- ๐Ÿ’ฃ Use the REST API for advanced integrations

When you shouldn't use it:

- you need a lot of scalability and you want to run on a distributed system
- you want a no-code tool or you don't want to use Python

<p align="right">(<a href="#readme-top">back to top</a>)</p>

### Built With

[![Python][Python]][Python-url]
[![TypeScript][TypeScript]][TypeScript-url]
[![React][React.js]][React-url]

<p align="right">(<a href="#readme-top">back to top</a>)</p>

<!-- GETTING STARTED -->

## ๐Ÿš€ Getting Started

Check the ๐Ÿ‘‰ [official website](https://lucafaggianelli.github.io/plombery/)
to get started with Plombery.

## ๐ŸŽฎ Try on GitHub Codespaces

Try Plombery with some demo pipelines on GitHub Codespaces:

<figure align="center">
  <img src="https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/codespaces.png" alt="Get Started on Codespaces">
</figure>

Codespaces are development environments that run in the cloud so you
can run a project without cloning it, installing deps etc, here's an how
to:

- Go to the the [lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery) GitHub page
- Click on the green **Code** button on the top right
- Choose the **Codespaces** tab
- Click on *create new codespace from main* or reuse an existing one
- A new page will open at `github.dev`, wait for the environment build
- Once your codespace is ready you'll see an interface similar to VSCode
- Some commands will be run in the terminal to build the frontend etc., wait for their completion
- If everything went well, Plombery home page will be open in a new browser tab
- Changes in the Python code will be immediately reflected in the web page, like if you were developing
  on your laptop

## ๐Ÿง Show me the code

This is how it looks a minimalist pipeline:

<figure align="center">
  <img src="https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/minimal-code.png" alt="Minimal code" width="80%">
  <figcaption>I know you want to see it!</figcaption>
</figure>

<!-- ROADMAP -->

## ๐Ÿ›ฃ Roadmap

See the [open issues](https://github.com/lucafaggianelli/plombery/issues) for a full list of proposed features (and known issues).

<p align="right">(<a href="#readme-top">back to top</a>)</p>

<!-- CONTRIBUTING -->

## ๐Ÿ‘ฉโ€๐Ÿ’ป Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

<p align="right">(<a href="#readme-top">back to top</a>)</p>

### Development

Clone a fork of this repo and start your dev environment.

Create a python virtual environment:

```sh
python -m venv .venv
# on Mac/Linux
source .venv/bin/activate
# on Win
.venv/Script/activate
```

and install the dependencies:

```sh
pip install -r requirements.txt
pip install -r requirements-dev.txt
```

for development purposes, it's useful to run the example application:

```sh
cd examples/

# Create a venv for the example app
python -m venv .venv
source .venv/bin/activate
pip install -r requirements

./run.sh
# or ./run.ps1 on windows
```

The React frontend is in the `frontend/` folder, enter the folder
and install the dependencies:

```sh
cd frontend/
# The project uses yarn as dependency manager, if you don't have
# it, you must install it.
# This command will install the deps:
yarn
```

run the development server:

```sh
yarn dev
```

### Documentation

The documentation website is based on MkDocs Material, the source code is in the
`docs/` folder and the config is in the `mkdocs.yml` file.

To run a local dev server, run:

```
mkdocs serve
```

### Testing

Tests are based on `pytest`, to run the entire suite just run:

```sh
pytest
```

To run tests coverage, run:

```sh
coverage run -m pytest
coverage report -m
```

<!-- LICENSE -->

## License

Distributed under the MIT License. See `LICENSE.txt` for more information.

<p align="right">(<a href="#readme-top">back to top</a>)</p>

<!-- CONTACT -->

## Contact

Project Link: [https://github.com/lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery)

<p align="right">(<a href="#readme-top">back to top</a>)</p>

<!-- ACKNOWLEDGMENTS -->

## Acknowledgments

Plombery is built on top of amazing techs:

- [FastAPI](https://fastapi.tiangolo.com/)
- [Pydantic](https://docs.pydantic.dev/)
- [APScheduler](https://apscheduler.readthedocs.io/)
- [Apprise](https://github.com/caronc/apprise)
- [React](https://react.dev/)
- [Vite](https://vitejs.dev/)
- [Tremor](https://www.tremor.so/)

<p align="right">(<a href="#readme-top">back to top</a>)</p>

## Star History

<a href="https://star-history.com/#lucafaggianelli/plombery&Date">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date&theme=dark" />
    <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date" />
    <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date" />
  </picture>
</a>


<!-- MARKDOWN LINKS & IMAGES -->
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->

[contributors-shield]: https://img.shields.io/github/contributors/lucafaggianelli/plombery.svg?style=for-the-badge
[contributors-url]: https://github.com/lucafaggianelli/plombery/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/lucafaggianelli/plombery.svg?style=for-the-badge
[forks-url]: https://github.com/lucafaggianelli/plombery/network/members
[stars-shield]: https://img.shields.io/github/stars/lucafaggianelli/plombery.svg?style=for-the-badge
[stars-url]: https://github.com/lucafaggianelli/plombery/stargazers
[issues-shield]: https://img.shields.io/github/issues/lucafaggianelli/plombery.svg?style=for-the-badge
[issues-url]: https://github.com/lucafaggianelli/plombery/issues
[license-shield]: https://img.shields.io/github/license/lucafaggianelli/plombery.svg?style=for-the-badge
[license-url]: https://github.com/lucafaggianelli/plombery/blob/master/LICENSE
[product-screenshot]: images/screenshot.png
[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB
[React-url]: https://reactjs.org/
[Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=yellow
[Python-url]: https://www.python.org/
[TypeScript]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white
[TypeScript-url]: https://www.typescriptlang.org/
[pypi-shield]: https://img.shields.io/pypi/v/plombery.svg?style=for-the-badge
[pypi-url]: https://pypi.python.org/pypi/plombery
[CodeClimate-shield]: https://codeclimate.com/github/lucafaggianelli/plombery.png?style=for-the-badge
[CodeClimate-url]: https://codeclimate.com/github/lucafaggianelli/plombery

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "plombery",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "pipeline,task-scheduler,apscheduler,orchestrator,web-ui,fastapi,pydantic",
    "author": "",
    "author_email": "Luca Faggianelli <luca@velvetlab.tech>",
    "download_url": "https://files.pythonhosted.org/packages/91/b3/963e13ed29827243320ec914322765435547aba103ba538e9702237478a2/plombery-0.4.1.tar.gz",
    "platform": null,
    "description": "<!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->\n\n<a name=\"readme-top\"></a>\n\n<!-- PROJECT SHIELDS -->\n<!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n-->\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![PyPI Version][pypi-shield]][pypi-url]\n[![Code Climate][CodeClimate-shield]][CodeClimate-url]\n\n<!-- PROJECT LOGO -->\n<br />\n<div align=\"center\">\n<h3 align=\"center\">Plombery</h3>\n\n  <p align=\"center\">\n    Python task scheduler with a user-friendly web UI\n    <br />\n    <a href=\"https://lucafaggianelli.github.io/plombery/\"><strong>Official website \u00bb</strong></a>\n    <br />\n    <br />\n    <a href=\"https://github.com/lucafaggianelli/plombery\">GitHub</a>\n    \u00b7\n    <a href=\"https://github.com/lucafaggianelli/plombery/issues\">Report Bug</a>\n  </p>\n</div>\n\n<!-- ABOUT THE PROJECT -->\n\n## About The Project\n\nPlombery is a simple task scheduler for Python with a web UI and a REST API,\nif you need to run and monitor recurring python scripts then it's\nthe right tool for you!\n\n<figure>\n  <img src=\"https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/screenshot.png\" alt=\"Plombery Screen Shot\">\n</figure>\n\n> This project is at its beginning, so it can be shaped and improved with\n> your feedback and help!\n> If you like it, star it \ud83c\udf1f! If you want a feature or find a bug, open an issue.\n\n## Features\n\n- \u23f0 Task scheduling based on [APScheduler](https://github.com/agronholm/apscheduler) (supports Interval, Cron and Date triggers)\n- \ud83d\udcbb Built-in Web interface, no HTML/JS/CSS coding required\n- \ud83d\udc69\u200d\ud83d\udcbb\ud83d\udc0d Pipelines and tasks are defined in pure Python\n- \ud83c\udf9b\ufe0f Pipelines can be parametrized via [Pydantic](https://docs.pydantic.dev/)\n- \ud83d\udc49 Pipelines can be run manually from the web UI\n- \ud83d\udd10 Secured via OAuth2\n- \ud83d\udd0d Debug each run exploring logs and output data\n- \ud83d\udce9 Monitor the pipelines and get alerted if something goes wrong\n- \ud83d\udca3 Use the REST API for advanced integrations\n\nWhen you shouldn't use it:\n\n- you need a lot of scalability and you want to run on a distributed system\n- you want a no-code tool or you don't want to use Python\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n### Built With\n\n[![Python][Python]][Python-url]\n[![TypeScript][TypeScript]][TypeScript-url]\n[![React][React.js]][React-url]\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n<!-- GETTING STARTED -->\n\n## \ud83d\ude80 Getting Started\n\nCheck the \ud83d\udc49 [official website](https://lucafaggianelli.github.io/plombery/)\nto get started with Plombery.\n\n## \ud83c\udfae Try on GitHub Codespaces\n\nTry Plombery with some demo pipelines on GitHub Codespaces:\n\n<figure align=\"center\">\n  <img src=\"https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/codespaces.png\" alt=\"Get Started on Codespaces\">\n</figure>\n\nCodespaces are development environments that run in the cloud so you\ncan run a project without cloning it, installing deps etc, here's an how\nto:\n\n- Go to the the [lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery) GitHub page\n- Click on the green **Code** button on the top right\n- Choose the **Codespaces** tab\n- Click on *create new codespace from main* or reuse an existing one\n- A new page will open at `github.dev`, wait for the environment build\n- Once your codespace is ready you'll see an interface similar to VSCode\n- Some commands will be run in the terminal to build the frontend etc., wait for their completion\n- If everything went well, Plombery home page will be open in a new browser tab\n- Changes in the Python code will be immediately reflected in the web page, like if you were developing\n  on your laptop\n\n## \ud83e\uddd0 Show me the code\n\nThis is how it looks a minimalist pipeline:\n\n<figure align=\"center\">\n  <img src=\"https://github.com/lucafaggianelli/plombery/raw/main/docs/assets/images/minimal-code.png\" alt=\"Minimal code\" width=\"80%\">\n  <figcaption>I know you want to see it!</figcaption>\n</figure>\n\n<!-- ROADMAP -->\n\n## \ud83d\udee3 Roadmap\n\nSee the [open issues](https://github.com/lucafaggianelli/plombery/issues) for a full list of proposed features (and known issues).\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n<!-- CONTRIBUTING -->\n\n## \ud83d\udc69\u200d\ud83d\udcbb Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n### Development\n\nClone a fork of this repo and start your dev environment.\n\nCreate a python virtual environment:\n\n```sh\npython -m venv .venv\n# on Mac/Linux\nsource .venv/bin/activate\n# on Win\n.venv/Script/activate\n```\n\nand install the dependencies:\n\n```sh\npip install -r requirements.txt\npip install -r requirements-dev.txt\n```\n\nfor development purposes, it's useful to run the example application:\n\n```sh\ncd examples/\n\n# Create a venv for the example app\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements\n\n./run.sh\n# or ./run.ps1 on windows\n```\n\nThe React frontend is in the `frontend/` folder, enter the folder\nand install the dependencies:\n\n```sh\ncd frontend/\n# The project uses yarn as dependency manager, if you don't have\n# it, you must install it.\n# This command will install the deps:\nyarn\n```\n\nrun the development server:\n\n```sh\nyarn dev\n```\n\n### Documentation\n\nThe documentation website is based on MkDocs Material, the source code is in the\n`docs/` folder and the config is in the `mkdocs.yml` file.\n\nTo run a local dev server, run:\n\n```\nmkdocs serve\n```\n\n### Testing\n\nTests are based on `pytest`, to run the entire suite just run:\n\n```sh\npytest\n```\n\nTo run tests coverage, run:\n\n```sh\ncoverage run -m pytest\ncoverage report -m\n```\n\n<!-- LICENSE -->\n\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n<!-- CONTACT -->\n\n## Contact\n\nProject Link: [https://github.com/lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery)\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n<!-- ACKNOWLEDGMENTS -->\n\n## Acknowledgments\n\nPlombery is built on top of amazing techs:\n\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [Pydantic](https://docs.pydantic.dev/)\n- [APScheduler](https://apscheduler.readthedocs.io/)\n- [Apprise](https://github.com/caronc/apprise)\n- [React](https://react.dev/)\n- [Vite](https://vitejs.dev/)\n- [Tremor](https://www.tremor.so/)\n\n<p align=\"right\">(<a href=\"#readme-top\">back to top</a>)</p>\n\n## Star History\n\n<a href=\"https://star-history.com/#lucafaggianelli/plombery&Date\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date&theme=dark\" />\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date\" />\n    <img alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=lucafaggianelli/plombery&type=Date\" />\n  </picture>\n</a>\n\n\n<!-- MARKDOWN LINKS & IMAGES -->\n<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->\n\n[contributors-shield]: https://img.shields.io/github/contributors/lucafaggianelli/plombery.svg?style=for-the-badge\n[contributors-url]: https://github.com/lucafaggianelli/plombery/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/lucafaggianelli/plombery.svg?style=for-the-badge\n[forks-url]: https://github.com/lucafaggianelli/plombery/network/members\n[stars-shield]: https://img.shields.io/github/stars/lucafaggianelli/plombery.svg?style=for-the-badge\n[stars-url]: https://github.com/lucafaggianelli/plombery/stargazers\n[issues-shield]: https://img.shields.io/github/issues/lucafaggianelli/plombery.svg?style=for-the-badge\n[issues-url]: https://github.com/lucafaggianelli/plombery/issues\n[license-shield]: https://img.shields.io/github/license/lucafaggianelli/plombery.svg?style=for-the-badge\n[license-url]: https://github.com/lucafaggianelli/plombery/blob/master/LICENSE\n[product-screenshot]: images/screenshot.png\n[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB\n[React-url]: https://reactjs.org/\n[Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=yellow\n[Python-url]: https://www.python.org/\n[TypeScript]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white\n[TypeScript-url]: https://www.typescriptlang.org/\n[pypi-shield]: https://img.shields.io/pypi/v/plombery.svg?style=for-the-badge\n[pypi-url]: https://pypi.python.org/pypi/plombery\n[CodeClimate-shield]: https://codeclimate.com/github/lucafaggianelli/plombery.png?style=for-the-badge\n[CodeClimate-url]: https://codeclimate.com/github/lucafaggianelli/plombery\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python task scheduler with a user-friendly web UI",
    "version": "0.4.1",
    "project_urls": null,
    "split_keywords": [
        "pipeline",
        "task-scheduler",
        "apscheduler",
        "orchestrator",
        "web-ui",
        "fastapi",
        "pydantic"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ff60362b02d3f71b6d35f63f2ba77ecaf4a3c1fb34e568bc5a0a6b3e5a39906f",
                "md5": "e9df14a078d9f3d0c47e873b689cef03",
                "sha256": "6239662c9d9930a3ae3914057d07124b7ed5efbdfb34dc62f037f7df386b6ebe"
            },
            "downloads": -1,
            "filename": "plombery-0.4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e9df14a078d9f3d0c47e873b689cef03",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 625507,
            "upload_time": "2023-10-11T15:39:00",
            "upload_time_iso_8601": "2023-10-11T15:39:00.497275Z",
            "url": "https://files.pythonhosted.org/packages/ff/60/362b02d3f71b6d35f63f2ba77ecaf4a3c1fb34e568bc5a0a6b3e5a39906f/plombery-0.4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "91b3963e13ed29827243320ec914322765435547aba103ba538e9702237478a2",
                "md5": "f36e68073d571c7e9c729e364fb3c5c9",
                "sha256": "26bc9e74db6fa1f16af1270ab74662d846a28ac2dd600f789fcd6ff807e67a51"
            },
            "downloads": -1,
            "filename": "plombery-0.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "f36e68073d571c7e9c729e364fb3c5c9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 619671,
            "upload_time": "2023-10-11T15:39:02",
            "upload_time_iso_8601": "2023-10-11T15:39:02.356614Z",
            "url": "https://files.pythonhosted.org/packages/91/b3/963e13ed29827243320ec914322765435547aba103ba538e9702237478a2/plombery-0.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-11 15:39:02",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "plombery"
}
        
Elapsed time: 1.74710s