diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-chess-com.spec | 224 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 226 insertions, 0 deletions
@@ -0,0 +1 @@ +/chess.com-2.0.6.tar.gz diff --git a/python-chess-com.spec b/python-chess-com.spec new file mode 100644 index 0000000..07bc812 --- /dev/null +++ b/python-chess-com.spec @@ -0,0 +1,224 @@ +%global _empty_manifest_terminate_build 0 +Name: python-chess.com +Version: 2.0.6 +Release: 1 +Summary: Python Wrapper for Chess.com API +License: MIT License +URL: https://github.com/sarartur/chess.com +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/93/06/2456e85aedb0bdcf67b1b9c80cda27b3ce73a5b1274b8299366c08cc4b6f/chess.com-2.0.6.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp +Requires: python3-requests + +%description +Python wrapper for Chess.com API which provides public data from the chess.com website. All endpoints provided by Chess.com's API are available in the respectively named methods. +## Installation +**The package requires Python 3.7 or higher**. +Install latest version from [PyPI](https://pypi.org/project/chess.com/): ```pip install chess.com``` +## Resources +* Documentation: [readthedocs.org](https://chesscom.readthedocs.io/) +* Published-Data API: [chess.com](https://www.chess.com/news/view/published-data-api) +## Usage +### Retrieving Data +All the functions return a `ChessDotComResponse` object. The data can be accessed in dictionary format or via attributes. +The package uses [aiohttp](https://docs.aiohttp.org/en/stable/) for asynchronous requests and [requests](https://requests.readthedocs.io/en/latest/) for synchronous requests to interact with the API. +#### Synchronous +``` python +from chessdotcom import get_player_profile +response = get_player_profile("fabianocaruana") +player_name = response.json['player']['name'] +player_name = response.player.name +``` +#### Asynchronous +``` python +import asyncio +from chessdotcom.aio import get_player_profile +usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"] +cors = [get_player_profile(name) for name in usernames] +async def gather_cors(cors): + return await asyncio.gather(*cors) +responses = asyncio.run(gather_cors(cors)) +``` +#### Managing Rate Limit +The package offers several ways to deal with the rate limit. Every function accepts a `tts` parameter which controls the number of seconds the `Client` will wait before making the request. This is useful if running a lot of coroutines at once. + ``` python + cors = [get_player_profile(name, tts = i / 10) for i, name in enumerate(usernames)] +``` +The second method is to adjust the ```rate_limit_handler``` attribute of the `Client` object. +``` python +Client.rate_limit_handler.tries = 2 +Client.rate_limit_handler.tts = 4 +``` +If the initial request gets rate limited the client will automatically retry the request **2 more times** with an interval of **4 seconds**. +#### Configuring Headers +Headers and and other request parameters can be set through the `Client` object. Official Chess.com documentation recommends adding a `User-Agent` header. +``` python +from chessdotcom import Client +Client.request_config["headers"]["User-Agent"] = ( + "My Python Application. " + "Contact me at email@example.com" +) +``` +All the methods from the package will now include the header when making a request to the API. +### Contact +* Email me at <sarartur.ruk@gmail.com> or open a new [Issue](https://github.com/sarartur/chess.com/issues) on Github. + +%package -n python3-chess.com +Summary: Python Wrapper for Chess.com API +Provides: python-chess.com +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-chess.com +Python wrapper for Chess.com API which provides public data from the chess.com website. All endpoints provided by Chess.com's API are available in the respectively named methods. +## Installation +**The package requires Python 3.7 or higher**. +Install latest version from [PyPI](https://pypi.org/project/chess.com/): ```pip install chess.com``` +## Resources +* Documentation: [readthedocs.org](https://chesscom.readthedocs.io/) +* Published-Data API: [chess.com](https://www.chess.com/news/view/published-data-api) +## Usage +### Retrieving Data +All the functions return a `ChessDotComResponse` object. The data can be accessed in dictionary format or via attributes. +The package uses [aiohttp](https://docs.aiohttp.org/en/stable/) for asynchronous requests and [requests](https://requests.readthedocs.io/en/latest/) for synchronous requests to interact with the API. +#### Synchronous +``` python +from chessdotcom import get_player_profile +response = get_player_profile("fabianocaruana") +player_name = response.json['player']['name'] +player_name = response.player.name +``` +#### Asynchronous +``` python +import asyncio +from chessdotcom.aio import get_player_profile +usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"] +cors = [get_player_profile(name) for name in usernames] +async def gather_cors(cors): + return await asyncio.gather(*cors) +responses = asyncio.run(gather_cors(cors)) +``` +#### Managing Rate Limit +The package offers several ways to deal with the rate limit. Every function accepts a `tts` parameter which controls the number of seconds the `Client` will wait before making the request. This is useful if running a lot of coroutines at once. + ``` python + cors = [get_player_profile(name, tts = i / 10) for i, name in enumerate(usernames)] +``` +The second method is to adjust the ```rate_limit_handler``` attribute of the `Client` object. +``` python +Client.rate_limit_handler.tries = 2 +Client.rate_limit_handler.tts = 4 +``` +If the initial request gets rate limited the client will automatically retry the request **2 more times** with an interval of **4 seconds**. +#### Configuring Headers +Headers and and other request parameters can be set through the `Client` object. Official Chess.com documentation recommends adding a `User-Agent` header. +``` python +from chessdotcom import Client +Client.request_config["headers"]["User-Agent"] = ( + "My Python Application. " + "Contact me at email@example.com" +) +``` +All the methods from the package will now include the header when making a request to the API. +### Contact +* Email me at <sarartur.ruk@gmail.com> or open a new [Issue](https://github.com/sarartur/chess.com/issues) on Github. + +%package help +Summary: Development documents and examples for chess.com +Provides: python3-chess.com-doc +%description help +Python wrapper for Chess.com API which provides public data from the chess.com website. All endpoints provided by Chess.com's API are available in the respectively named methods. +## Installation +**The package requires Python 3.7 or higher**. +Install latest version from [PyPI](https://pypi.org/project/chess.com/): ```pip install chess.com``` +## Resources +* Documentation: [readthedocs.org](https://chesscom.readthedocs.io/) +* Published-Data API: [chess.com](https://www.chess.com/news/view/published-data-api) +## Usage +### Retrieving Data +All the functions return a `ChessDotComResponse` object. The data can be accessed in dictionary format or via attributes. +The package uses [aiohttp](https://docs.aiohttp.org/en/stable/) for asynchronous requests and [requests](https://requests.readthedocs.io/en/latest/) for synchronous requests to interact with the API. +#### Synchronous +``` python +from chessdotcom import get_player_profile +response = get_player_profile("fabianocaruana") +player_name = response.json['player']['name'] +player_name = response.player.name +``` +#### Asynchronous +``` python +import asyncio +from chessdotcom.aio import get_player_profile +usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"] +cors = [get_player_profile(name) for name in usernames] +async def gather_cors(cors): + return await asyncio.gather(*cors) +responses = asyncio.run(gather_cors(cors)) +``` +#### Managing Rate Limit +The package offers several ways to deal with the rate limit. Every function accepts a `tts` parameter which controls the number of seconds the `Client` will wait before making the request. This is useful if running a lot of coroutines at once. + ``` python + cors = [get_player_profile(name, tts = i / 10) for i, name in enumerate(usernames)] +``` +The second method is to adjust the ```rate_limit_handler``` attribute of the `Client` object. +``` python +Client.rate_limit_handler.tries = 2 +Client.rate_limit_handler.tts = 4 +``` +If the initial request gets rate limited the client will automatically retry the request **2 more times** with an interval of **4 seconds**. +#### Configuring Headers +Headers and and other request parameters can be set through the `Client` object. Official Chess.com documentation recommends adding a `User-Agent` header. +``` python +from chessdotcom import Client +Client.request_config["headers"]["User-Agent"] = ( + "My Python Application. " + "Contact me at email@example.com" +) +``` +All the methods from the package will now include the header when making a request to the API. +### Contact +* Email me at <sarartur.ruk@gmail.com> or open a new [Issue](https://github.com/sarartur/chess.com/issues) on Github. + +%prep +%autosetup -n chess.com-2.0.6 + +%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-chess.com -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.6-1 +- Package Spec generated @@ -0,0 +1 @@ +812d7aca0e77709ab075534963094016 chess.com-2.0.6.tar.gz |
