Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

samples directory now passes the missing-function-docstring linter #640

Merged
merged 5 commits into from
Dec 22, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions benchmarks/bench_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@


async def index_records(client: Any, index_name: str, item_count: int) -> None:
"""asynchronously bulk index item_count records into the index (index_name)"""
await asyncio.gather(
*[
client.index(
Expand All @@ -34,6 +35,10 @@ async def index_records(client: Any, index_name: str, item_count: int) -> None:


async def test_async(client_count: int = 1, item_count: int = 1) -> None:
"""
asynchronously index with item_count records and run client_count clients. This function can be used to
test balancing the number of items indexed with the number of documents.
"""
host = "localhost"
port = 9200
auth = ("admin", "admin")
Expand Down Expand Up @@ -74,6 +79,7 @@ async def test_async(client_count: int = 1, item_count: int = 1) -> None:


def test(item_count: int = 1, client_count: int = 1) -> None:
"""sets up and executes the asynchronous tests"""
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(test_async(item_count, client_count))
Expand All @@ -84,26 +90,32 @@ def test(item_count: int = 1, client_count: int = 1) -> None:


def test_1() -> None:
"""run a test for one item and 32*ITEM_COUNT clients"""
test(1, 32 * ITEM_COUNT)


def test_2() -> None:
"""run a test for two items and 16*ITEM_COUNT clients"""
test(2, 16 * ITEM_COUNT)


def test_4() -> None:
"""run a test for two items and 8*ITEM_COUNT clients"""
test(4, 8 * ITEM_COUNT)


def test_8() -> None:
"""run a test for four items and 4*ITEM_COUNT clients"""
test(8, 4 * ITEM_COUNT)


def test_16() -> None:
"""run a test for 16 items and 2*ITEM_COUNT clients"""
test(16, 2 * ITEM_COUNT)


def test_32() -> None:
"""run a test for 32 items and ITEM_COUNT clients"""
test(32, ITEM_COUNT)


Expand Down
7 changes: 7 additions & 0 deletions benchmarks/bench_info_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@


def get_info(client: Any, request_count: int) -> float:
"""get info from client"""
tt: float = 0
for n in range(request_count):
start = time.time() * 1000
Expand All @@ -31,6 +32,7 @@ def get_info(client: Any, request_count: int) -> float:


def test(thread_count: int = 1, request_count: int = 1, client_count: int = 1) -> None:
"""test to index with thread_count threads, item_count records and run client_count clients"""
host = "localhost"
port = 9200
auth = ("admin", "admin")
Expand Down Expand Up @@ -79,22 +81,27 @@ def test(thread_count: int = 1, request_count: int = 1, client_count: int = 1) -


def test_1() -> None:
"""testing 1 threads"""
test(1, 32 * REQUEST_COUNT, 1)


def test_2() -> None:
"""testing 2 threads"""
test(2, 16 * REQUEST_COUNT, 2)


def test_4() -> None:
"""testing 4 threads"""
test(4, 8 * REQUEST_COUNT, 3)


def test_8() -> None:
"""testing 8 threads"""
test(8, 4 * REQUEST_COUNT, 8)


def test_32() -> None:
"""testing 32 threads"""
test(32, REQUEST_COUNT, 32)


Expand Down
7 changes: 7 additions & 0 deletions benchmarks/bench_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@


def index_records(client: Any, index_name: str, item_count: int) -> Any:
"""bulk index item_count records into index_name"""
tt = 0
for n in range(10):
data: Any = []
Expand All @@ -48,6 +49,7 @@ def index_records(client: Any, index_name: str, item_count: int) -> Any:


def test(thread_count: int = 1, item_count: int = 1, client_count: int = 1) -> None:
"""test to index with thread_count threads, item_count records and run client_count clients"""
host = "localhost"
port = 9200
auth = ("admin", "admin")
Expand Down Expand Up @@ -118,22 +120,27 @@ def test(thread_count: int = 1, item_count: int = 1, client_count: int = 1) -> N


def test_1() -> None:
"""testing 1 threads"""
test(1, 32 * ITEM_COUNT, 1)


def test_2() -> None:
"""testing 2 threads"""
test(2, 16 * ITEM_COUNT, 2)


def test_4() -> None:
"""testing 4 threads"""
test(4, 8 * ITEM_COUNT, 3)


def test_8() -> None:
"""testing 8 threads"""
test(8, 4 * ITEM_COUNT, 8)


def test_32() -> None:
"""testing 32 threads"""
test(32, ITEM_COUNT, 32)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@


def main() -> None:
"""
demonstrates various functions to operate on the index (e.g. clear different levels of cache, refreshing the
index)
"""
# Set up
client = OpenSearch(
hosts=["https://localhost:9200"],
Expand Down
6 changes: 6 additions & 0 deletions samples/aws/search_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@


def main() -> None:
"""
connects to a cluster specified in environment variables, creates an index, inserts documents,
searches the index, deletes the document, deletes the index.
the environment variables are "ENDPOINT" for the cluster endpoint, AWS_REGION for the region in which the cluster
is hosted, and SERVICE to indicate if this is an ES 7.10.2 compatible cluster
"""
# verbose logging
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)

Expand Down
10 changes: 9 additions & 1 deletion samples/aws/search_urllib3.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,18 @@


def main() -> None:
"""
1. connects to an OpenSearch cluster on AWS defined by environment variables (i.e. ENDPOINT - cluster endpoint like
my-test-domain.us-east-1.es.amazonaws.com; AWS_REGION like us-east-1, us-west-2; and SERVICE like es which
differentiates beteween serverless and the managed service.
2. creates an index called "movies" and adds a single document
3. queries for that document
4. deletes the document
5. deletes the index
"""
# verbose logging
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)

# cluster endpoint, for example: my-test-domain.us-east-1.es.amazonaws.com
url = urlparse(environ["ENDPOINT"])
region = environ.get("AWS_REGION", "us-east-1")
service = environ.get("SERVICE", "es")
Expand Down
1 change: 1 addition & 0 deletions samples/bulk/bulk_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@


def main() -> None:
"""demonstrates how to bulk load data into an index"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/bulk/bulk_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@


def main() -> None:
"""
demonstrates how to bulk load data using opensearchpy.helpers including examples of serial, parallel, and streaming
bulk load
"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/bulk/bulk_ld.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@


def main() -> None:
"""
bulk index 100 items and then delete the index
:return:
"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/document_lifecycle/document_lifecycle_sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@


def main() -> None:
"""
provides samples for different ways to handle documents including indexing, searching, updating, and deleting
:return:
"""
# Connect to OpenSearch
client = OpenSearch(
hosts=["https://localhost:9200"],
Expand Down
5 changes: 5 additions & 0 deletions samples/hello/hello.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@


def main() -> None:
"""
an example showing how to create an synchronous connection to OpenSearch, create an index, index a document
and search to return the document
:return:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @macohen,

Thanks for your contribution! I've noticed that :return: appears to be empty at several places. Could you please fill it or remove it if not essential?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done! thanks for the review. :)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Linter is failing. Could you please run nox -rs format

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah. I saw that after I pushed. fixing log_collection_sample.py

"""
host = "localhost"
port = 9200
auth = ("admin", "admin") # For testing only. Don't store credentials in code.
Expand Down
5 changes: 5 additions & 0 deletions samples/hello/hello_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@


async def main() -> None:
"""
an example showing how to create an asynchronous connection to OpenSearch, create an index, index a document
and search to return the document
:return:
"""
# connect to OpenSearch
host = "localhost"
port = 9200
Expand Down
25 changes: 17 additions & 8 deletions samples/index_template/index_template_sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,20 @@


def main() -> None:
"""
1. connects to an OpenSearch instance running on localhost
2. Create an index template named `books` with default settings and mappings for indices of
the `books-*` pattern. You can create an index template to define default settings and mappings for indices
of certain patterns.
3. When creating an index that matches the `books-*` pattern, OpenSearch will automatically apply the template's
settings and mappings to the index. Create an index named books-nonfiction and verify that its settings and mappings
match those of the template
4. If multiple index templates match the index's name, OpenSearch will apply the template with the highest
`priority`. In the example, two templates are created with different priorities.
5. Composable index templates are a new type of index template that allow you to define multiple component templates
and compose them into a final template. The last part of the example before cleaning up creates a component
template named `books_mappings` with default mappings for indices of the `books-*` and `books-fiction-*` patterns.
"""
# Create a client instance
client = OpenSearch(
hosts=["https://localhost:9200"],
Expand All @@ -20,8 +34,7 @@ def main() -> None:
http_auth=("admin", "admin"),
)

# You can create an index template to define default settings and mappings for indices of certain patterns.
# The following example creates an index template named `books` with default settings and mappings for indices of the `books-*` pattern:
# create an index template
client.indices.put_index_template(
name="books",
body={
Expand All @@ -41,13 +54,10 @@ def main() -> None:
},
)

# Now, when you create an index that matches the `books-*` pattern, OpenSearch will automatically apply the template's settings and mappings to the index.
# Let's create an index named books-nonfiction and verify that its settings and mappings match those of the template:
# create the index which applies the index template settings matched by pattern
client.indices.create(index="books-nonfiction")
print(client.indices.get(index="books-nonfiction"))

# If multiple index templates match the index's name, OpenSearch will apply the template with the highest `priority`.
# The following example creates two index templates named `books-*` and `books-fiction-*` with different settings:
client.indices.put_index_template(
name="books",
body={
Expand All @@ -74,8 +84,6 @@ def main() -> None:
client.indices.create(index="books-fiction-romance")
print(client.indices.get(index="books-fiction-romance"))

# Composable index templates are a new type of index template that allow you to define multiple component templates and compose them into a final template.
# The following example creates a component template named `books_mappings` with default mappings for indices of the `books-*` and `books-fiction-*` patterns:
client.cluster.put_component_template(
name="books_mappings",
body={
Expand All @@ -92,6 +100,7 @@ def main() -> None:
},
)

# composable index templates
client.indices.put_index_template(
name="books",
body={
Expand Down
4 changes: 4 additions & 0 deletions samples/json/json_hello.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@


def main() -> None:
"""
demonstrates how to index a document using a dict
:return:
"""
# connect to OpenSearch

host = "localhost"
Expand Down
5 changes: 5 additions & 0 deletions samples/json/json_hello_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@


async def main() -> None:
"""
this sample uses asyncio and AsyncOpenSearch to asynchronously connect to local OpenSearch cluster, create an index,
index data, search the index, delete the document, delete the index
:return:
"""
# connect to OpenSearch
host = "localhost"
port = 9200
Expand Down
4 changes: 4 additions & 0 deletions samples/knn/knn_async_basics.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@


async def main() -> None:
"""
asynchronously create, bulk index, and query kNN. then delete the index
:return:
"""
# connect to an instance of OpenSearch
host = os.getenv("HOST", default="localhost")
port = int(os.getenv("PORT", 9200))
Expand Down
4 changes: 4 additions & 0 deletions samples/knn/knn_basics.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@


def main() -> None:
"""
create, bulk index, and query kNN. then delete the index
:return:
"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/knn/knn_boolean_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@


def main() -> None:
"""
create and query a kNN index
:return:
"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/knn/knn_efficient_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@


def main() -> None:
"""
create a kNN index using Lucene and query it using filters
:return:
"""
# connect to an instance of OpenSearch

host = os.getenv("HOST", default="localhost")
Expand Down
4 changes: 4 additions & 0 deletions samples/logging/log_collection_sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@


def main() -> None:
"""
sample for custom logging; this shows how to create a console handler, connect to OpenSearch, define a custom
logger and log to an OpenSearch index
"""
print("Collecting logs.")

# Create a console handler
Expand Down
Loading
Loading