Metadata-Version: 2.1
Name: sparecores-crawler
Version: 0.3.1
Summary: Pull and standardize data on cloud compute resources.
Author: Attila Nagy, Gergely Daroczi, Balazs Hodobay
Maintainer-email: Spare Cores team <pkg@sparecores.com>
Project-URL: repository, https://github.com/SpareCores/sc-crawler
Project-URL: issues, https://github.com/SpareCores/sc-crawler/issues
Project-URL: documentation, https://sparecores.github.io/sc-crawler/
Project-URL: homepage, https://sparecores.com
Keywords: cloud,compute,etl,sqlite,spot-instances,cost-optimization
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: alembic
Requires-Dist: cachier >=3.1.1
Requires-Dist: pydantic
Requires-Dist: pydantic-extra-types
Requires-Dist: requests
Requires-Dist: rich
Requires-Dist: sqlmodel
Requires-Dist: typer
Provides-Extra: all
Requires-Dist: sparecores-crawler[testing] ; extra == 'all'
Requires-Dist: sparecores-crawler[vendors] ; extra == 'all'
Provides-Extra: aws
Requires-Dist: boto3 ; extra == 'aws'
Provides-Extra: azure
Requires-Dist: azure-identity ; extra == 'azure'
Requires-Dist: azure-mgmt-resource ; extra == 'azure'
Requires-Dist: azure-mgmt-compute ; extra == 'azure'
Provides-Extra: gcp
Requires-Dist: google-cloud ; extra == 'gcp'
Requires-Dist: google-cloud-compute ; extra == 'gcp'
Requires-Dist: google-cloud-billing ; extra == 'gcp'
Provides-Extra: hcloud
Requires-Dist: hcloud ; extra == 'hcloud'
Provides-Extra: mkdocs
Requires-Dist: markdown ==3.5.2 ; extra == 'mkdocs'
Requires-Dist: mkdocs ; extra == 'mkdocs'
Requires-Dist: mkdocs-material[imaging] ==9.5.13 ; extra == 'mkdocs'
Requires-Dist: mkdocs-material-extensions ; extra == 'mkdocs'
Requires-Dist: mkdocs-autorefs ; extra == 'mkdocs'
Requires-Dist: mkdocs-gen-files ; extra == 'mkdocs'
Requires-Dist: mkdocs-literate-nav ; extra == 'mkdocs'
Requires-Dist: mkdocs-section-index ; extra == 'mkdocs'
Requires-Dist: mkdocstrings[python] >=0.18 ; extra == 'mkdocs'
Requires-Dist: griffe ==0.49.0 ; extra == 'mkdocs'
Requires-Dist: griffe-inherited-docstrings ; extra == 'mkdocs'
Provides-Extra: testing
Requires-Dist: pytest ; extra == 'testing'
Requires-Dist: sparecores-crawler[mkdocs] ; extra == 'testing'
Provides-Extra: vendors
Requires-Dist: sparecores-crawler[aws] ; extra == 'vendors'
Requires-Dist: sparecores-crawler[hcloud] ; extra == 'vendors'
Requires-Dist: sparecores-crawler[gcp] ; extra == 'vendors'
Requires-Dist: sparecores-crawler[azure] ; extra == 'vendors'

## Spare Cores Crawler

