# PyMagento
[![PyPI version](https://img.shields.io/pypi/v/pymagento)](https://pypi.org/project/pymagento/) [![PyPI downloads](https://img.shields.io/pypi/dm/pymagento)](https://pypi.org/project/pymagento/)
**PyMagento** is a Python client for the Magento 2 API. Its goal is to provide an easy-to-use Pythonic interface
to the Magento 2 API, while being lightweight and extendable.
* [Read the docs](https://pymagento2.readthedocs.io/)
Features:
* Lightweight: entities are returned as plain dictionaries; there is no custom `Order` or `Product` class
* Easy to extend: subclass `magento.Magento` and add your own methods
* Transparent pagination: functions that make paginated queries return lazy iterables (generators)
* Fully typed: all functions have type hints if necessary
* Production-ready: at Bixoto, we use PyMagento in production since 2020
* Python 3.8+ support
* MIT license
Note: PyMagento is not affiliated to nor endorsed by Adobe or the Magento team.
## Install
### Pip
python -m pip install pymagento
### Poetry
poetry add pymagento
## Usage
```python
import magento
client = magento.Magento(base_url="...", token="...", scope="all")
product = client.get_product("SKU123")
print(magento.get_custom_attribute(product, "description"))
# Get orders by status
for order in client.get_orders(status="processing"):
print(order["increment_id"], order["grand_total"])
# Make more complex queries
query = magento.make_search_query([
[("customer_email", "billgates@example.com", "eq")],
[("status", "complete", "eq")],
])
for order in client.get_orders(query=query, limit=10):
print(order["increment_id"], len(order["items"]))
```
For more information, [read the docs](https://pymagento2.readthedocs.io/).
Note: not all endpoints are implemented with dedicated methods. You can call them with
`client.get_json_api("/V1/...")` for `GET` endpoints and `client.post_json_api("/V1/...", json=...)`.
## License
Copyright 2020-2024 [Bixoto](https://bixoto.com/). See the [`LICENSE`](./LICENSE).
## Other projects
* [MyMagento](https://github.com/TDKorn/my-magento): new project started in 2022; MyMagento didn’t exist when we started PyMagento.
This is a more high-level API that can be a good fit if you’re not familiar with Magento’s API.
* [PyMagento-REST](https://pypi.org/project/PyMagento-REST/) (abandoned)
* [bialecki/pymagento](https://github.com/bialecki/pymagento): Magento 1.x only (abandoned)
* [python-magento](https://github.com/bernieke/python-magento): Magento 1.x only (abandoned)
Raw data
{
"_id": null,
"home_page": "https://github.com/Bixoto/PyMagento",
"name": "pymagento",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "magento, magento-api, python-magento, magento-python, pymagento, py-magento, magento-rest-api, magento2, magento-2, magento2-api, magento2-rest-api",
"author": "Bixoto",
"author_email": "tech@bixoto.com",
"download_url": "https://files.pythonhosted.org/packages/f4/f2/250f7bf1dfa90c1ff285947c1524cbab9dcba3558324e4cb5fd6da9341af/pymagento-2.0.2.tar.gz",
"platform": null,
"description": "# PyMagento\n\n[![PyPI version](https://img.shields.io/pypi/v/pymagento)](https://pypi.org/project/pymagento/) [![PyPI downloads](https://img.shields.io/pypi/dm/pymagento)](https://pypi.org/project/pymagento/)\n\n**PyMagento** is a Python client for the Magento 2 API. Its goal is to provide an easy-to-use Pythonic interface\nto the Magento 2 API, while being lightweight and extendable.\n\n* [Read the docs](https://pymagento2.readthedocs.io/)\n\nFeatures:\n* Lightweight: entities are returned as plain dictionaries; there is no custom `Order` or `Product` class\n* Easy to extend: subclass `magento.Magento` and add your own methods\n* Transparent pagination: functions that make paginated queries return lazy iterables (generators)\n* Fully typed: all functions have type hints if necessary\n* Production-ready: at Bixoto, we use PyMagento in production since 2020\n* Python 3.8+ support\n* MIT license\n\nNote: PyMagento is not affiliated to nor endorsed by Adobe or the Magento team.\n\n## Install\n\n### Pip\n\n python -m pip install pymagento\n\n### Poetry\n\n poetry add pymagento\n\n## Usage\n\n```python\nimport magento\n\nclient = magento.Magento(base_url=\"...\", token=\"...\", scope=\"all\")\n\nproduct = client.get_product(\"SKU123\")\nprint(magento.get_custom_attribute(product, \"description\"))\n\n# Get orders by status\nfor order in client.get_orders(status=\"processing\"):\n print(order[\"increment_id\"], order[\"grand_total\"])\n\n# Make more complex queries\nquery = magento.make_search_query([\n [(\"customer_email\", \"billgates@example.com\", \"eq\")],\n [(\"status\", \"complete\", \"eq\")],\n])\n\nfor order in client.get_orders(query=query, limit=10):\n print(order[\"increment_id\"], len(order[\"items\"]))\n```\n\nFor more information, [read the docs](https://pymagento2.readthedocs.io/).\n\nNote: not all endpoints are implemented with dedicated methods. You can call them with\n`client.get_json_api(\"/V1/...\")` for `GET` endpoints and `client.post_json_api(\"/V1/...\", json=...)`.\n\n## License\n\nCopyright 2020-2024 [Bixoto](https://bixoto.com/). See the [`LICENSE`](./LICENSE).\n\n## Other projects\n\n* [MyMagento](https://github.com/TDKorn/my-magento): new project started in 2022; MyMagento didn\u2019t exist when we started PyMagento.\n This is a more high-level API that can be a good fit if you\u2019re not familiar with Magento\u2019s API.\n* [PyMagento-REST](https://pypi.org/project/PyMagento-REST/) (abandoned)\n* [bialecki/pymagento](https://github.com/bialecki/pymagento): Magento 1.x only (abandoned)\n* [python-magento](https://github.com/bernieke/python-magento): Magento 1.x only (abandoned)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python client for the Magento 2 API",
"version": "2.0.2",
"project_urls": {
"Homepage": "https://github.com/Bixoto/PyMagento"
},
"split_keywords": [
"magento",
" magento-api",
" python-magento",
" magento-python",
" pymagento",
" py-magento",
" magento-rest-api",
" magento2",
" magento-2",
" magento2-api",
" magento2-rest-api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3ef3fd2f6b6ac08a6a2fc399d91f996aebfd18ec52e0409852a2c867675deb7a",
"md5": "e0058e58e1cf930bd4f298d8563d4a30",
"sha256": "0125d1e77a51188d2e684b43492fe496c11e410384b4cb772cd0f6c005a98fe4"
},
"downloads": -1,
"filename": "pymagento-2.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e0058e58e1cf930bd4f298d8563d4a30",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 22314,
"upload_time": "2024-11-13T10:29:18",
"upload_time_iso_8601": "2024-11-13T10:29:18.612827Z",
"url": "https://files.pythonhosted.org/packages/3e/f3/fd2f6b6ac08a6a2fc399d91f996aebfd18ec52e0409852a2c867675deb7a/pymagento-2.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f4f2250f7bf1dfa90c1ff285947c1524cbab9dcba3558324e4cb5fd6da9341af",
"md5": "582ebec018e1028f99cb3dbcf2b5e919",
"sha256": "90ded82347bae7af3cbfad72e71f715f6689a69830be417eddc7059a26127149"
},
"downloads": -1,
"filename": "pymagento-2.0.2.tar.gz",
"has_sig": false,
"md5_digest": "582ebec018e1028f99cb3dbcf2b5e919",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 20956,
"upload_time": "2024-11-13T10:29:20",
"upload_time_iso_8601": "2024-11-13T10:29:20.370601Z",
"url": "https://files.pythonhosted.org/packages/f4/f2/250f7bf1dfa90c1ff285947c1524cbab9dcba3558324e4cb5fd6da9341af/pymagento-2.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-13 10:29:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Bixoto",
"github_project": "PyMagento",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pymagento"
}