From b6d08cf245c3b9aabe71e03baaa501734bb06114 Mon Sep 17 00:00:00 2001 From: Evert Arends Date: Tue, 6 Oct 2020 14:44:38 +0200 Subject: [PATCH 01/24] Updated standards and fixed problems with python 3.8 - Updated version - Removed percentage operator in favor of f-strings - Added HTTPBasicAuth to auth for stricter reading - Removed python from HTTPBasicAuth header, to make this API work with the latest version of python. --- woocommerce/api.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/woocommerce/api.py b/woocommerce/api.py index f0f4206..f16642f 100644 --- a/woocommerce/api.py +++ b/woocommerce/api.py @@ -5,7 +5,7 @@ """ __title__ = "woocommerce-api" -__version__ = "2.1.1" +__version__ = "2.1.2" __author__ = "Claudio Sanches @ Automattic" __license__ = "MIT" @@ -13,6 +13,7 @@ from json import dumps as jsonencode from time import time from woocommerce.oauth import OAuth +from requests.auth import HTTPBasicAuth try: from urllib.parse import urlencode @@ -44,12 +45,12 @@ def __get_url(self, endpoint): api = "wc-api" if url.endswith("/") is False: - url = "%s/" % url + url = f"{url}/" if self.wp_api: api = "wp-json" - return "%s%s/%s/%s" % (url, api, self.version, endpoint) + return f"{url}{api}/{self.version}/{endpoint}" def __get_oauth_url(self, url, method, **kwargs): """ Generate oAuth1.0a URL """ @@ -71,12 +72,12 @@ def __request(self, method, endpoint, data, params=None, **kwargs): url = self.__get_url(endpoint) auth = None headers = { - "user-agent": "WooCommerce API Client-Python/%s" % __version__, + "user-agent": f'WooCommerce API {__version__}', "accept": "application/json" } if self.is_ssl is True and self.query_string_auth is False: - auth = (self.consumer_key, self.consumer_secret) + auth = HTTPBasicAuth(self.consumer_key, self.consumer_secret) elif self.is_ssl is True and self.query_string_auth is True: params.update({ "consumer_key": self.consumer_key, @@ -84,7 +85,7 @@ def __request(self, method, endpoint, data, params=None, **kwargs): }) else: encoded_params = urlencode(params) - url = "%s?%s" % (url, encoded_params) + url = f"{url}?{encoded_params}" url = self.__get_oauth_url(url, method, **kwargs) if data is not None: @@ -122,4 +123,3 @@ def delete(self, endpoint, **kwargs): def options(self, endpoint, **kwargs): """ OPTIONS requests """ return self.__request("OPTIONS", endpoint, None, **kwargs) - From a21677623bfc3f6a1a3e6d3117dd12f949a1e3ff Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:27:48 -0300 Subject: [PATCH 02/24] Version 3.0.0 --- .gitignore | 4 ++-- requirements-test.txt | 2 +- requirements.txt | 3 +-- woocommerce/__init__.py | 2 +- woocommerce/api.py | 4 ++-- woocommerce/oauth.py | 20 +++++--------------- 6 files changed, 12 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index b542cee..d96eb55 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,6 @@ __pycache__ build/ dist/ *.egg-info/ -run.py -run3.py +sample.py .vscode/ +env/ diff --git a/requirements-test.txt b/requirements-test.txt index 00b7a73..4255091 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,3 +1,3 @@ -r requirements.txt -httmock==1.3.0 +httmock==1.4.0 nose==1.3.7 diff --git a/requirements.txt b/requirements.txt index 93cf612..9d84d35 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -requests==2.22.0 -ordereddict==1.1 +requests==2.25.1 diff --git a/woocommerce/__init__.py b/woocommerce/__init__.py index b1d6ec8..15edcc8 100644 --- a/woocommerce/__init__.py +++ b/woocommerce/__init__.py @@ -10,7 +10,7 @@ """ __title__ = "woocommerce" -__version__ = "2.1.1" +__version__ = "3.0.0" __author__ = "Claudio Sanches @ Automattic" __license__ = "MIT" diff --git a/woocommerce/api.py b/woocommerce/api.py index f16642f..a2010e6 100644 --- a/woocommerce/api.py +++ b/woocommerce/api.py @@ -5,7 +5,7 @@ """ __title__ = "woocommerce-api" -__version__ = "2.1.2" +__version__ = "3.0.0" __author__ = "Claudio Sanches @ Automattic" __license__ = "MIT" @@ -72,7 +72,7 @@ def __request(self, method, endpoint, data, params=None, **kwargs): url = self.__get_url(endpoint) auth = None headers = { - "user-agent": f'WooCommerce API {__version__}', + "user-agent": f"WooCommerce API {__version__}", "accept": "application/json" } diff --git a/woocommerce/oauth.py b/woocommerce/oauth.py index 6b5538e..488405a 100644 --- a/woocommerce/oauth.py +++ b/woocommerce/oauth.py @@ -5,7 +5,7 @@ """ __title__ = "woocommerce-oauth" -__version__ = "2.1.1" +__version__ = "3.0.0" __author__ = "Claudio Sanches @ Automattic" __license__ = "MIT" @@ -14,18 +14,8 @@ from hmac import new as HMAC from hashlib import sha1, sha256 from base64 import b64encode - -try: - from urllib.parse import urlencode, quote, unquote, parse_qsl, urlparse -except ImportError: - from urllib import urlencode, quote, unquote - from urlparse import parse_qsl, urlparse - -try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - +from collections import OrderedDict +from urllib.parse import urlencode, quote, unquote, parse_qsl, urlparse class OAuth(object): """ API Class """ @@ -57,7 +47,7 @@ def get_oauth_url(self): query_string = urlencode(params) - return "%s?%s" % (url, query_string) + return f"{url}?{query_string}" def generate_oauth_signature(self, params, url): """ Generate OAuth Signature """ @@ -71,7 +61,7 @@ def generate_oauth_signature(self, params, url): for key, value in params.items()] query_string = "%26".join(query_params) - string_to_sign = "%s&%s&%s" % (self.method, base_request_uri, query_string) + string_to_sign = f"{self.method}&{base_request_uri}&{query_string}" consumer_secret = str(self.consumer_secret) if self.version not in ["v1", "v2"]: From 31b5b01b7fa74c68eb13ac32d9a6a684df1e0016 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:31:57 -0300 Subject: [PATCH 03/24] Updated link and year --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index e6768bc..73248e1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2019, Automattic (https://woocommerce.com/) +Copyright (c) 2021, Automattic (https://automattic.com/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 9a806ae16677496d502d56b4410f7bba85f94416 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:32:09 -0300 Subject: [PATCH 04/24] Updated test matrix --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a8155d6..969a0ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,9 @@ language: python python: - - "2.7" - - "3.5" - "3.6" + - "3.7" + - "3.8" + - "3.9" - "nightly" # command to install dependencies install: From b5ea3ab4d57f96e4c6d7d9e7cc842bdbf6d32de8 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:50:05 -0300 Subject: [PATCH 05/24] Fixed coding standards --- woocommerce/oauth.py | 1 + 1 file changed, 1 insertion(+) diff --git a/woocommerce/oauth.py b/woocommerce/oauth.py index 488405a..62557c0 100644 --- a/woocommerce/oauth.py +++ b/woocommerce/oauth.py @@ -17,6 +17,7 @@ from collections import OrderedDict from urllib.parse import urlencode, quote, unquote, parse_qsl, urlparse + class OAuth(object): """ API Class """ From be81faebfb457e89e053efe3ea4cfaf5fe8288d2 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:50:15 -0300 Subject: [PATCH 06/24] Added .flake8 --- .flake8 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .flake8 diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..80676bc --- /dev/null +++ b/.flake8 @@ -0,0 +1,2 @@ +[flake8] +per-file-ignores = __init__.py:F401 From d510d162e0f07378d1e785902b812ae550bcfc71 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 14:56:21 -0300 Subject: [PATCH 07/24] Updated test framework --- .travis.yml | 2 +- requirements-test.txt | 3 ++- tests.py => test_woocommerce.py | 0 3 files changed, 3 insertions(+), 2 deletions(-) rename tests.py => test_woocommerce.py (100%) diff --git a/.travis.yml b/.travis.yml index 969a0ab..182b326 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,4 +10,4 @@ install: - pip install . - pip install -r requirements-test.txt # command to run tests -script: nosetests +script: pytest diff --git a/requirements-test.txt b/requirements-test.txt index 4255091..950b2c5 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,3 +1,4 @@ -r requirements.txt httmock==1.4.0 -nose==1.3.7 +pytest==6.2.2 +flake8==3.8.4 diff --git a/tests.py b/test_woocommerce.py similarity index 100% rename from tests.py rename to test_woocommerce.py From f6c6d3b49db603771fbbaaa6988b5060df29ac01 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:00:02 -0300 Subject: [PATCH 08/24] Updated test filename --- test_woocommerce.py => test_api.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test_woocommerce.py => test_api.py (100%) diff --git a/test_woocommerce.py b/test_api.py similarity index 100% rename from test_woocommerce.py rename to test_api.py From 28ad7affa4b1486d8d38225ca3e4f4713f319c33 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:03:53 -0300 Subject: [PATCH 09/24] Updated classifiers --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 04115ad..56d8da7 100644 --- a/setup.py +++ b/setup.py @@ -44,10 +44,10 @@ "Natural Language :: English", "License :: OSI Approved :: MIT License", "Programming Language :: Python", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", "Topic :: Software Development :: Libraries :: Python Modules" ], ) From 8cbf59881dda8efa4fde4278ec0f76bf85cb8f0f Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:05:30 -0300 Subject: [PATCH 10/24] Create package publish workflow --- .github/workflows/python-publish.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/python-publish.yml diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..d262e2a --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,28 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries +name: Upload Python Package +on: + release: + types: [created] +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.9' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/* From 24fec0605729a3c8258723cfa7841999a2add967 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:15:51 -0300 Subject: [PATCH 11/24] Update and rename python-publish.yml to publish.yml --- .github/workflows/{python-publish.yml => publish.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{python-publish.yml => publish.yml} (96%) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/publish.yml similarity index 96% rename from .github/workflows/python-publish.yml rename to .github/workflows/publish.yml index d262e2a..d9562ac 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/publish.yml @@ -1,6 +1,6 @@ # This workflow will upload a Python Package using Twine when a release is created # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries -name: Upload Python Package +name: Publish package to PyPI on: release: types: [created] From 9c7ac49ad854ed44ca42777a9c6970bf2bb4af30 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:17:36 -0300 Subject: [PATCH 12/24] Create ci.yml --- .github/workflows/ci.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9fbc3d0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions +name: Run CI +on: + push: + branches: [trunk] + pull_request: + branches: [trunk] +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.6, 3.7, 3.8, 3.9, nightly] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements-test.txt + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest From 575c97f74f2c3f8f4304929e72d74144d7578b3b Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:18:33 -0300 Subject: [PATCH 13/24] Added name to job --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fbc3d0..06ceeae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,12 +8,14 @@ on: branches: [trunk] jobs: build: + name: Build runs-on: ubuntu-latest strategy: matrix: python-version: [3.6, 3.7, 3.8, 3.9, nightly] steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: From c39772a1290f8d875e7cd07c198bf6d030af9165 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:20:40 -0300 Subject: [PATCH 14/24] Remove nightly It doesn't work with PyPy --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06ceeae..82f9239 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.6, 3.7, 3.8, 3.9, nightly] + python-version: [3.6, 3.7, 3.8, 3.9] steps: - name: Checkout code uses: actions/checkout@v2 From 9fb6d13bdbdd3fde244f9a2f05ebe440e680836c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:22:44 -0300 Subject: [PATCH 15/24] Updated CI badge --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 8d30583..f2c26f9 100644 --- a/README.rst +++ b/README.rst @@ -3,8 +3,8 @@ WooCommerce API - Python Client A Python wrapper for the WooCommerce REST API. Easily interact with the WooCommerce REST API using this library. -.. image:: https://secure.travis-ci.org/woocommerce/wc-api-python.svg - :target: http://travis-ci.org/woocommerce/wc-api-python +.. image:: https://github.com/woocommerce/wc-api-python/actions/workflows/ci.yml/badge.svg?branch=trunk + :target: https://github.com/woocommerce/wc-api-python/actions/workflows/ci.yml .. image:: https://img.shields.io/pypi/v/woocommerce.svg :target: https://pypi.python.org/pypi/WooCommerce From 2b7d89419308e21e2ac53a065bac3caa7f52dd1d Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:24:58 -0300 Subject: [PATCH 16/24] Remove travis --- .travis.yml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 182b326..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: python -python: - - "3.6" - - "3.7" - - "3.8" - - "3.9" - - "nightly" -# command to install dependencies -install: - - pip install . - - pip install -r requirements-test.txt -# command to run tests -script: pytest From fe1affbd2c9bd704a13fad6b16ef9fab459ac3d9 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 15:41:18 -0300 Subject: [PATCH 17/24] Introduced user_agent Closes #53 --- README.rst | 2 ++ woocommerce/api.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index f2c26f9..f11da95 100644 --- a/README.rst +++ b/README.rst @@ -58,6 +58,8 @@ Options +-----------------------+-------------+----------+-------------------------------------------------------------------------------------------------------+ | ``query_string_auth`` | ``bool`` | no | Force Basic Authentication as query string when ``True`` and using under HTTPS, default is ``False`` | +-----------------------+-------------+----------+-------------------------------------------------------------------------------------------------------+ +| ``user_agent`` | ``string`` | no | Set a custom User-Agent, default is ``WooCommerce-Python-REST-API/3.0.0`` | ++-----------------------+-------------+----------+-------------------------------------------------------------------------------------------------------+ | ``oauth_timestamp`` | ``integer`` | no | Custom timestamp for requests made with oAuth1.0a | +-----------------------+-------------+----------+-------------------------------------------------------------------------------------------------------+ | ``wp_api`` | ``bool`` | no | Set to ``False`` in order to use the legacy WooCommerce API (deprecated) | diff --git a/woocommerce/api.py b/woocommerce/api.py index a2010e6..e25df49 100644 --- a/woocommerce/api.py +++ b/woocommerce/api.py @@ -34,6 +34,7 @@ def __init__(self, url, consumer_key, consumer_secret, **kwargs): self.timeout = kwargs.get("timeout", 5) self.verify_ssl = kwargs.get("verify_ssl", True) self.query_string_auth = kwargs.get("query_string_auth", False) + self.user_agent = kwargs.get("user_agent", f"WooCommerce-Python-REST-API/{__version__}") def __is_ssl(self): """ Check if url use HTTPS """ @@ -72,7 +73,7 @@ def __request(self, method, endpoint, data, params=None, **kwargs): url = self.__get_url(endpoint) auth = None headers = { - "user-agent": f"WooCommerce API {__version__}", + "user-agent": f"{self.user_agent}", "accept": "application/json" } From c79afe312c58b7af7e8a8ab91546df1585805a57 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:03:36 -0300 Subject: [PATCH 18/24] Added CHANGELOG.md --- CHANGELOG.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5c5b1cd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,80 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [2.1.1] - 2019-07-22 +### Changed +- Updated Request library to 2.22.0. +- Updated examples. + +## [2.1.0] - 2019-01-15 +### Changed +- Uses WP REST API by default, need to set `wp_api` as `False` in order to use the legacy WooCommerce API. +- Updated default REST API version to `wc/v3`. + +## [2.0.0] - 2019-01-15 +### Added +- Added support for custom timestamps in oAuth1.0a requests with `oauth_timestamp`. +- Allow pass custom arguments to "Requests" library.. +### Changed +- Updated "Requests" library to version 2.20.0. + +## [1.2.1] - 2016-12-14 +### Fixed +- Fixed use of `content-type` to fix issues with WordPress 4.7. + +## [1.2.0] - 2016-06-22 +### Added +- Added option `query_string_auth` to allow Basic Auth as query strings. + +## [1.1.1] - 2016-06-03 +### Fixed +- Fixed oAuth signature for WP REST API. + +## [1.1.0] - 2016-05-09 +### Added +- Added support for WP REST API. +- Added method to handle HTTP OPTIONS requests. + +## [1.0.5] - 2015-12-07 +### Fixed +- Fixed oAuth filters sorting. + +## [1.0.4] - 2015-09-25 +### Added +- Adds `timeout` argument for `API` class. + +## [1.0.3] - 2015-08-07 +### Changed +- Forced utf-8 encoding on `API.__request()` to avoid `UnicodeDecodeError`. + +## [1.0.2] - 2015-08-05 +### Fixed +- Fixed handler for query strings. + +## [1.0.1] - 2015-07-13 +### Fixed +- Fixed support for Python 2.6. + +## [1.0.0] - 2015-07-12 +### Added +- Initial release. + +[Unreleased]: https://github.com/woocommerce/wc-api-python/compare/1.0.0...HEAD +[2.1.1]: https://github.com/woocommerce/wc-api-python/compare/2.1.1...2.1.1 +[2.1.0]: https://github.com/woocommerce/wc-api-python/compare/2.0.0...2.1.0 +[2.0.0]: https://github.com/woocommerce/wc-api-python/compare/1.2.1...2.0.0 +[1.2.1]: https://github.com/woocommerce/wc-api-python/compare/1.2.0...1.2.1 +[1.2.0]: https://github.com/woocommerce/wc-api-python/compare/1.1.1...1.2.0 +[1.1.1]: https://github.com/woocommerce/wc-api-python/compare/1.1.0...1.1.1 +[1.1.0]: https://github.com/woocommerce/wc-api-python/compare/1.0.5...1.1.0 +[1.0.5]: https://github.com/woocommerce/wc-api-python/compare/1.0.4...1.0.5 +[1.0.4]: https://github.com/woocommerce/wc-api-python/compare/1.0.3...1.0.4 +[1.0.3]: https://github.com/woocommerce/wc-api-python/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/woocommerce/wc-api-python/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/woocommerce/wc-api-python/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/woocommerce/wc-api-python/releases/tag/1.0.0 From 8e59b68c4285e6322263aff9ec92e441b4af43f2 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:05:09 -0300 Subject: [PATCH 19/24] Link to changelog --- README.rst | 70 +----------------------------------------------------- 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/README.rst b/README.rst index f11da95..38d507b 100644 --- a/README.rst +++ b/README.rst @@ -148,72 +148,4 @@ Request with `params` example Changelog --------- -2.1.1 - 2019/07/22 -~~~~~~~~~~~~~~~~~~ - -- Updated Request library to 2.22.0. -- Updated examples. - -2.1.0 - 2019/01/15 -~~~~~~~~~~~~~~~~~~ - -- Uses WP REST API by default, need to force ``wp_api`` as ``False`` in order to use the legacy WooCommerce API. -- Updated default REST API version to ``wc/v3``. - -2.0.0 - 2019/01/15 -~~~~~~~~~~~~~~~~~~ - -- Updated "Requests" library to version 2.20.0. -- Added support for custom timestamps in oAuth1.0a requests with ``oauth_timestamp``. -- Allow pass custom arguments to "Requests" library. - -1.2.1 - 2016/12/14 -~~~~~~~~~~~~~~~~~~ - -- Fixed WordPress 4.7 compatibility. - -1.2.0 - 2016/06/22 -~~~~~~~~~~~~~~~~~~ - -- Added option ``query_string_auth`` to allow Basic Auth as query strings. - -1.1.1 - 2016/06/03 -~~~~~~~~~~~~~~~~~~ - -- Fixed oAuth signature for WP REST API. - -1.1.0 - 2016/05/09 -~~~~~~~~~~~~~~~~~~ - -- Added support for WP REST API. -- Added method to do HTTP OPTIONS requests. - -1.0.5 - 2015/12/07 -~~~~~~~~~~~~~~~~~~ - -- Fixed oAuth filters sorting. - -1.0.4 - 2015/09/25 -~~~~~~~~~~~~~~~~~~ - -- Implemented ``timeout`` argument for ``API`` class. - -1.0.3 - 2015/08/07 -~~~~~~~~~~~~~~~~~~ - -- Forced utf-8 encoding on ``API.__request()`` to avoid ``UnicodeDecodeError`` - -1.0.2 - 2015/08/05 -~~~~~~~~~~~~~~~~~~ - -- Fixed handler for query strings - -1.0.1 - 2015/07/13 -~~~~~~~~~~~~~~~~~~ - -- Fixed support for Python 2.6 - -1.0.1 - 2015/07/12 -~~~~~~~~~~~~~~~~~~ - -- Initial version +See `CHANGELOG.md `_. From 7e2d1e589f0c53721b0581452a35d08f79fb5f7b Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:17:38 -0300 Subject: [PATCH 20/24] Updated setup.py Includes python_requires, keyworkds and more. --- setup.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 56d8da7..b6897ab 100644 --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ description="A Python wrapper for the WooCommerce REST API", long_description=README, author="Claudio Sanches @ Automattic", + author_email="claudio+pypi@automattic.com" url="https://github.com/woocommerce/wc-api-python", license="MIT License", packages=[ @@ -35,9 +36,9 @@ include_package_data=True, platforms=['any'], install_requires=[ - "requests", - "ordereddict" + "requests" ], + python_requires=">=3.6", classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", @@ -50,4 +51,10 @@ "Programming Language :: Python :: 3.9", "Topic :: Software Development :: Libraries :: Python Modules" ], + keywords='woocommerce rest api', + project_urls={ + 'Documentation': 'https://woocommerce.github.io/woocommerce-rest-api-docs/?python#libraries-and-tools', + 'Source': 'https://github.com/woocommerce/wc-api-python', + 'Tracker': 'https://github.com/woocommerce/wc-api-python/issues', + }, ) From e3a891040a921d16c5647a758d85d820fd1ba113 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:19:14 -0300 Subject: [PATCH 21/24] Fixed typo --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b6897ab..9dae917 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ description="A Python wrapper for the WooCommerce REST API", long_description=README, author="Claudio Sanches @ Automattic", - author_email="claudio+pypi@automattic.com" + author_email="claudio+pypi@automattic.com", url="https://github.com/woocommerce/wc-api-python", license="MIT License", packages=[ From 122eac04bb4d9fa5b23890e1d5dee3b8ab7828df Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:22:03 -0300 Subject: [PATCH 22/24] Updated .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d96eb55..2b50e6d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ dist/ sample.py .vscode/ env/ +.pytest_cache/ From 1f30f1795c3b3b12f9d02cbc979bf53558511290 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:41:33 -0300 Subject: [PATCH 23/24] Removed legacy support --- woocommerce/api.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/woocommerce/api.py b/woocommerce/api.py index e25df49..a97c901 100644 --- a/woocommerce/api.py +++ b/woocommerce/api.py @@ -14,11 +14,7 @@ from time import time from woocommerce.oauth import OAuth from requests.auth import HTTPBasicAuth - -try: - from urllib.parse import urlencode -except ImportError: - from urllib import urlencode +from urllib.parse import urlencode class API(object): From 003e29937e1059c12fb08ff81732bbb61afc6bbf Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sat, 13 Mar 2021 16:51:45 -0300 Subject: [PATCH 24/24] 3.0.0 changelog --- CHANGELOG.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c5b1cd..d08df1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.0.0] - 2021-03-13 +### Removed +- Removed support to legacy Python versions, now supports Python 3.6+. +- Removed ordereddict package dependency. +### Added +- Added support for Python 3.8 and Python 3.9. +- Added option to set custom `user_agent`. +### Changed +- Updated default "User-Agent" to `WooCommerce-Python-REST-API/3.0.0`. +- Updated Request library to 2.25.1. +### Fixed +- Fixed Basic Auth in Python 3.8. + ## [2.1.1] - 2019-07-22 ### Changed - Updated Request library to 2.22.0. @@ -64,8 +77,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Initial release. -[Unreleased]: https://github.com/woocommerce/wc-api-python/compare/1.0.0...HEAD -[2.1.1]: https://github.com/woocommerce/wc-api-python/compare/2.1.1...2.1.1 +[Unreleased]: https://github.com/woocommerce/wc-api-python/compare/3.0.0...HEAD +[3.0.0]: https://github.com/woocommerce/wc-api-python/compare/2.1.1...3.0.0 +[2.1.1]: https://github.com/woocommerce/wc-api-python/compare/2.0.1...2.1.1 [2.1.0]: https://github.com/woocommerce/wc-api-python/compare/2.0.0...2.1.0 [2.0.0]: https://github.com/woocommerce/wc-api-python/compare/1.2.1...2.0.0 [1.2.1]: https://github.com/woocommerce/wc-api-python/compare/1.2.0...1.2.1