[![Build](https://img.shields.io/github/actions/workflow/status/SpareCores/sc-crawler/tests.yaml)](https://github.com/SpareCores/sc-crawler/actions/workflows/tests.yaml)
<picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/status-alpha-blue"><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/status-alpha-blue"><img alt="Project Status: Alpha" src="https://img.shields.io/badge/status-alpha-blue"></picture>
<picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/maintenance/yes/2024"><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/maintenance/yes/2024"><img alt="Maintenance Status: Active" src="https://img.shields.io/maintenance/yes/2024"></picture>
[![MPL 2.0 License](https://img.shields.io/github/license/SpareCores/sc-crawler)](https://github.com/SpareCores/sc-crawler/blob/main/LICENSE)
[![PyPI - Python Version](https://img.shields.io/pypi/v/sparecores-crawler?logo=python&logoColor=ffdd54)](https://pypi.org/project/sparecores-crawler/)
[![NGI Search Open Call 3 beneficiary](https://img.shields.io/badge/NGI%20Search-Open%20Call%20%233-blue?logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMi4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxODBweCIgaGVpZ2h0PSIxODBweCIgdmlld0JveD0iMCAwIDE4MCAxODAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE4MCAxODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8yXyk7fQ0KCS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNF8pO2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQ0KCS5zdDJ7ZmlsbDp1cmwoI1NWR0lEXzZfKTt9DQoJLnN0M3tmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnPg0KCQk8ZGVmcz4NCgkJCTxwYXRoIGlkPSJTVkdJRF8xXyIgZD0iTTkwLDVDNDMuMiw1LDUsNDMuMiw1LDkwdjBjMCw0Ni43LDM4LjIsODUsODUsODVoMGM0Ni43LDAsODUtMzguMiw4NS04NXYwQzE3NSw0My4yLDEzNi44LDUsOTAsNUw5MCw1eiINCgkJCQkvPg0KCQk8L2RlZnM+DQoJCTxjbGlwUGF0aCBpZD0iU1ZHSURfMl8iPg0KCQkJPHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz4NCgkJPC9jbGlwUGF0aD4NCgkJPGcgY2xhc3M9InN0MCI+DQoJCQk8Zz4NCgkJCQk8ZGVmcz4NCgkJCQkJPHJlY3QgaWQ9IlNWR0lEXzNfIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIvPg0KCQkJCTwvZGVmcz4NCgkJCQk8Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj4NCgkJCQkJPHVzZSB4bGluazpocmVmPSIjU1ZHSURfM18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz4NCgkJCQk8L2NsaXBQYXRoPg0KCQkJCQ0KCQkJCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzVfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0zMjQuNTY0MyIgeTE9IjIxMi4yNTg1IiB4Mj0iLTMyMy4zOTAzIiB5Mj0iMjEyLjI1ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTE1NS40ODE5IDE1MS4wOTY2IC0xNTEuMDk2NiAtMTU1LjQ4MTkgLTE4MjExLjA1ODYgODIwNDQuMjI2NikiPg0KCQkJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRTUzNTAwIi8+DQoJCQkJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiM1MDAwMkQiLz4NCgkJCQk8L2xpbmVhckdyYWRpZW50Pg0KCQkJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMjcwLDkyLjYgODcuNCwyNzAgLTkwLDg3LjQgOTIuNiwtOTAgCQkJCSIvPg0KCQkJPC9nPg0KCQk8L2c+DQoJCTxnIGNsYXNzPSJzdDAiPg0KCQkJDQoJCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItMzM3Ljg2MDYiIHkxPSIxOTguNzY1NSIgeDI9Ii0zMzguMzY1MiIgeTI9IjE5OC43NzI3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xMjEuNzc5NCAxMTguMzQ0NiAtMTE4LjM0NDYgLTEyMS43Nzk0IC0xNzU2MS45Mzc1IDY0MzA5LjgxMjUpIj4NCgkJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojNTAwMDJEIi8+DQoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0U1MzUwMCIvPg0KCQkJPC9saW5lYXJHcmFkaWVudD4NCgkJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDUuNiw4OC4yVjYzLjhjMC00LjMsMy41LTcuOCw3LjgtNy44aDBjNC4zLDAsNy44LDMuNSw3LjgsNy44djUyLjRjMCw0LjMtMy41LDcuOC03LjgsNy44aC0xLjUNCgkJCQljLTIuMywwLTQuNS0xLTYtMi44TDgwLjEsODkuN2MtMS45LTIuMy01LjctMS01LjcsMnYyNC41YzAsNC4zLTMuNSw3LjgtNy44LDcuOHMtNy44LTMuNS03LjgtNy44VjYzLjhjMC00LjMsMy41LTcuOCw3LjgtNy44DQoJCQkJaDEuNmMyLjMsMCw0LjUsMSw2LDIuOGwyNS43LDMxLjRDMTAxLjgsOTIuNiwxMDUuNiw5MS4zLDEwNS42LDg4LjJ6Ii8+DQoJCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNNjguMiw1NmgtMS42Yy00LjMsMC03LjgsMy41LTcuOCw3Ljh2NTIuNGMwLDQuMywzLjUsNy44LDcuOCw3LjhzNy44LTMuNSw3LjgtNy44VjkxLjdjMC0zLDMuOC00LjQsNS43LTINCgkJCQlsMjUuOCwzMS41YzEuNSwxLjgsMy43LDIuOCw2LDIuOGgxLjVjNC4zLDAsNy44LTMuNSw3LjgtNy44VjYzLjhjMC00LjMtMy41LTcuOC03LjgtNy44aDBjLTQuMywwLTcuOCwzLjUtNy44LDcuOHYyNC41DQoJCQkJYzAsMy0zLjgsNC40LTUuNywyTDc0LjIsNTguOUM3Mi43LDU3LjEsNzAuNSw1Niw2OC4yLDU2eiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=)](https://www.ngisearch.eu/view/Events/OC3Searchers)

SC Crawler is a Python package to pull and standardize data on cloud
compute resources, with tooling to help organize and update the
collected data into databases.

## Installation

Stable version from PyPI:

```
pip install sparecores-crawler
```

Most recent version from GitHub:

```
pip install "sparecores-crawler @ git+https://git@github.com/SpareCores/sc-crawler.git"
```

## References

- [Package documentation](https://sparecores.github.io/sc-crawler/)
- [Database schemas](https://dbdocs.io/spare-cores/sc-crawler)
- [Latest SQLite database release](https://sc-data-public-40e9d310.s3.amazonaws.com/sc-data-all.db.bz2)
- [sparecores.com](https://sparecores.com)
