Skip to content

feat: Add InstallType.ANY and InstallType.INSTALLABLE enum values#864

Merged
Aaron ("AJ") Steers (aaronsteers) merged 11 commits intomainfrom
devin/1762981002-add-installtype-any-installable
Nov 27, 2025
Merged

feat: Add InstallType.ANY and InstallType.INSTALLABLE enum values#864
Aaron ("AJ") Steers (aaronsteers) merged 11 commits intomainfrom
devin/1762981002-add-installtype-any-installable

Conversation

@aaronsteers
Copy link
Contributor

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Nov 12, 2025

Summary

This PR adds two new enum values to InstallType to make the codebase more maintainable and future-proof:

  • InstallType.ANY - Returns all connectors regardless of install type
  • InstallType.INSTALLABLE - Returns all installable connectors (equivalent to what DOCKER currently does, but with clearer semantics)

The PR also replaces uses of InstallType.DOCKER with InstallType.INSTALLABLE in get_connector_api_docs_urls() and get_connector_version_history() where we were using it to mean "all connectors" rather than specifically Docker connectors.

Key changes:

  1. Added InstallType.ANY and InstallType.INSTALLABLE to the enum
  2. Updated get_available_connectors() to handle the new enum values by consolidating DOCKER, ANY, and INSTALLABLE into a single check (also fixes PLR0911 lint error about too many return statements)
  3. Replaced InstallType.DOCKER with InstallType.INSTALLABLE in two functions where we wanted "all connectors" semantics

No behavior changes - all three enum values (DOCKER, ANY, INSTALLABLE) return the same set of connectors (635 total). This is purely a refactoring to improve code clarity and maintainability.

Review & Testing Checklist for Human

  • Verify semantic clarity: Confirm the distinction between ANY, INSTALLABLE, and DOCKER is clear and matches the intended use cases. Currently all three return identical results - is this the desired behavior?
  • Check backward compatibility: Verify that existing code using InstallType.DOCKER still works correctly and that the replacement with INSTALLABLE in the two functions is appropriate
  • Test the new enum values: Run get_available_connectors(InstallType.ANY) and get_available_connectors(InstallType.INSTALLABLE) to verify they return the expected connector lists
  • Consider documentation: Should we add docstrings to the new enum values explaining when to use each one?

Test Plan

from airbyte.registry import get_available_connectors, InstallType

# Verify all three return the same connectors
installable = get_available_connectors(InstallType.INSTALLABLE)
any_type = get_available_connectors(InstallType.ANY)
docker = get_available_connectors(InstallType.DOCKER)
assert installable == any_type == docker

# Verify the functions using INSTALLABLE still work
from airbyte.registry import get_connector_api_docs_urls, get_connector_version_history
docs = get_connector_api_docs_urls("source-faker")
versions = get_connector_version_history("source-faker")

Notes

Summary by CodeRabbit

  • New Features

    • Added "any" and "installable" installation modes; "installable" is now the default for connector listings.
    • Broader base listing now considers all install types so more connectors are discoverable before filtering.
  • Bug Fixes / Improvements

    • Connector listings, docs links, and version history now consistently respect the new modes and environment-aware availability.
    • Listing/filtering behavior refined to produce more accurate results across runtime environments.

✏️ Tip: You can customize this high-level summary in your review settings.

Important

Auto-merge enabled.

This PR is set to merge automatically when all requirements are met.

- Add InstallType.ANY and InstallType.INSTALLABLE to the InstallType enum
- Update get_available_connectors() to handle new enum values
- Replace InstallType.DOCKER with InstallType.INSTALLABLE in get_connector_api_docs_urls() and get_connector_version_history()
- Consolidate DOCKER, ANY, and INSTALLABLE handling to reduce return statements (fixes PLR0911 lint error)
- No behavior changes, just making code more maintainable and future-proof

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration
Copy link
Contributor

Original prompt from AJ Steers
Received message in Slack channel #ask-devin-ai:

@Devin - In the PyAirbyte MCP server we need to a two new tool called 'Get connector version history' in the registry domain:

For a request regarding specific connector id (source-foo or destination-foo), the tool should return a version history of the connector. For each version the version history needs to contain:
    a. From the registry: the version number, release date
    b. Derived from registry data: name of docker image and DockerHub url to docker image (dynamic from version number)
    c. Also dynamic from connector name: URL to changelog, e.g. <http://docs.airbyte.com/connectors/sources/foo.md#changelog|docs.airbyte.com/connectors/sources/foo.md#changelog> for 'source-foo'.
    d. Scraped from the connector's changelog with parsing errors treated as non-fatal: the PR url and the full title of the PR. (To avoid github rate limiting issues, you may need to scrape from the html link (above), optionally parsing as html or using something like beautiful soup, followed by regex parsing. I'll let you suggest something.)
Your contact points for this project will be me and Nourien Fouad.
Thread URL: https://airbytehq-team.slack.com/archives/C08BHPUMEPJ/p1762888298992019

@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@github-actions
Copy link

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

Testing This PyAirbyte Version

You can test this version of PyAirbyte using the following:

# Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1762981002-add-installtype-any-installable' pyairbyte --help

# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1762981002-add-installtype-any-installable'

Helpful Resources

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /fix-pr - Fixes most formatting and linting issues
  • /poetry-lock - Updates poetry.lock file
  • /test-pr - Runs tests with the updated PyAirbyte

Community Support

Questions? Join the #pyairbyte channel in our Slack workspace.

📝 Edit this welcome message.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 12, 2025

📝 Walkthrough

Walkthrough

InstallType gained INSTALLABLE and ANY; Language values now derive from InstallType; registry cache signature/docstring adjusted; get_available_connectors defaulted to INSTALLABLE and its filtering updated to be environment-aware; list_connectors base set expanded from DOCKER to ANY.

Changes

Cohort / File(s) Summary
Enums & public API
airbyte/registry.py
Added INSTALLABLE = "installable" and ANY = "any" to InstallType; Language members now derive from InstallType values; updated docstrings and public declarations. _get_registry_cache() docstring expanded to describe mapping from registry entries to ConnectorMetadata.
get_available_connectors & validators
airbyte/registry.py
get_available_connectors() default changed to InstallType.INSTALLABLE; inputs resolved to InstallType; INSTALLABLE now returns all connectors when Docker is present, otherwise only Python/manifest-only connectors; ANY treated like DOCKER for "return all" cases. get_connector_api_docs_urls() and get_connector_version_history() use ANY for membership checks and error contexts. Iteration updated to use registry cache items/keys rather than object attributes.
Connector listing base set
airbyte/mcp/connector_registry.py
list_connectors() now seeds from connectors available under InstallType.ANY instead of InstallType.DOCKER, broadening initial candidate set before applying filters (install_types, keyword, type).

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Registry as airbyte/registry.py
    Note right of Registry `#d1f0d1`: install_type ∈ {DOCKER, ANY, INSTALLABLE, PYTHON, YAML, JAVA}
    Client->>Registry: get_available_connectors(install_type)
    alt install_type == DOCKER or install_type == ANY
        Registry-->>Client: return all connectors (registry cache keys)
    else alt install_type == INSTALLABLE
        Registry->>Registry: detect Docker availability
        alt Docker present
            Registry-->>Client: return all connectors
        else Docker absent
            Registry-->>Client: return only PYTHON and MANIFEST_ONLY/YAML connectors
        end
    else
        Registry-->>Client: return connectors filtered by explicit InstallType membership
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Pay extra attention to:
    • All remaining references and messages that may still assume DOCKER rather than ANY/INSTALLABLE.
    • Correctness of Docker-detection logic and edge cases where detection can be flaky.
    • Places expecting persisted or external strings for InstallType — ensure compatibility when values changed to include ANY/INSTALLABLE.
    • Iteration changes (registry cache keys/items) for any callers relying on old connector object attributes — test call sites in mcp/connector_registry.py.

Would you like me to scan the repo for remaining DOCKER-centric checks or update tests that assert old InstallType values, wdyt?

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: adding two new enum values (InstallType.ANY and InstallType.INSTALLABLE) to the InstallType enum, which aligns with the core objective of the PR.
Docstring Coverage ✅ Passed Docstring coverage is 85.71% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1762981002-add-installtype-any-installable

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
airbyte/registry.py (1)

55-56: Consider adding docstrings to clarify the semantic intent of these new enum values?

