monday-client


Namemonday-client JSON
Version 0.1.62 PyPI version JSON
download
home_pagehttps://github.com/LeetCyberSecurity/monday-client
SummaryPython library for interacting with the monday.com API. Respects monday.com API rate limits and query complexity limits.
upload_time2024-12-20 00:21:11
maintainerNone
docs_urlNone
authorDan Hollis
requires_python>=3.11
licenseGNU General Public License v3 or later (GPLv3+)
keywords monday monday.com api client async rate-limiting complexity-limiting
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # monday.com API Client

[![Documentation Status](https://readthedocs.org/projects/monday-client/badge/?version=latest)](https://monday-client.readthedocs.io/en/latest/?badge=latest)
[![PyPI version](https://badge.fury.io/py/monday-client.svg)](https://badge.fury.io/py/monday-client)
[![Python Versions](https://img.shields.io/pypi/pyversions/monday-client.svg)](https://pypi.org/project/monday-client/)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![GitHub issues](https://img.shields.io/github/issues/LeetCyberSecurity/monday-client.svg)](https://github.com/LeetCyberSecurity/monday-client/issues)
[![GitHub last commit](https://img.shields.io/github/last-commit/LeetCyberSecurity/monday-client.svg)](https://github.com/LeetCyberSecurity/monday-client/commits/main)

This Python library provides an **asynchronous** client to interact with the [monday.com API](https://developer.monday.com/api-reference/reference/about-the-api-reference).

## Documentation

For detailed documentation, visit the [official documentation site](https://monday-client.readthedocs.io).

## Key Features

- **Asynchronous API calls** using `asyncio` and `aiohttp` for efficient I/O operations.
- **Automatic handling of API rate limits and query limits** following monday.com's rate limit policies.
- **Built-in retry logic** for handling rate limit exceptions, ensuring smooth operation without manual intervention.
- **Easy-to-use methods** for common monday.com operations.
- **Fully customizable requests** with all monday.com method arguments and fields available to the user.

## Installation

```bash
pip install monday-client
```

## Quick Start

```python
import asyncio

from monday import MondayClient

async def main():
    monday_client = MondayClient(api_key='your_api_key_here')
    boards = await monday_client.boards.query(board_ids=[987654321, 876543210])
    items = await monday_client.items.query(item_ids=[123456789, 123456780])

asyncio.run(main())
```


## Usage

### Asynchronous Operations

All methods provided by the `MondayClient` are asynchronous and should be awaited. This allows for efficient concurrent execution of API calls.

### Rate Limiting and Retry Logic

The client automatically handles rate limiting in compliance with monday.com's API policies. When a rate limit is reached, the client will wait for the specified reset time before retrying the request. This ensures that your application doesn't need to manually handle rate limit exceptions and can operate smoothly.

### Error Handling

Custom exceptions are defined for handling specific error cases:

- `MondayAPIError`: Raised when an error occurs during API communication with monday.com.
- `PaginationError`: Raised when item pagination fails during a request.
- `QueryFormatError`: Raised when there is a query formatting error.
- `ComplexityLimitExceeded`: Raised when the complexity limit and max retries are exceeded.
- `MutationLimitExceeded`: Raised when the mutation limit and max retries are exceeded.

### Logging

The client uses a logger named `monday_client` for all logging operations. By default, a `NullHandler` is added to suppress logging output. To enable logging, you can configure the logger in your application:

```python
import logging

logger = logging.getLogger('monday_client')
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)
```

Or update an already existing logging config:
```python
import logging.config

logging_config = config['logging']

logging_config['loggers'].update({
    'monday_client': {
        'handlers': ['file', 'console'],  # Use the same handlers as your main logger
        'level': 'INFO',  # Set appropriate level
        'propagate': False
    }
})

logging.config.dictConfig(logging_config)
logger = logging.getLogger(__name__)
```

## License

This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](https://github.com/LeetCyberSecurity/monday-client/blob/main/LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/LeetCyberSecurity/monday-client",
    "name": "monday-client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "monday, monday.com, api, client, async, rate-limiting, complexity-limiting",
    "author": "Dan Hollis",
    "author_email": "Dan Hollis <dh@leetsys.com>",
    "download_url": "https://files.pythonhosted.org/packages/4e/f1/00f97b5004265066b93c05b5bec968d2b5130d77d091db3c5fa3fa58a3ae/monday_client-0.1.62.tar.gz",
    "platform": null,
    "description": "# monday.com API Client\n\n[![Documentation Status](https://readthedocs.org/projects/monday-client/badge/?version=latest)](https://monday-client.readthedocs.io/en/latest/?badge=latest)\n[![PyPI version](https://badge.fury.io/py/monday-client.svg)](https://badge.fury.io/py/monday-client)\n[![Python Versions](https://img.shields.io/pypi/pyversions/monday-client.svg)](https://pypi.org/project/monday-client/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![GitHub issues](https://img.shields.io/github/issues/LeetCyberSecurity/monday-client.svg)](https://github.com/LeetCyberSecurity/monday-client/issues)\n[![GitHub last commit](https://img.shields.io/github/last-commit/LeetCyberSecurity/monday-client.svg)](https://github.com/LeetCyberSecurity/monday-client/commits/main)\n\nThis Python library provides an **asynchronous** client to interact with the [monday.com API](https://developer.monday.com/api-reference/reference/about-the-api-reference).\n\n## Documentation\n\nFor detailed documentation, visit the [official documentation site](https://monday-client.readthedocs.io).\n\n## Key Features\n\n- **Asynchronous API calls** using `asyncio` and `aiohttp` for efficient I/O operations.\n- **Automatic handling of API rate limits and query limits** following monday.com's rate limit policies.\n- **Built-in retry logic** for handling rate limit exceptions, ensuring smooth operation without manual intervention.\n- **Easy-to-use methods** for common monday.com operations.\n- **Fully customizable requests** with all monday.com method arguments and fields available to the user.\n\n## Installation\n\n```bash\npip install monday-client\n```\n\n## Quick Start\n\n```python\nimport asyncio\n\nfrom monday import MondayClient\n\nasync def main():\n    monday_client = MondayClient(api_key='your_api_key_here')\n    boards = await monday_client.boards.query(board_ids=[987654321, 876543210])\n    items = await monday_client.items.query(item_ids=[123456789, 123456780])\n\nasyncio.run(main())\n```\n\n\n## Usage\n\n### Asynchronous Operations\n\nAll methods provided by the `MondayClient` are asynchronous and should be awaited. This allows for efficient concurrent execution of API calls.\n\n### Rate Limiting and Retry Logic\n\nThe client automatically handles rate limiting in compliance with monday.com's API policies. When a rate limit is reached, the client will wait for the specified reset time before retrying the request. This ensures that your application doesn't need to manually handle rate limit exceptions and can operate smoothly.\n\n### Error Handling\n\nCustom exceptions are defined for handling specific error cases:\n\n- `MondayAPIError`: Raised when an error occurs during API communication with monday.com.\n- `PaginationError`: Raised when item pagination fails during a request.\n- `QueryFormatError`: Raised when there is a query formatting error.\n- `ComplexityLimitExceeded`: Raised when the complexity limit and max retries are exceeded.\n- `MutationLimitExceeded`: Raised when the mutation limit and max retries are exceeded.\n\n### Logging\n\nThe client uses a logger named `monday_client` for all logging operations. By default, a `NullHandler` is added to suppress logging output. To enable logging, you can configure the logger in your application:\n\n```python\nimport logging\n\nlogger = logging.getLogger('monday_client')\nlogger.setLevel(logging.INFO)\nhandler = logging.StreamHandler()\nhandler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))\nlogger.addHandler(handler)\n```\n\nOr update an already existing logging config:\n```python\nimport logging.config\n\nlogging_config = config['logging']\n\nlogging_config['loggers'].update({\n    'monday_client': {\n        'handlers': ['file', 'console'],  # Use the same handlers as your main logger\n        'level': 'INFO',  # Set appropriate level\n        'propagate': False\n    }\n})\n\nlogging.config.dictConfig(logging_config)\nlogger = logging.getLogger(__name__)\n```\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0 - see the [LICENSE](https://github.com/LeetCyberSecurity/monday-client/blob/main/LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "GNU General Public License v3 or later (GPLv3+)",
    "summary": "Python library for interacting with the monday.com API. Respects monday.com API rate limits and query complexity limits.",
    "version": "0.1.62",
    "project_urls": {
        "Bug Reports": "https://github.com/LeetCyberSecurity/monday-client/issues",
        "Documentation": "https://monday-client.readthedocs.io/",
        "Homepage": "https://github.com/LeetCyberSecurity/monday-client",
        "Source": "https://github.com/LeetCyberSecurity/monday-client"
    },
    "split_keywords": [
        "monday",
        " monday.com",
        " api",
        " client",
        " async",
        " rate-limiting",
        " complexity-limiting"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b0888064c8f9ceaee91af2e5cc6ec5e0b18903f450c43ac5ac19085a81e44e39",
                "md5": "d9d1bfadf1e7f905e90ab648a76821c2",
                "sha256": "d5f471887b9547f8049aa9bb1af0320bcc88b4be822c92f6996bb07405d25a79"
            },
            "downloads": -1,
            "filename": "monday_client-0.1.62-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d9d1bfadf1e7f905e90ab648a76821c2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 79342,
            "upload_time": "2024-12-20T00:21:09",
            "upload_time_iso_8601": "2024-12-20T00:21:09.617080Z",
            "url": "https://files.pythonhosted.org/packages/b0/88/8064c8f9ceaee91af2e5cc6ec5e0b18903f450c43ac5ac19085a81e44e39/monday_client-0.1.62-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ef100f97b5004265066b93c05b5bec968d2b5130d77d091db3c5fa3fa58a3ae",
                "md5": "21f816f0a2b7008cc7a24b45e919a355",
                "sha256": "b7398d7c5d43297f7af57534d50726a1bb5e1b7344222a883fbf380d66c28194"
            },
            "downloads": -1,
            "filename": "monday_client-0.1.62.tar.gz",
            "has_sig": false,
            "md5_digest": "21f816f0a2b7008cc7a24b45e919a355",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 70675,
            "upload_time": "2024-12-20T00:21:11",
            "upload_time_iso_8601": "2024-12-20T00:21:11.294716Z",
            "url": "https://files.pythonhosted.org/packages/4e/f1/00f97b5004265066b93c05b5bec968d2b5130d77d091db3c5fa3fa58a3ae/monday_client-0.1.62.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-20 00:21:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "LeetCyberSecurity",
    "github_project": "monday-client",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "monday-client"
}
        
Elapsed time: 0.43139s