Name | egytech_api JSON |
Version |
1.0.2
JSON |
| download |
home_page | None |
Summary | A Python API Wrapper for the EgyTech.FYI API |
upload_time | 2024-06-10 18:52:27 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.11 |
license | MIT License
Copyright (c) 2024 Abdulrahman Mustafa Abdulrahman
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. |
keywords |
api
egytech
egytech api
egytech.fyi
wrapper
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Egytech API
A simple python wrapper for [Egytech's API](https://api.egytech.fyi/).
## Description
* This python wrapper leverages the type safety and input validity checking of pydantic.
It creates enums for all user-side inputs, making sure that all outgoing api requests are correct.
It also leverages request pooling offered by httpx. This leads to more performant api requests
when making multiple requests in a short period of time. This is my first project with pydantic.
Feedback is appreciated.
* It also allows the user to extract the api call results as a pandas dataframe, making
any visualization or data manipulation easier to do.
* You can extract the data in csv, or xslx format immediately. This uses pandas under the hood.
However, you can extract a pandas dataframe and do whatever you want with it.
## Getting Started
### Dependencies
* This project uses **python 3.11**, any newer python version should work.
* This project is os-agnostic, it should work on any os with a python interpreter.
### Installing
* To install with pip, run the following command:
```
pip install egytech_api
```
### Quickstart
To make a simple API request that fetches survey data of participants who have a computer science
degree and a "backend" job title, you can do the following:
```python
from egytech_api.core import Participants
# Create a Participants object
participants = Participants(title="backend", cs_degree=True)
# Fetch the data
df = participants.get_df()
# Print the first 5 rows of the dataframe
df.head()
```
## Full Documentation
The full documentation can be found [here](https://abdulrahman-mustafa.gitbook.io/egytech-api/).
## Examples
- Example
of [`egytech_api.core.PoolingClient`](https://abdulrahman-mustafa.gitbook.io/egytech-fyi-python-wrapper/reference/api-reference/poolingclient)
usage in the
[docs](https://abdulrahman-mustafa.gitbook.io/egytech-fyi-python-wrapper/reference/examples/using-the-pooling-client)
and as a [demo notebook](https://deepnote.com/app/abdulrahmans-workspace/EgyTech-FYI-Wrapper-b29d75ab-a623-4f8b-96df-b8c7c8e89535).
- This Colab notebook demonstrates how significantly using connection pooling alone or asynchronously can improve
response time. Review
results [here](https://colab.research.google.com/drive/1cRAMJvDTg3O3Le9FzXaCirh6C__fUehc?usp=sharing).
## To-Do
- Implement query response deserialization with pydantic models, leveraging fast type-safe deserialization as well as greater dumping flexibility.
- Implement an async-compatible PoolingClient, allowing for even faster performance with multiple asynchronous API calls.
- Make user imports for basic usage more developer-friendly.
- Implement other formats of data output (differently formatted DataFrame, ability to exclude and rename columns, ability to report na values across columns on client initialization among other features).
- Implement oauth2.0-compliant auth flow within the wrapper for future usage (in case the api implements auth in the future).
- Implement logging and custom error handling for better diagnostics.
## License
This project is licensed under the MIT License - see the LICENSE file for details
Raw data
{
"_id": null,
"home_page": null,
"name": "egytech_api",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "api, egytech, egytech api, egytech.fyi, wrapper",
"author": null,
"author_email": "Abdulrahman Mustafa Abdulrahman <abdulrahman.m.khaled@outlook.com>",
"download_url": "https://files.pythonhosted.org/packages/cc/cd/ac6d28d26063401f0145a86a61bad700b672e449984a68946f710b3be31f/egytech_api-1.0.2.tar.gz",
"platform": null,
"description": "# Egytech API\nA simple python wrapper for [Egytech's API](https://api.egytech.fyi/).\n\n\n## Description\n\n* This python wrapper leverages the type safety and input validity checking of pydantic. \nIt creates enums for all user-side inputs, making sure that all outgoing api requests are correct.\nIt also leverages request pooling offered by httpx. This leads to more performant api requests\nwhen making multiple requests in a short period of time. This is my first project with pydantic. \nFeedback is appreciated.\n* It also allows the user to extract the api call results as a pandas dataframe, making\nany visualization or data manipulation easier to do.\n* You can extract the data in csv, or xslx format immediately. This uses pandas under the hood.\nHowever, you can extract a pandas dataframe and do whatever you want with it.\n\n## Getting Started\n\n### Dependencies\n\n* This project uses **python 3.11**, any newer python version should work.\n* This project is os-agnostic, it should work on any os with a python interpreter.\n\n### Installing\n\n* To install with pip, run the following command:\n```\npip install egytech_api\n```\n\n### Quickstart\nTo make a simple API request that fetches survey data of participants who have a computer science\ndegree and a \"backend\" job title, you can do the following:\n```python\nfrom egytech_api.core import Participants\n\n# Create a Participants object\nparticipants = Participants(title=\"backend\", cs_degree=True)\n\n# Fetch the data\ndf = participants.get_df()\n\n# Print the first 5 rows of the dataframe\ndf.head()\n```\n\n## Full Documentation\nThe full documentation can be found [here](https://abdulrahman-mustafa.gitbook.io/egytech-api/).\n\n## Examples\n\n- Example\n of [`egytech_api.core.PoolingClient`](https://abdulrahman-mustafa.gitbook.io/egytech-fyi-python-wrapper/reference/api-reference/poolingclient)\n usage in the\n [docs](https://abdulrahman-mustafa.gitbook.io/egytech-fyi-python-wrapper/reference/examples/using-the-pooling-client) \nand as a [demo notebook](https://deepnote.com/app/abdulrahmans-workspace/EgyTech-FYI-Wrapper-b29d75ab-a623-4f8b-96df-b8c7c8e89535).\n- This Colab notebook demonstrates how significantly using connection pooling alone or asynchronously can improve\n response time. Review\n results [here](https://colab.research.google.com/drive/1cRAMJvDTg3O3Le9FzXaCirh6C__fUehc?usp=sharing).\n\n\n## To-Do\n- Implement query response deserialization with pydantic models, leveraging fast type-safe deserialization as well as greater dumping flexibility. \n- Implement an async-compatible PoolingClient, allowing for even faster performance with multiple asynchronous API calls.\n- Make user imports for basic usage more developer-friendly.\n- Implement other formats of data output (differently formatted DataFrame, ability to exclude and rename columns, ability to report na values across columns on client initialization among other features).\n- Implement oauth2.0-compliant auth flow within the wrapper for future usage (in case the api implements auth in the future).\n- Implement logging and custom error handling for better diagnostics. \n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details\n",
"bugtrack_url": null,
"license": "MIT License\n \n Copyright (c) 2024 Abdulrahman Mustafa Abdulrahman\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.",
"summary": "A Python API Wrapper for the EgyTech.FYI API",
"version": "1.0.2",
"project_urls": {
"Documentation": "https://abdulrahman-mustafa.gitbook.io/egytech-fyi-python-wrapper",
"Source Code": "https://github.com/Abdulrahman-Mustafa-Abdulrahman/egytech-api"
},
"split_keywords": [
"api",
" egytech",
" egytech api",
" egytech.fyi",
" wrapper"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "48f2746ba62e875e3cbfea7724b0f43d794a91a0b40c545a7ebbc978ba13bc61",
"md5": "545aab85583fdef2a381f430fcfa493b",
"sha256": "33adbd84c0ef4b209b9866f4892efbda919b6e22b784e27752a0e7b38c20bb6e"
},
"downloads": -1,
"filename": "egytech_api-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "545aab85583fdef2a381f430fcfa493b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 8861,
"upload_time": "2024-06-10T18:52:25",
"upload_time_iso_8601": "2024-06-10T18:52:25.907328Z",
"url": "https://files.pythonhosted.org/packages/48/f2/746ba62e875e3cbfea7724b0f43d794a91a0b40c545a7ebbc978ba13bc61/egytech_api-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cccdac6d28d26063401f0145a86a61bad700b672e449984a68946f710b3be31f",
"md5": "0946c78678519537d21bb095a42cd484",
"sha256": "4a33379c5733b2ecd5e54506601a0bc18c00e19dea7b656760eacd1267ea8114"
},
"downloads": -1,
"filename": "egytech_api-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "0946c78678519537d21bb095a42cd484",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 6991,
"upload_time": "2024-06-10T18:52:27",
"upload_time_iso_8601": "2024-06-10T18:52:27.532593Z",
"url": "https://files.pythonhosted.org/packages/cc/cd/ac6d28d26063401f0145a86a61bad700b672e449984a68946f710b3be31f/egytech_api-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-10 18:52:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Abdulrahman-Mustafa-Abdulrahman",
"github_project": "egytech-api",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "egytech_api"
}