From dac86f15d54a7327b59a97846db2225db8fe3d48 Mon Sep 17 00:00:00 2001 From: Madeesh Kannan Date: Thu, 8 Feb 2024 13:16:05 +0100 Subject: [PATCH] ci: Generate API docs for Pinecone (#359) * ci: Generate API docs for Pinecone * Add working directory --- .github/workflows/pinecone.yml | 8 +++ integrations/pinecone/pydoc/config.yml | 32 +++++++++++ integrations/pinecone/pyproject.toml | 75 ++++++++------------------ 3 files changed, 63 insertions(+), 52 deletions(-) create mode 100644 integrations/pinecone/pydoc/config.yml diff --git a/.github/workflows/pinecone.yml b/.github/workflows/pinecone.yml index fe1b1d456..a82fb74de 100644 --- a/.github/workflows/pinecone.yml +++ b/.github/workflows/pinecone.yml @@ -10,6 +10,10 @@ on: - "integrations/pinecone/**" - ".github/workflows/pinecone.yml" +defaults: + run: + working-directory: integrations/pinecone + concurrency: group: pinecone-${{ github.head_ref }} cancel-in-progress: true @@ -46,6 +50,10 @@ jobs: if: matrix.python-version == '3.9' run: hatch run lint:all + - name: Generate docs + if: matrix.python-version == '3.9' && runner.os == 'Linux' + run: hatch run docs + - name: Run tests working-directory: integrations/pinecone run: hatch run cov diff --git a/integrations/pinecone/pydoc/config.yml b/integrations/pinecone/pydoc/config.yml new file mode 100644 index 000000000..f2d6b338b --- /dev/null +++ b/integrations/pinecone/pydoc/config.yml @@ -0,0 +1,32 @@ +loaders: + - type: haystack_pydoc_tools.loaders.CustomPythonLoader + search_path: [../src] + modules: + [ + "haystack_integrations.components.retrievers.pinecone.dense_retriever", + "haystack_integrations.document_stores.pinecone.document_store", + "haystack_integrations.document_stores.pinecone.errors", + "haystack_integrations.document_stores.pinecone.filters", + ] + ignore_when_discovered: ["__init__"] +processors: + - type: filter + expression: + documented_only: true + do_not_filter_modules: false + skip_empty_modules: true + - type: smart + - type: crossref +renderer: + type: haystack_pydoc_tools.renderers.ReadmePreviewRenderer + excerpt: Pinecone integration for Haystack + category_slug: haystack-integrations + title: Pinecone + slug: integrations-pinecone + order: 150 + markdown: + descriptive_class_title: false + descriptive_module_title: true + add_method_class_prefix: true + add_member_class_prefix: false + filename: _readme_pinecone.md diff --git a/integrations/pinecone/pyproject.toml b/integrations/pinecone/pyproject.toml index c95ee0aac..f7dbe8df9 100644 --- a/integrations/pinecone/pyproject.toml +++ b/integrations/pinecone/pyproject.toml @@ -10,9 +10,7 @@ readme = "README.md" requires-python = ">=3.8" license = "Apache-2.0" keywords = [] -authors = [ - { name = "deepset GmbH", email = "info@deepset.ai" }, -] +authors = [{ name = "deepset GmbH", email = "info@deepset.ai" }] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", @@ -25,8 +23,8 @@ classifiers = [ ] dependencies = [ "haystack-ai", - "pinecone-client<3", # our implementation is not compatible with pinecone-client>=3 - # see https://github.com/deepset-ai/haystack-core-integrations/issues/223 + "pinecone-client<3", # our implementation is not compatible with pinecone-client>=3 + # see https://github.com/deepset-ai/haystack-core-integrations/issues/223 ] [project.urls] @@ -50,47 +48,28 @@ dependencies = [ "coverage[toml]>=6.5", "pytest", "pytest-xdist", + "haystack-pydoc-tools", ] [tool.hatch.envs.default.scripts] # Pinecone tests are slow (require HTTP requests), so we run them in parallel # with pytest-xdist (https://pytest-xdist.readthedocs.io/en/stable/distribution.html) test = "pytest -n auto --maxprocesses=2 {args:tests}" test-cov = "coverage run -m pytest -n auto --maxprocesses=2 {args:tests}" -cov-report = [ - "- coverage combine", - "coverage report", -] -cov = [ - "test-cov", - "cov-report", -] +cov-report = ["- coverage combine", "coverage report"] +cov = ["test-cov", "cov-report"] +docs = ["pydoc-markdown pydoc/config.yml"] [[tool.hatch.envs.all.matrix]] python = ["3.8", "3.9", "3.10", "3.11"] [tool.hatch.envs.lint] detached = true -dependencies = [ - "black>=23.1.0", - "mypy>=1.0.0", - "ruff>=0.0.243", - "numpy", -] +dependencies = ["black>=23.1.0", "mypy>=1.0.0", "ruff>=0.0.243", "numpy"] [tool.hatch.envs.lint.scripts] typing = "mypy --install-types --non-interactive --explicit-package-bases {args:src/ tests}" -style = [ - "ruff {args:.}", - "black --check --diff {args:.}", -] -fmt = [ - "black {args:.}", - "ruff --fix {args:.}", - "style", -] -all = [ - "style", - "typing", -] +style = ["ruff {args:.}", "black --check --diff {args:.}"] +fmt = ["black {args:.}", "ruff --fix {args:.}", "style"] +all = ["style", "typing"] [tool.hatch.metadata] allow-direct-references = true @@ -136,9 +115,15 @@ ignore = [ # Allow boolean positional values in function calls, like `dict.get(... True)` "FBT003", # Ignore checks for possible passwords - "S105", "S106", "S107", + "S105", + "S106", + "S107", # Ignore complexity - "C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915", + "C901", + "PLR0911", + "PLR0912", + "PLR0913", + "PLR0915", ] unfixable = [ # Don't touch unused imports @@ -159,33 +144,19 @@ ban-relative-imports = "parents" source_pkgs = ["src", "tests"] branch = true parallel = true -omit = [ - "examples" -] +omit = ["examples"] [tool.coverage.paths] pinecone_haystack = ["src/*"] tests = ["tests"] [tool.coverage.report] -exclude_lines = [ - "no cov", - "if __name__ == .__main__.:", - "if TYPE_CHECKING:", -] +exclude_lines = ["no cov", "if __name__ == .__main__.:", "if TYPE_CHECKING:"] [tool.pytest.ini_options] minversion = "6.0" -markers = [ - "unit: unit tests", - "integration: integration tests" -] +markers = ["unit: unit tests", "integration: integration tests"] [[tool.mypy.overrides]] -module = [ - "pinecone.*", - "haystack.*", - "haystack_integrations.*", - "pytest.*" -] +module = ["pinecone.*", "haystack.*", "haystack_integrations.*", "pytest.*"] ignore_missing_imports = true