{"id":16499186,"url":"https://github.com/hardbyte/python-evnex","last_synced_at":"2025-10-11T10:03:41.391Z","repository":{"id":59798689,"uuid":"532873023","full_name":"hardbyte/python-evnex","owner":"hardbyte","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-23T07:47:34.000Z","size":200,"stargazers_count":7,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-23T09:27:03.969Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hardbyte.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-05T11:36:34.000Z","updated_at":"2025-09-23T07:47:37.000Z","dependencies_parsed_at":"2023-12-05T07:24:53.998Z","dependency_job_id":"73361c83-863b-445a-acb9-fa748ca1889c","html_url":"https://github.com/hardbyte/python-evnex","commit_stats":{"total_commits":60,"total_committers":5,"mean_commits":12.0,"dds":"0.15000000000000002","last_synced_commit":"79b98668b27131d08282a223e41b21fdc0924e0d"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/hardbyte/python-evnex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardbyte%2Fpython-evnex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardbyte%2Fpython-evnex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardbyte%2Fpython-evnex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardbyte%2Fpython-evnex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hardbyte","download_url":"https://codeload.github.com/hardbyte/python-evnex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardbyte%2Fpython-evnex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006831,"owners_count":26084203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T14:51:26.629Z","updated_at":"2025-10-11T10:03:41.385Z","avatar_url":"https://github.com/hardbyte.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# python-evnex\n\n[![CI](https://github.com/hardbyte/python-evnex/actions/workflows/ci.yml/badge.svg)](https://github.com/hardbyte/python-evnex/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/evnex.svg)](https://pypi.org/project/evnex/)\n\nPython client for the Evnex API.\n\nAuthor not affiliated with Evnex.\n\n## Features \n\n- Talks to your Evnex charger via Cloud API\n- Automatic retries with exponential backoff\n- Automatic re-authentication\n- Optionally pass in a `httpx` client\n- Optionally pass in tokens to resume an existing session\n\n## Installation\n\n```\npip install evnex\n```\n\n**Requirements:** Python 3.11+\n\n\n## Usage\n\n```python\nimport asyncio\nfrom pydantic import SecretStr\nfrom pydantic_settings import BaseSettings\nfrom evnex.api import Evnex\n\n\nclass EvnexAuthDetails(BaseSettings):\n    EVNEX_CLIENT_USERNAME: str\n    EVNEX_CLIENT_PASSWORD: SecretStr\n\n\nasync def main():\n    creds = EvnexAuthDetails()\n    evnex = Evnex(username=creds.EVNEX_CLIENT_USERNAME,\n                  password=creds.EVNEX_CLIENT_PASSWORD.get_secret_value())\n\n    user_data = await evnex.get_user_detail()\n\n    for org in user_data.organisations:\n        print(\"Getting 7 day insight for\", org.name, \"User:\", user_data.name)\n        insights = await evnex.get_org_insight(days=7, org_id=org.id)\n\n        for segment in insights:\n            print(segment)\n\n\nif __name__ == '__main__':\n    asyncio.run(main())\n```\n\n## Examples\n\n`python-evnex` is intended as a library, but a few example scripts are provided in the `examples` folder.\n\nProviding authentication for the examples is via environment variables, e.g. on nix systems:\n\n```\nexport EVNEX_CLIENT_USERNAME=you@example.com\nexport EVNEX_CLIENT_PASSWORD=\u003cyour password\u003e\n\npython -m examples.get_charge_point_detail\n```\n\n## Developer Notes\n\n### Development Setup\n\n```shell\n# Install dependencies with development tools\nuv sync --group dev\n\n# Set up pre-commit hooks (recommended)\nuv run pre-commit install\n\n# Alternatively, format and lint manually\nuv run ruff format .\nuv run ruff check .\n```\n\n### Making a new release\n\nWhat ends up on PyPi is what really matters. Creating a release in GitHub triggers a release workflow that builds and publishes to PyPi.\n\nTo manually release, update the version in `pyproject.toml`, build and publish with uv:\n\n```shell\nuv build\nuv publish\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardbyte%2Fpython-evnex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhardbyte%2Fpython-evnex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardbyte%2Fpython-evnex/lists"}