Skip to main content

Python library for interacting with the monday.com API. Respects monday.com API rate limits and query complexity limits.

Project description

monday.com API Client

Documentation Status PyPI version Python Versions License: GPL v3 GitHub issues GitHub last commit

This Python library provides an asynchronous client to interact with the monday.com API.

Documentation

For detailed documentation, visit the official documentation site.

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

pip install monday-client

Quick Start

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())

Common Imports

from monday import MondayClient, Fields

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:

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:

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__)

Testing

This project uses pytest for all testing.

  • Unit tests: Run all unit tests (default):

    python -m pytest
    
  • Integration tests: Require a valid API key and explicit marking:

    # Set up environment variables
    export MONDAY_API_KEY=your_api_key
    export MONDAY_TEST_BOARD_ID=123456789
    
    # Run integration tests (requires -m integration flag)
    python -m pytest -m integration
    
    # Run specific integration test file
    python -m pytest tests/test_integration.py -m integration -v
    
  • Mutation tests: Test data creation, updates, and deletion (requires write permissions):

    export MONDAY_API_KEY=your_api_key
    python -m pytest -m mutation
    

    ⚠️ Warning: These tests will create and delete real data on your monday.com account.

See docs/TESTING.md for more details on test types, configuration, and best practices.

Development Setup

For development and testing, install with development dependencies:

pip install -e ".[dev]"

Contributing

Contributions are welcome! Please open an issue or pull request on GitHub or see CONTRIBUTING.md for guidelines.

Support

For questions or support, open an issue on GitHub Issues.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

monday_client-0.1.73.tar.gz (86.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

monday_client-0.1.73-py3-none-any.whl (91.7 kB view details)

Uploaded Python 3

File details

Details for the file monday_client-0.1.73.tar.gz.

File metadata

  • Download URL: monday_client-0.1.73.tar.gz
  • Upload date:
  • Size: 86.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for monday_client-0.1.73.tar.gz
Algorithm Hash digest
SHA256 9b0e9d6a8f5af4acbe64d2a79f613b08dcd64532771f332a312e1460f9dce5bb
MD5 b3bfb52e44e243ab539026afd55b4262
BLAKE2b-256 7616d1c5001f612c3e69625d078bb2e5e0d2af65d2d2ecc5214d77f60ba2248b

See more details on using hashes here.

File details

Details for the file monday_client-0.1.73-py3-none-any.whl.

File metadata

  • Download URL: monday_client-0.1.73-py3-none-any.whl
  • Upload date:
  • Size: 91.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for monday_client-0.1.73-py3-none-any.whl
Algorithm Hash digest
SHA256 5934fe60c7099a0bd0cf3f3a530dcaba057b1ade361fe2dcf4e14476f559f62b
MD5 b681529ce5c8aa302c67553301155ede
BLAKE2b-256 1bd22acee5419209406892ed8593244eec88878e75f968cc215ef1b5e866b709

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page