diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f79929bc..40013d62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,10 +31,10 @@ jobs: PIP_DISABLE_PIP_VERSION_CHECK: 1 - name: Install Dependencies run: | - python -m pip install -r dev-requirements.txt + python -m pip install nox - name: Run Tests run: | - python setup.py test + python -m nox -rs test-${{ matrix.entry.python-version }} - name: Upload coverage to Codecov uses: codecov/codecov-action@v2 with: diff --git a/.github/workflows/unified-release.yml b/.github/workflows/unified-release.yml index c2e707db..d33bdd98 100644 --- a/.github/workflows/unified-release.yml +++ b/.github/workflows/unified-release.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - stack_version: ['2.4.0'] + stack_version: ['2.4.1'] steps: - name: Checkout diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e4dd37a..c45cc7da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # CHANGELOG Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +## [2.4.1] +### Added +### Changed +### Deprecated +### Removed +### Fixed +- Fix dependency on `aiohttp` ([#594](https://github.com/opensearch-project/opensearch-py/pull/594)) +### Security + ## [2.4.0] ### Added - Added generating imports and headers to API generator ([#467](https://github.com/opensearch-project/opensearch-py/pull/467)) diff --git a/RELEASING.md b/RELEASING.md index 324c3d55..fdf80f16 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -37,4 +37,4 @@ The release process is standard across repositories in this org and is run by a 1. The [release-drafter.yml](.github/workflows/release-drafter.yml) will be automatically kicked off and a draft release will be created. 1. This draft release triggers the [jenkins release workflow](https://build.ci.opensearch.org/job/opensearch-py-release/) as a result of which opensearch-py client is released on [PyPi](https://pypi.org/project/opensearch-py/). 1. Once the above release workflow is successful, the drafted release on GitHub is published automatically. -1. Increment "version" in [_version.py](./opensearchpy/_version.py) to the next patch release, e.g. v2.1.1. See [example](https://github.com/opensearch-project/opensearch-py/pull/167). \ No newline at end of file +1. Add an "Unreleased" section to CHANGELOG, and increment version to the next patch release, e.g. v2.1.1. See [example](https://github.com/opensearch-project/opensearch-py/pull/593). \ No newline at end of file diff --git a/benchmarks/poetry.lock b/benchmarks/poetry.lock index a0178934..145d183d 100644 --- a/benchmarks/poetry.lock +++ b/benchmarks/poetry.lock @@ -515,7 +515,7 @@ files = [ [[package]] name = "opensearch-py" -version = "2.4.0" +version = "2.4.1" description = "Python client for OpenSearch" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" diff --git a/noxfile.py b/noxfile.py index 296ea8a4..510d30c7 100644 --- a/noxfile.py +++ b/noxfile.py @@ -45,6 +45,14 @@ @nox.session(python=["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]) # type: ignore def test(session: Any) -> None: session.install(".") + # ensure client can be imported without aiohttp + session.run("python", "-c", "import opensearchpy\nprint(opensearchpy.OpenSearch())") + # ensure client can be imported with aiohttp + session.install(".[async]") + session.run( + "python", "-c", "import opensearchpy\nprint(opensearchpy.AsyncOpenSearch())" + ) + session.install("-r", "dev-requirements.txt") session.run("python", "setup.py", "test") diff --git a/opensearchpy/__init__.py b/opensearchpy/__init__.py index e9ef6485..aa528c98 100644 --- a/opensearchpy/__init__.py +++ b/opensearchpy/__init__.py @@ -44,12 +44,8 @@ logger = logging.getLogger("opensearch") logger.addHandler(logging.NullHandler()) -from ._async.client import AsyncOpenSearch -from ._async.http_aiohttp import AIOHttpConnection, AsyncConnection -from ._async.transport import AsyncTransport from .client import OpenSearch from .connection import ( - AsyncHttpConnection, Connection, RequestsHttpConnection, Urllib3HttpConnection, @@ -76,12 +72,7 @@ UnknownDslObject, ValidationException, ) -from .helpers import ( - AWSV4SignerAsyncAuth, - AWSV4SignerAuth, - RequestsAWSV4SignerAuth, - Urllib3AWSV4SignerAuth, -) +from .helpers import AWSV4SignerAuth, RequestsAWSV4SignerAuth, Urllib3AWSV4SignerAuth from .helpers.aggs import A from .helpers.analysis import analyzer, char_filter, normalizer, token_filter, tokenizer from .helpers.document import Document, InnerDoc, MetaField @@ -159,7 +150,6 @@ "JSONSerializer", "Connection", "RequestsHttpConnection", - "AsyncHttpConnection", "Urllib3HttpConnection", "ImproperlyConfigured", "OpenSearchException", @@ -178,7 +168,6 @@ "AWSV4SignerAuth", "Urllib3AWSV4SignerAuth", "RequestsAWSV4SignerAuth", - "AWSV4SignerAsyncAuth", "A", "AttrDict", "AttrList", @@ -251,10 +240,23 @@ "normalizer", "token_filter", "tokenizer", - "AIOHttpConnection", - "AsyncConnection", - "AsyncTransport", - "AsyncOpenSearch", - "AsyncHttpConnection", "__versionstr__", ] + +try: + from ._async.client import AsyncOpenSearch + from ._async.http_aiohttp import AIOHttpConnection, AsyncConnection + from ._async.transport import AsyncTransport + from .connection import AsyncHttpConnection + from .helpers import AWSV4SignerAsyncAuth + + __all__ += [ + "AIOHttpConnection", + "AsyncConnection", + "AsyncTransport", + "AsyncOpenSearch", + "AsyncHttpConnection", + "AWSV4SignerAsyncAuth", + ] +except (ImportError, SyntaxError): + pass diff --git a/opensearchpy/_version.py b/opensearchpy/_version.py index 8883d395..371c642d 100644 --- a/opensearchpy/_version.py +++ b/opensearchpy/_version.py @@ -25,4 +25,4 @@ # specific language governing permissions and limitations # under the License. -__versionstr__: str = "2.4.0" +__versionstr__: str = "2.4.1" diff --git a/opensearchpy/connection/__init__.py b/opensearchpy/connection/__init__.py index 40037859..287b7ecb 100644 --- a/opensearchpy/connection/__init__.py +++ b/opensearchpy/connection/__init__.py @@ -27,7 +27,6 @@ from .base import Connection -from .http_async import AsyncHttpConnection from .http_requests import RequestsHttpConnection from .http_urllib3 import Urllib3HttpConnection, create_ssl_context @@ -36,5 +35,13 @@ "RequestsHttpConnection", "Urllib3HttpConnection", "create_ssl_context", - "AsyncHttpConnection", ] + +try: + from .http_async import AsyncHttpConnection + + __all__ += [ + "AsyncHttpConnection", + ] +except (ImportError, SyntaxError): + pass