A python package that simplifies the process of making API requests to 42's API.
Project description
ptapi42
A python package that simplifies the process of making API requests to 42's API. With this package, developers can quickly and easily access the 42 API's functionality, without having to deal with the complexities of working directly with it.
Acknowledgments
This API is highly influenced by dropi, which is available as a package as well. However, with 42 API's updates from earlier this year, dropi became obsolete, or difficult to use, as it isn't being maintained. As a result, we decided to create a new API based on dropi, but with some differences.
Differences from dropi
While our API is heavily influenced by dropi, it includes some extra features:
-
Configurable Logger: We've implemented a logging system using the logging library, which provides you with more control over the messages being logged. You can use it to debug and monitor your application. The logger's level can be set to different levels (DEBUG, INFO, WARNING, ERROR, CRITICAL) to filter out the messages that aren't relevant to your needs.
-
Exception Raising: You can configure the API to raise exceptions whenever there's an error. This way, you'll be able to handle the errors in your own way, rather than having the API fail silently.
-
Rate Limiting: You can configure the number of requests per second you want to do to the API. This can help you avoid reaching the API's rate limit and getting blocked.
-
Maintenance and New Features: This project is actively maintained, so you can expect it to be updated with new features and fixes when needed. We're also working on adding a better
mass_request
function to simplify requests that involve multiple API endpoints.
Support
ptapi42 is maintained by the 42 Portugal association, which provides resources and support to improve the API and address any issues. If you have any questions or feedback, feel free to reach out to us in issues.
How to install (in prog)
pip install ptapi42
How To Use Api
from ptapi42 import Api42, Api42Request
api: Api42 = Api42()
# Making a simple GET request
campus_id = 'porto'
params: dict = {
'filter': {
'pool_month': 'february',
'pool_year': '2023'
}
}
url = f'campus/{campus_id}/users'
users = api.get(url=url, params=params)
# Making a mass_request
reqs: list = []
for user in users:
api_req = Api42Request(url=f"users/{user['id']}")
reqs.append(api_req)
user_info = api.mass_request('GET', reqs)
Api Reference
How To Configure Api
The Api has some configurations.
from ptapi42 import Api42
api: Api42 = Api42()
Configure if you want Api42 to raise exceptions
api.raises = True
Configure the max number of requests per second
api.requests_per_second = 8
Configure Api log level
api.log_lvl = 'DEBUG'
api.log_lvl = 'INFO'
api.log_lvl = 'WARNING'
api.log_lvl = 'ERROR'
api.log_lvl = 'FATAL'
Running Tests (dev)
- Cloning the repository and switching to the testing branch
git clone git@github.com:42-Portugal/ptapi42.git
cd ptapi42
- Create a python environment and install the required packages
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Run the tests
python tests.py
- Check for test coverage
coverage run tests.py
coverage report
Name Stmts Miss Cover
--------------------------------------------
ptapi42/__init__.py 1 0 100%
ptapi42/api42.py 219 29 87%
ptapi42/api42_token.py 26 5 81%
ptapi42/config.py 14 1 93%
tests.py 163 0 100%
--------------------------------------------
TOTAL 423 35 92%
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file ptapi42-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: ptapi42-1.0.0-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fb856e11953f1f2ff98cfa9872fc3bc876a9ac7ffd947b334b33e0ca26c13f7 |
|
MD5 | 0821d6305ac20a0cd8a87902aed01a5a |
|
BLAKE2b-256 | 94ba5be7bd017db2be35645cc82e06148e0f6ee4726e49ee4e2fa9e7857ad278 |