While the names ANY and INSTALLABLE are fairly self-descriptive, adding brief docstrings would help clarify when to use each versus DOCKER (which also returns all connectors currently). Something like:

 class InstallType(str, Enum):
     """The type of installation for a connector."""
 
     YAML = "yaml"
     PYTHON = "python"
     DOCKER = "docker"
     JAVA = "java"
-    ANY = "any"
-    INSTALLABLE = "installable"
+    ANY = "any"  # Returns all connectors regardless of install type
+    INSTALLABLE = "installable"  # Returns all installable connectors (semantic clarification of DOCKER)

This would help future developers understand the subtle semantic differences, wdyt?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7eb746b and 4c52179.

📒 Files selected for processing (1)
  • airbyte/registry.py (4 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
airbyte/registry.py (1)
airbyte/exceptions.py (1)
  • AirbyteConnectorNotRegisteredError (288-297)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
🔇 Additional comments (3)
airbyte/registry.py (3)

274-275: Nice consolidation that improves maintainability!

Grouping DOCKER, ANY, and INSTALLABLE into a single check makes the code cleaner and addresses the PLR0911 lint issue. The logic correctly reflects that all three enum values should return the complete set of connectors.


450-457: Good semantic clarification using INSTALLABLE instead of DOCKER!

The change better expresses the intent of this validation: checking whether the connector is available/installable in the registry, rather than specifically checking for Docker availability. Since this function retrieves documentation URLs from multiple sources (registry metadata and manifest files), the more general "installable" concept is appropriate here.


510-517: Consistent semantic improvement here as well!

Like the change in get_connector_api_docs_urls(), using INSTALLABLE instead of DOCKER better expresses that this function is checking for connector availability in the registry rather than Docker-specific functionality. The consistency across both functions strengthens the clarity of the codebase.

@github-actions
Copy link

github-actions bot commented Nov 12, 2025

PyTest Results (Fast Tests Only, No Creds)

320 tests  ±0   320 ✅ ±0   5m 51s ⏱️ -3s
  1 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 880a376. ± Comparison against base commit 7eb746b.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
airbyte/registry.py (1)

55-56: Consider adding docstrings to clarify the semantic distinction between ANY and INSTALLABLE?

While the enum values are defined, their specific purposes aren't documented. Based on the PR description, ANY returns all connectors regardless of install type, while INSTALLABLE clarifies semantics for installable connectors. Would it help to add inline comments or docstrings to make this distinction clear for future developers? WDYT?

Example:

     DOCKER = "docker"
     JAVA = "java"
-    ANY = "any"
-    INSTALLABLE = "installable"
+    ANY = "any"  # Returns all connectors regardless of install type
+    INSTALLABLE = "installable"  # Returns all installable connectors (semantic clarification of DOCKER)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4c52179 and ac321a8.

📒 Files selected for processing (1)
  • airbyte/registry.py (4 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
airbyte/registry.py (1)
airbyte/exceptions.py (1)
  • AirbyteConnectorNotRegisteredError (288-297)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
🔇 Additional comments (2)
airbyte/registry.py (2)

450-457: Good semantic improvement using InstallType.ANY here.

The change from InstallType.DOCKER to InstallType.ANY clarifies that this function is checking for connector existence across all install types, not specifically docker-installable connectors. This aligns well with the function's purpose of retrieving documentation URLs regardless of how the connector is installed.


510-517: Consistent semantic improvement here as well.

Just like in get_connector_api_docs_urls(), using InstallType.ANY instead of InstallType.DOCKER better reflects the function's intent to retrieve version history for any connector regardless of install type. The consistency across both functions is good!

- Add explicit handler for InstallType.INSTALLABLE that mirrors the None behavior
- INSTALLABLE is environment-sensitive: returns all connectors if Docker is installed,
  otherwise only Python and YAML connectors
- ANY is environment-independent: always returns all connectors
- Add comprehensive docstrings to InstallType enum to clarify semantics
- Refactor get_available_connectors() to reduce return statements (fixes PLR0911)
- Consolidate None and INSTALLABLE handlers to use single return statements

Co-Authored-By: AJ Steers <aj@airbyte.io>
- Format generator expressions to match ruff's canonical style
- Put expression target on separate line from 'for' clause

Co-Authored-By: AJ Steers <aj@airbyte.io>
@github-actions
Copy link

github-actions bot commented Nov 12, 2025

PyTest Results (Full)

389 tests  ±0   373 ✅ +1   27m 29s ⏱️ - 2m 55s
  1 suites ±0    16 💤 ±0 
  1 files   ±0     0 ❌  - 1 

Results for commit 880a376. ± Comparison against base commit 7eb746b.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bfb7b04 and 08b3564.

📒 Files selected for processing (1)
  • airbyte/registry.py (6 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
airbyte/registry.py (2)
airbyte/_util/meta.py (1)
  • is_docker_installed (193-194)
airbyte/exceptions.py (1)
  • AirbyteConnectorNotRegisteredError (288-297)
🪛 GitHub Actions: Generate Docs
airbyte/registry.py

[error] 13-13: ImportError: cannot import name 'StrEnum' from 'typing'. This prevents docs generation (poetry run poe docs-generate) from loading the Airbyte module.

🪛 GitHub Actions: Run Linters
airbyte/registry.py

[error] 4-4: Import block is unsorted or un-formatted (ruff I001).


[error] 252-252: Line too long (102 > 100).


[error] 1-1: Ruff check failed. Command 'poetry run ruff check .' exited with code 1.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
🔇 Additional comments (5)
airbyte/registry.py (5)

48-66: Nice addition of docstrings and the new enum values!

The semantic distinction between ANY (environment-independent, all connectors) and INSTALLABLE (environment-sensitive, depends on Docker availability) is well documented. This clarifies the intent nicely. Once the import issue is resolved, this looks good to go.


254-268: Environment-aware filtering logic looks solid.

The branching between Docker-available (all connectors) and Docker-unavailable (Python/Manifest-only) correctly implements the INSTALLABLE semantics. The generator expression is a nice touch for memory efficiency.


289-290: Consolidation of DOCKER and ANY handling looks correct.

Both DOCKER and ANY return all connectors unconditionally, so grouping them makes sense. The INSTALLABLE case is now properly handled earlier in the function (lines 254-268) with the environment-aware logic.


465-471: Using InstallType.ANY for existence validation is the right call.

For checking if a connector exists in the registry (regardless of installability), ANY is the correct semantic choice. This aligns with the author's suggestions in the past review comments.


525-531: Consistent usage of InstallType.ANY for validation here too.

This mirrors the pattern in get_connector_api_docs_urls. Good consistency across both functions.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@aaronsteers
Copy link
Contributor Author

Devin, can you fix the ci issues. Thanks.

@aaronsteers Aaron ("AJ") Steers (aaronsteers) changed the title feat: Add InstallType.ANY and InstallType.INSTALLABLE enum values feat: Add InstallType.ANY and InstallType.INSTALLABLE enum values Nov 27, 2025
StrEnum is only available in Python 3.11+, but PyAirbyte supports Python 3.10.
Changed InstallType from StrEnum to (str, Enum) which provides the same
functionality and is compatible with Python 3.10.

This fixes the ImportError: cannot import name 'StrEnum' from 'enum' that
was causing CI failures on Python 3.10.

Co-Authored-By: AJ Steers <aj@airbyte.io>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
airbyte/registry.py (1)

250-299: String "installable" currently hits the error path instead of using INSTALLABLE semantics

get_available_connectors advertises install_type: InstallType | str | None, and you normalize string values to InstallType later. However, "installable" as a string won’t ever take the INSTALLABLE branch:

  • For install_type="installable", the first if install_type is None or install_type == InstallType.INSTALLABLE: is false (Enum vs str).
  • After normalization to InstallType.INSTALLABLE, there is no subsequent branch for INSTALLABLE, so the call falls through and raises PyAirbyteInputError.

If callers pass "installable" (which seems natural given the type hint and other string values), they’ll unexpectedly get an “Invalid install type” error instead of the env‑aware behavior.

Would it be clearer and safer to normalize install_type to an InstallType up front (treating None as INSTALLABLE) and then branch on the enum only, e.g.:

-def get_available_connectors(
-    install_type: InstallType | str | None = InstallType.INSTALLABLE,
-) -> list[str]:
+def get_available_connectors(
+    install_type: InstallType | str | None = InstallType.INSTALLABLE,
+) -> list[str]:
@@
-    if install_type is None or install_type == InstallType.INSTALLABLE:
-        # Filter for installable connectors (default behavior).
-        if is_docker_installed():
-            logger.info("Docker is detected. Returning all connectors.")
-            return sorted(_get_registry_cache().keys())
-
-        logger.info("Docker was not detected. Returning only Python and Manifest-only connectors.")
-        return sorted(
-            [
-                connector_name
-                for connector_name, conn_info in _get_registry_cache().items()
-                if conn_info.language in {Language.PYTHON, Language.MANIFEST_ONLY}
-            ]
-        )
-
-    if not isinstance(install_type, InstallType):
-        install_type = InstallType(install_type)
+    if install_type is None:
+        install_type = InstallType.INSTALLABLE
+    elif not isinstance(install_type, InstallType):
+        install_type = InstallType(install_type)
+
+    if install_type == InstallType.INSTALLABLE:
+        # Filter for installable connectors (default behavior).
+        if is_docker_installed():
+            logger.info("Docker is detected. Returning all connectors.")
+            return sorted(_get_registry_cache().keys())
+
+        logger.info("Docker was not detected. Returning only Python and Manifest-only connectors.")
+        return sorted(
+            [
+                connector_name
+                for connector_name, conn_info in _get_registry_cache().items()
+                if conn_info.language in {Language.PYTHON, Language.MANIFEST_ONLY}
+            ]
+        )
@@
-    if install_type in {InstallType.DOCKER, InstallType.ANY}:
+    if install_type in {InstallType.DOCKER, InstallType.ANY}:
         return sorted(_get_registry_cache().keys())

This would make "installable", InstallType.INSTALLABLE, and None all behave consistently while preserving existing behavior for other values. Wdyt?

🧹 Nitpick comments (1)
airbyte/mcp/connector_registry.py (1)

87-89: Align comment with new InstallType.ANY semantics

Using get_available_connectors(install_type=InstallType.ANY) here makes sense and keeps list_connectors env‑independent. The inline comment still talks about “all support Docker”, which is technically true but might confuse future readers now that ANY is the intentional base. Would you consider updating the comment to mention InstallType.ANY (or “all connectors in the registry”) to reflect the new semantics, wdyt?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 08b3564 and 880a376.

📒 Files selected for processing (2)
  • airbyte/mcp/connector_registry.py (1 hunks)
  • airbyte/registry.py (6 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
airbyte/mcp/connector_registry.py (1)
airbyte/registry.py (2)
  • get_available_connectors (250-313)
  • InstallType (48-66)
airbyte/registry.py (2)
airbyte/_util/meta.py (1)
  • is_docker_installed (193-194)
airbyte/exceptions.py (1)
  • AirbyteConnectorNotRegisteredError (288-297)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
🔇 Additional comments (4)
airbyte/registry.py (4)

51-66: New InstallType members and docstrings look consistent with behavior

The addition of INSTALLABLE and ANY plus the expanded docstrings for the existing members line up with how get_available_connectors uses them (env‑sensitive vs env‑independent, and DOCKER as backward‑compatible “all connectors”). I don’t see issues with the enum surface here.


169-176: _get_registry_cache signature/docstring change is reasonable

Making force_refresh keyword‑only and documenting that the cache maps connector name → ConnectorMetadata clarifies usage without changing behavior. This looks good to me.


473-479: Using InstallType.ANY for docs membership checks matches “all connectors” semantics

Switching the guard to connector_name not in get_available_connectors(InstallType.ANY) and using ANY again for the available_connectors context makes this check explicitly env‑independent, which seems right for API docs lookups. This looks solid to me.


533-539: Version history guard on InstallType.ANY also looks correct

The version‑history path now uses get_available_connectors(InstallType.ANY) both for the membership check and for the error context, which aligns with the “all connectors in the registry” semantics you describe for ANY. I don’t see issues here.

@aaronsteers Aaron ("AJ") Steers (aaronsteers) merged commit 2cfd4c0 into main Nov 27, 2025
23 checks passed
@aaronsteers Aaron ("AJ") Steers (aaronsteers) deleted the devin/1762981002-add-installtype-any-installable branch November 27, 2025 04:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant