From 6cdcef881c6f9de93c1ddd8d577d04a80350d81d Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 11 Apr 2023 04:38:47 +0000 Subject: automatic import of python-hubspot3 --- .gitignore | 1 + python-hubspot3.spec | 734 +++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 736 insertions(+) create mode 100644 python-hubspot3.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..ee62497 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/hubspot3-3.2.52.tar.gz diff --git a/python-hubspot3.spec b/python-hubspot3.spec new file mode 100644 index 0000000..75cbec5 --- /dev/null +++ b/python-hubspot3.spec @@ -0,0 +1,734 @@ +%global _empty_manifest_terminate_build 0 +Name: python-hubspot3 +Version: 3.2.52 +Release: 1 +Summary: A python wrapper around HubSpot's APIs, for python 3. Built initially around hapipy, but heavily modified. +License: LICENSE +URL: https://github.com/jpetrucciani/hubspot3.git +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f4/10/c9c5cbeaf660cffbbc9b4110ae80b508eb944387d59338089b47dbb6554f/hubspot3-3.2.52.tar.gz +BuildArch: noarch + +Requires: python3-typing-extensions +Requires: python3-fire + +%description +[![PyPI +version](https://badge.fury.io/py/hubspot3.svg)](https://badge.fury.io/py/hubspot3) +[![Code style: +black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) +[![Documentation +Status](https://readthedocs.org/projects/hubspot3/badge/?version=latest)](https://hubspot3.readthedocs.io/en/latest/?badge=latest) +[![Python 3.7+ +supported](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/release/python-360/) + +A python wrapper around HubSpot's APIs, _for python 3.7+_. + +Built initially around hapipy, but heavily modified. + +Check out the [documentation +here](https://hubspot3.readthedocs.io/en/latest/)\! (thanks readthedocs) + +# Quick start + +## **Note: I'd recommend that you consider using the [official HubSpot Python API](https://github.com/HubSpot/hubspot-api-python). I no longer work at a company that uses HubSpot, and this library is a few versions behind on many of their APIs. I will be open to small PRs and usability fixes, but there will likely not be any further significant work on this library** + +## Installation + +```bash +# install hubspot3 +pip install hubspot3 +``` + +## Basic Usage + +```python +from hubspot3 import Hubspot3 + +API_KEY = "your-api-key" + +client = Hubspot3(api_key=API_KEY) + +# all of the clients are accessible as attributes of the main Hubspot3 Client +contact = client.contacts.get_contact_by_email('testingapis@hubspot.com') +contact_id = contact['vid'] + +all_companies = client.companies.get_all() + +# new usage limit functionality - keep track of your API calls +client.usage_limits +# + +client.usage_limits.calls_remaining +# 971063 +``` + +## Individual Clients + +```python +from hubspot3.companies import CompaniesClient + +API_KEY = "your-api-key" + +client = CompaniesClient(api_key=API_KEY) + +for company in client.get_all(): + print(company) +``` + +## Passing Params + +```python +import json +from hubspot3.deals import DealsClient + +deal_id = "12345" +API_KEY = "your_api_key" + +deals_client = DealsClient(api_key=API_KEY) + +params = { + "includePropertyVersions": "true" +} # Note values are camelCase as they appear in the Hubspot Documentation! + +deal_data = deals_client.get(deal_id, params=params) +print(json.dumps(deal_data)) +``` + +## Command-line interface + +There is also a command-line tool available. Install the extra +requirement for that tool via: + +```bash +pip install hubspot3[cli] +``` + +and you can use it as a command: + +```bash +hubspot3 --help +``` + +See the Sphinx documentation for more details and explanations. + +# Rate Limiting + +Be aware that this uses the HubSpot API directly, so you are subject to +all of the [guidelines that HubSpot has in +place](https://developers.hubspot.com/apps/api_guidelines). + +at the time of writing, HubSpot has the following limits in place for +API requests: + +Free & Starter: + +- 10 requests per second +- 250,000 requests per day. + +Professional & Enterprise: + +- 10 requests per second +- 500,000 requests per day. + +This daily limit resets at midnight based on the time zone setting of +the HubSpot account. There is also an additional addon you can purchase +for more requests. + +# Retrying API Calls + +By default, hubspot3 will attempt to retry all API calls up to 2 times +upon failure. + +If you'd like to override this behavior, you can add a `number_retries` +keyword argument to any Client constructor, or to individual API calls. + +# Extending the BaseClient - thanks [@Guysoft](https://github.com/guysoft)\! + +Some of the APIs are not yet complete\! If you'd like to use an API that +isn't yet in this repo, you can extend the BaseClient class\! + +```python +import json +from hubspot3.base import BaseClient + + +PIPELINES_API_VERSION = "1" + + +class PipelineClient(BaseClient): + """ + Lets you extend to non-existing clients, this example extends pipelines + """ + + def __init__(self, *args, **kwargs): + super(PipelineClient, self).__init__(*args, **kwargs) + + def get_pipelines(self, **options): + params = {} + + return self._call("pipelines", method="GET", params=params) + + def _get_path(self, subpath): + return f"deals/v{self.options.get('version') or PIPELINES_API_VERSION}/{subpath}" + + +if __name__ == "__main__": + API_KEY = "your_api_key" + a = PipelineClient(api_key=API_KEY) + print(json.dumps(a.get_pipelines())) +``` + +# Advanced oauth2 token storage - thanks [@sangaline](https://github.com/sangaline)\! + +This is an example of how you can use the `oauth2_token_getter` and `oauth2_token_setter` kwargs on the client to use custom storage (in this case redis) so that multiple clients can share the same access/refresh tokens generated by the oauth2 requests. + +```python +import aioredis +from hubspot3 import Hubspot3 + + +redis_client = await aioredis.create_redis_pool(url, db=db, encoding='utf-8', timeout=10) + +def oauth2_token_getter(token_type: str, client_id: str) -> str: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + return loop.run_until_complete(redis_client.get(key)) + +def oauth2_token_setter(token_type: str, client_id: str, token: str) -> None: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + # Token expiration is six hours, so match that when we store the tokens. + # See: https://developers.hubspot.com/docs/methods/oauth2/refresh-access-token + expire_in_seconds = 6 * 60 * 60 + loop.run_until_complete(redis_client.set(key, token, expire=expire_in_seconds)) + +# This client will share oauth2 credentials with other clients configured in the same way. +hubspot3_client = Hubspot3( + access_token=access_token, + client_id=client_id, + client_secret=client_secret, + refresh_token=refresh_token, + oauth2_token_getter=oauth2_token_getter, + oauth2_token_setter=oauth2_token_setter, +) +``` + +# Testing + +I'm currently working on rewriting many of the tests with +[pytest](https://docs.pytest.org/en/latest/) to work against the public +API and ensure that we get the correct type of mock data back. These +tests are currently in a **very** early state - I'll be working soon to +get them all built out. + +```bash +# Install required test packages +pip install pytest pytest-cov +# or +pip install -r requirements-dev.txt + +# run tests +make +# or +make test_all +``` + + +%package -n python3-hubspot3 +Summary: A python wrapper around HubSpot's APIs, for python 3. Built initially around hapipy, but heavily modified. +Provides: python-hubspot3 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-hubspot3 +[![PyPI +version](https://badge.fury.io/py/hubspot3.svg)](https://badge.fury.io/py/hubspot3) +[![Code style: +black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) +[![Documentation +Status](https://readthedocs.org/projects/hubspot3/badge/?version=latest)](https://hubspot3.readthedocs.io/en/latest/?badge=latest) +[![Python 3.7+ +supported](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/release/python-360/) + +A python wrapper around HubSpot's APIs, _for python 3.7+_. + +Built initially around hapipy, but heavily modified. + +Check out the [documentation +here](https://hubspot3.readthedocs.io/en/latest/)\! (thanks readthedocs) + +# Quick start + +## **Note: I'd recommend that you consider using the [official HubSpot Python API](https://github.com/HubSpot/hubspot-api-python). I no longer work at a company that uses HubSpot, and this library is a few versions behind on many of their APIs. I will be open to small PRs and usability fixes, but there will likely not be any further significant work on this library** + +## Installation + +```bash +# install hubspot3 +pip install hubspot3 +``` + +## Basic Usage + +```python +from hubspot3 import Hubspot3 + +API_KEY = "your-api-key" + +client = Hubspot3(api_key=API_KEY) + +# all of the clients are accessible as attributes of the main Hubspot3 Client +contact = client.contacts.get_contact_by_email('testingapis@hubspot.com') +contact_id = contact['vid'] + +all_companies = client.companies.get_all() + +# new usage limit functionality - keep track of your API calls +client.usage_limits +# + +client.usage_limits.calls_remaining +# 971063 +``` + +## Individual Clients + +```python +from hubspot3.companies import CompaniesClient + +API_KEY = "your-api-key" + +client = CompaniesClient(api_key=API_KEY) + +for company in client.get_all(): + print(company) +``` + +## Passing Params + +```python +import json +from hubspot3.deals import DealsClient + +deal_id = "12345" +API_KEY = "your_api_key" + +deals_client = DealsClient(api_key=API_KEY) + +params = { + "includePropertyVersions": "true" +} # Note values are camelCase as they appear in the Hubspot Documentation! + +deal_data = deals_client.get(deal_id, params=params) +print(json.dumps(deal_data)) +``` + +## Command-line interface + +There is also a command-line tool available. Install the extra +requirement for that tool via: + +```bash +pip install hubspot3[cli] +``` + +and you can use it as a command: + +```bash +hubspot3 --help +``` + +See the Sphinx documentation for more details and explanations. + +# Rate Limiting + +Be aware that this uses the HubSpot API directly, so you are subject to +all of the [guidelines that HubSpot has in +place](https://developers.hubspot.com/apps/api_guidelines). + +at the time of writing, HubSpot has the following limits in place for +API requests: + +Free & Starter: + +- 10 requests per second +- 250,000 requests per day. + +Professional & Enterprise: + +- 10 requests per second +- 500,000 requests per day. + +This daily limit resets at midnight based on the time zone setting of +the HubSpot account. There is also an additional addon you can purchase +for more requests. + +# Retrying API Calls + +By default, hubspot3 will attempt to retry all API calls up to 2 times +upon failure. + +If you'd like to override this behavior, you can add a `number_retries` +keyword argument to any Client constructor, or to individual API calls. + +# Extending the BaseClient - thanks [@Guysoft](https://github.com/guysoft)\! + +Some of the APIs are not yet complete\! If you'd like to use an API that +isn't yet in this repo, you can extend the BaseClient class\! + +```python +import json +from hubspot3.base import BaseClient + + +PIPELINES_API_VERSION = "1" + + +class PipelineClient(BaseClient): + """ + Lets you extend to non-existing clients, this example extends pipelines + """ + + def __init__(self, *args, **kwargs): + super(PipelineClient, self).__init__(*args, **kwargs) + + def get_pipelines(self, **options): + params = {} + + return self._call("pipelines", method="GET", params=params) + + def _get_path(self, subpath): + return f"deals/v{self.options.get('version') or PIPELINES_API_VERSION}/{subpath}" + + +if __name__ == "__main__": + API_KEY = "your_api_key" + a = PipelineClient(api_key=API_KEY) + print(json.dumps(a.get_pipelines())) +``` + +# Advanced oauth2 token storage - thanks [@sangaline](https://github.com/sangaline)\! + +This is an example of how you can use the `oauth2_token_getter` and `oauth2_token_setter` kwargs on the client to use custom storage (in this case redis) so that multiple clients can share the same access/refresh tokens generated by the oauth2 requests. + +```python +import aioredis +from hubspot3 import Hubspot3 + + +redis_client = await aioredis.create_redis_pool(url, db=db, encoding='utf-8', timeout=10) + +def oauth2_token_getter(token_type: str, client_id: str) -> str: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + return loop.run_until_complete(redis_client.get(key)) + +def oauth2_token_setter(token_type: str, client_id: str, token: str) -> None: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + # Token expiration is six hours, so match that when we store the tokens. + # See: https://developers.hubspot.com/docs/methods/oauth2/refresh-access-token + expire_in_seconds = 6 * 60 * 60 + loop.run_until_complete(redis_client.set(key, token, expire=expire_in_seconds)) + +# This client will share oauth2 credentials with other clients configured in the same way. +hubspot3_client = Hubspot3( + access_token=access_token, + client_id=client_id, + client_secret=client_secret, + refresh_token=refresh_token, + oauth2_token_getter=oauth2_token_getter, + oauth2_token_setter=oauth2_token_setter, +) +``` + +# Testing + +I'm currently working on rewriting many of the tests with +[pytest](https://docs.pytest.org/en/latest/) to work against the public +API and ensure that we get the correct type of mock data back. These +tests are currently in a **very** early state - I'll be working soon to +get them all built out. + +```bash +# Install required test packages +pip install pytest pytest-cov +# or +pip install -r requirements-dev.txt + +# run tests +make +# or +make test_all +``` + + +%package help +Summary: Development documents and examples for hubspot3 +Provides: python3-hubspot3-doc +%description help +[![PyPI +version](https://badge.fury.io/py/hubspot3.svg)](https://badge.fury.io/py/hubspot3) +[![Code style: +black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) +[![Documentation +Status](https://readthedocs.org/projects/hubspot3/badge/?version=latest)](https://hubspot3.readthedocs.io/en/latest/?badge=latest) +[![Python 3.7+ +supported](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/release/python-360/) + +A python wrapper around HubSpot's APIs, _for python 3.7+_. + +Built initially around hapipy, but heavily modified. + +Check out the [documentation +here](https://hubspot3.readthedocs.io/en/latest/)\! (thanks readthedocs) + +# Quick start + +## **Note: I'd recommend that you consider using the [official HubSpot Python API](https://github.com/HubSpot/hubspot-api-python). I no longer work at a company that uses HubSpot, and this library is a few versions behind on many of their APIs. I will be open to small PRs and usability fixes, but there will likely not be any further significant work on this library** + +## Installation + +```bash +# install hubspot3 +pip install hubspot3 +``` + +## Basic Usage + +```python +from hubspot3 import Hubspot3 + +API_KEY = "your-api-key" + +client = Hubspot3(api_key=API_KEY) + +# all of the clients are accessible as attributes of the main Hubspot3 Client +contact = client.contacts.get_contact_by_email('testingapis@hubspot.com') +contact_id = contact['vid'] + +all_companies = client.companies.get_all() + +# new usage limit functionality - keep track of your API calls +client.usage_limits +# + +client.usage_limits.calls_remaining +# 971063 +``` + +## Individual Clients + +```python +from hubspot3.companies import CompaniesClient + +API_KEY = "your-api-key" + +client = CompaniesClient(api_key=API_KEY) + +for company in client.get_all(): + print(company) +``` + +## Passing Params + +```python +import json +from hubspot3.deals import DealsClient + +deal_id = "12345" +API_KEY = "your_api_key" + +deals_client = DealsClient(api_key=API_KEY) + +params = { + "includePropertyVersions": "true" +} # Note values are camelCase as they appear in the Hubspot Documentation! + +deal_data = deals_client.get(deal_id, params=params) +print(json.dumps(deal_data)) +``` + +## Command-line interface + +There is also a command-line tool available. Install the extra +requirement for that tool via: + +```bash +pip install hubspot3[cli] +``` + +and you can use it as a command: + +```bash +hubspot3 --help +``` + +See the Sphinx documentation for more details and explanations. + +# Rate Limiting + +Be aware that this uses the HubSpot API directly, so you are subject to +all of the [guidelines that HubSpot has in +place](https://developers.hubspot.com/apps/api_guidelines). + +at the time of writing, HubSpot has the following limits in place for +API requests: + +Free & Starter: + +- 10 requests per second +- 250,000 requests per day. + +Professional & Enterprise: + +- 10 requests per second +- 500,000 requests per day. + +This daily limit resets at midnight based on the time zone setting of +the HubSpot account. There is also an additional addon you can purchase +for more requests. + +# Retrying API Calls + +By default, hubspot3 will attempt to retry all API calls up to 2 times +upon failure. + +If you'd like to override this behavior, you can add a `number_retries` +keyword argument to any Client constructor, or to individual API calls. + +# Extending the BaseClient - thanks [@Guysoft](https://github.com/guysoft)\! + +Some of the APIs are not yet complete\! If you'd like to use an API that +isn't yet in this repo, you can extend the BaseClient class\! + +```python +import json +from hubspot3.base import BaseClient + + +PIPELINES_API_VERSION = "1" + + +class PipelineClient(BaseClient): + """ + Lets you extend to non-existing clients, this example extends pipelines + """ + + def __init__(self, *args, **kwargs): + super(PipelineClient, self).__init__(*args, **kwargs) + + def get_pipelines(self, **options): + params = {} + + return self._call("pipelines", method="GET", params=params) + + def _get_path(self, subpath): + return f"deals/v{self.options.get('version') or PIPELINES_API_VERSION}/{subpath}" + + +if __name__ == "__main__": + API_KEY = "your_api_key" + a = PipelineClient(api_key=API_KEY) + print(json.dumps(a.get_pipelines())) +``` + +# Advanced oauth2 token storage - thanks [@sangaline](https://github.com/sangaline)\! + +This is an example of how you can use the `oauth2_token_getter` and `oauth2_token_setter` kwargs on the client to use custom storage (in this case redis) so that multiple clients can share the same access/refresh tokens generated by the oauth2 requests. + +```python +import aioredis +from hubspot3 import Hubspot3 + + +redis_client = await aioredis.create_redis_pool(url, db=db, encoding='utf-8', timeout=10) + +def oauth2_token_getter(token_type: str, client_id: str) -> str: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + return loop.run_until_complete(redis_client.get(key)) + +def oauth2_token_setter(token_type: str, client_id: str, token: str) -> None: + loop = asyncio.get_event_loop() + key = f'hubspot-oauth2-tokens:{token_type}:{client_id}' + # Token expiration is six hours, so match that when we store the tokens. + # See: https://developers.hubspot.com/docs/methods/oauth2/refresh-access-token + expire_in_seconds = 6 * 60 * 60 + loop.run_until_complete(redis_client.set(key, token, expire=expire_in_seconds)) + +# This client will share oauth2 credentials with other clients configured in the same way. +hubspot3_client = Hubspot3( + access_token=access_token, + client_id=client_id, + client_secret=client_secret, + refresh_token=refresh_token, + oauth2_token_getter=oauth2_token_getter, + oauth2_token_setter=oauth2_token_setter, +) +``` + +# Testing + +I'm currently working on rewriting many of the tests with +[pytest](https://docs.pytest.org/en/latest/) to work against the public +API and ensure that we get the correct type of mock data back. These +tests are currently in a **very** early state - I'll be working soon to +get them all built out. + +```bash +# Install required test packages +pip install pytest pytest-cov +# or +pip install -r requirements-dev.txt + +# run tests +make +# or +make test_all +``` + + +%prep +%autosetup -n hubspot3-3.2.52 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-hubspot3 -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot - 3.2.52-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..572ca2d --- /dev/null +++ b/sources @@ -0,0 +1 @@ +955ef2b6a1c84af66d7ba14c0a1c3b79 hubspot3-3.2.52.tar.gz -- cgit v1.2.3