Skip to content

Conversation

@fern-api
Copy link
Contributor

@fern-api fern-api bot commented Dec 9, 2025

This PR regenerates code to match the latest API Definition.

Summary by CodeRabbit

  • New Features

    • Added token-based authentication as an alternative to OAuth credentials
    • Introduced Projects API for managing Connect projects
    • Added registry parameter to component, action, and trigger filtering
  • Documentation

    • Enhanced README with OAuth token override examples and improved pagination documentation
  • Bug Fixes

    • Improved HTTP retry logic with intelligent rate limit handling and jitter
  • Chores

    • Updated version to 1.0.13
    • Optimized module loading with lazy imports

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

@coderabbitai
Copy link

coderabbitai bot commented Dec 9, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This PR enhances the Python SDK with multiple features and improvements: adds token-based authentication support, introduces a generalized paging mechanism with response types, expands the API surface with a new projects management module, refactors configurable properties using discriminated unions, implements lazy loading throughout, adds new error types, and performs type system refinements to eliminate nested optionality.

Changes

Cohort / File(s) Summary
Configuration & Metadata
.fern/metadata.json, .fernignore, pyproject.toml, README.md
Added Fern metadata configuration for SDK generation (CLI/generator versions), updated ignore rules, bumped version to 1.0.13, added pytest-xdist dev dependency, and expanded README with OAuth token override documentation and pagination examples.
Core Authentication
src/pipedream/client.py, src/pipedream/core/oauth_token_provider.py, src/pipedream/pipedream.py
Introduced token-based authentication via callable token parameter alongside existing OAuth flow; added AsyncOAuthTokenProvider for async token retrieval with thread-safe locking; updated client initialization to conditionally route between token and OAuth paths.
Pagination & Response Types
src/pipedream/core/pagination.py, src/pipedream/core/client_wrapper.py, src/pipedream/core/custom_pagination.py
Expanded SyncPager and AsyncPager to generic types parameterized with both item and response types (T, R); added async_token support and async_get_headers method to AsyncClientWrapper; introduced custom pager template scaffolding for user-defined pagination adapters.
HTTP Client & Retry Logic
src/pipedream/core/http_client.py
Enhanced retry/backoff with jitter support; added Retry-After and X-RateLimit-Reset header parsing; improved multipart data handling with None-value filtering; integrated async header retrieval for dynamic token injection.
Lazy Import Infrastructure
src/pipedream/__init__.py, src/pipedream/actions/__init__.py, src/pipedream/components/__init__.py, src/pipedream/triggers/__init__.py
Implemented dynamic import mechanisms using __getattr__ and __dir__ across multiple modules to lazily resolve symbols from submodules, reducing startup time and exposing expanded public APIs.
Registry Parameters for Listing
src/pipedream/actions/client.py, src/pipedream/actions/raw_client.py, src/pipedream/actions/types/actions_list_request_registry.py, src/pipedream/components/client.py, src/pipedream/components/raw_client.py, src/pipedream/components/types/components_list_request_registry.py, src/pipedream/triggers/client.py, src/pipedream/triggers/raw_client.py, src/pipedream/triggers/types/triggers_list_request_registry.py
Added optional registry parameter ("public", "private", "all") to list methods across actions, components, and triggers; updated return types to include GetComponentsResponse/GetTriggersResponse; added new registry type definitions.
Error Types
src/pipedream/errors/bad_request_error.py, src/pipedream/errors/not_found_error.py, src/pipedream/errors/too_many_requests_error.py, src/pipedream/errors/__init__.py
Introduced BadRequestError (HTTP 400) and NotFoundError (HTTP 404) as ApiError subclasses; updated TooManyRequestsError to require non-optional body; expanded error exports in init.
List Pagination Updates
src/pipedream/accounts/client.py, src/pipedream/accounts/raw_client.py, src/pipedream/apps/client.py, src/pipedream/apps/raw_client.py, src/pipedream/deployed_triggers/client.py, src/pipedream/deployed_triggers/raw_client.py
Updated list methods to return pagers parameterized with response types (ListAccountsResponse, ListAppsResponse, GetTriggersResponse); replaced BaseHttpResponse with parsed response objects in pager construction.
Projects API
src/pipedream/projects/client.py, src/pipedream/projects/raw_client.py
Added comprehensive synchronous and asynchronous Projects API with list, create, retrieve, delete, update, update_logo, and retrieve_info methods; implemented pagination support for list operations with ListProjectsResponse.
Configurable Props Refactoring
src/pipedream/types/configurable_prop.py, src/pipedream/types/configurable_prop_*.py (20+ files), src/pipedream/types/configurable_prop_base.py
Replaced flat ConfigurableProp model with discriminated union of specialized variants (ConfigurableProp_Alert, _Any, _App, _Boolean, etc.); introduced ConfigurablePropBase containing shared metadata fields; moved type-specific fields to individual variant classes.
HTTP Request Types
src/pipedream/types/http_request_auth.py, src/pipedream/types/http_request_auth_type.py, src/pipedream/types/http_request_body.py, src/pipedream/types/http_request_body_mode.py, src/pipedream/types/http_request_body_type.py, src/pipedream/types/http_request_config.py, src/pipedream/types/http_request_field.py
Added new HTTP request configuration types for modeling authentication, body content, headers, parameters, and overall request configuration; supports multiple auth types and body modes.
Type System Refinements
src/pipedream/types/__init__.py, src/pipedream/types/account.py, src/pipedream/types/configure_prop_opts.py, src/pipedream/types/configure_prop_response.py, src/pipedream/types/configured_prop_value_*.py, src/pipedream/types/deployed_component.py, src/pipedream/types/emitted_event.py, src/pipedream/types/emitter.py, src/pipedream/types/error_response.py, src/pipedream/types/proxy_response.py, src/pipedream/types/run_action_response.py
Removed nested Optional types throughout (Dict[str, Optional[Any]] → Dict[str, Any]); added discriminator to Emitter union; eliminated redundant Optional[Optional[Any]] patterns; expanded public exports via lazy imports.
Data Models
src/pipedream/types/list_projects_response.py, src/pipedream/types/project.py
Added ListProjectsResponse and Project models to support Projects API listing and CRUD operations.
Tests
tests/utils/test_http_client.py
Expanded test coverage for None-value handling in JSON and data bodies; added tests for remove_none_from_dict utility function across various edge cases.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Areas requiring extra attention:

  • Authentication refactoring (src/pipedream/client.py, src/pipedream/core/oauth_token_provider.py) — New token parameter and conditional OAuth flow initialization; verify both token and OAuth paths work correctly and error messages are clear
  • Pagination generics (src/pipedream/core/pagination.py) — Type parameter expansion (T → T, R) affects all pager instances; confirm all client list methods properly parameterize return types with response models
  • Configurable Props discriminated union (src/pipedream/types/configurable_prop.py, base class, 20+ variants) — Large-scale type restructuring; verify field inheritance, discriminator routing, and backward compatibility implications
  • Error handling (new error classes and usage across **/raw_client.py files) — Ensure BadRequestError/NotFoundError are raised consistently and error body parsing is correct; verify 429 TooManyRequestsError changes (non-optional body)
  • Retry/backoff logic (src/pipedream/core/http_client.py) — Jitter addition and header-based retry parsing; validate exponential backoff calculations and header parsing edge cases
  • Projects API implementation (src/pipedream/projects/*) — New endpoint surface; verify all CRUD operations map correctly to API endpoints and pagination works end-to-end
  • Type refinements across models — Systematic removal of Optional[Optional[Any]]/Dict[str, Optional[Any]]; confirm serialization/deserialization compatibility with API responses

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 67.16% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly indicates this is an automated Fern code regeneration for December 9, 2025, reflecting the main change (SDK regeneration).

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

@jverce
Copy link
Collaborator

jverce commented Dec 9, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Dec 9, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link

@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: 27

Caution

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

⚠️ Outside diff range comments (5)
src/pipedream/actions/client.py (1)

453-458: Async docstring example has same yield issue.

The async example also uses yield outside a proper async generator definition. The main() function would need to be declared as async def main() -> AsyncIterator[...] if yielding.

src/pipedream/types/configurable_prop_app.py (1)

16-23: Redundant model_config in subclass.

The model_config / Config block is identical to what's defined in ConfigurablePropBase. While harmless for auto-generated code, this duplication means changes to the base config won't propagate unless regenerated.

src/pipedream/types/configurable_prop_integer.py (1)

23-24: Minor inconsistency in field definition style.

The default field uses bare = None while min, max, and options use pydantic.Field(default=None). Both work correctly, but the inconsistency may be intentional in the API definition to avoid exposing default in schema metadata.

src/pipedream/components/raw_client.py (1)

104-118: Late-binding closure: consider default argument capture for safety.

The lambda on line 108 captures _parsed_next by reference. While this works correctly in the current code (because _parsed_next isn't reassigned after the lambda is created), this pattern is fragile. If future modifications reassign _parsed_next, the closure would capture the wrong value.

Consider using a default argument to capture by value, which is the idiomatic Python pattern for closures:

-                    _get_next = lambda: self.list(
+                    _get_next = lambda _cursor=_parsed_next: self.list(
-                        after=_parsed_next,
+                        after=_cursor,
                         before=before,
                         limit=limit,
                         q=q,
                         app=app,
                         registry=registry,
                         component_type=component_type,
                         request_options=request_options,
                     )

Since this is auto-generated code from Fern, this is more of an observation than a blocking issue.

src/pipedream/client.py (1)

572-578: Redundant environment is not None check.

Since environment has a default value of PipedreamEnvironment.PROD in all call sites, the condition environment is not None will always be true, making the else branch unreachable dead code.

 def _get_base_url(*, base_url: typing.Optional[str] = None, environment: PipedreamEnvironment) -> str:
     if base_url is not None:
         return base_url
-    elif environment is not None:
-        return environment.value
     else:
-        raise Exception("Please pass in either base_url or environment to construct the client")
+        return environment.value
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c5d0bea and 221f45f.

⛔ Files ignored due to path filters (1)
  • poetry.lock is excluded by !**/*.lock
📒 Files selected for processing (94)
  • .fern/metadata.json (1 hunks)
  • .fernignore (1 hunks)
  • README.md (3 hunks)
  • pyproject.toml (3 hunks)
  • src/pipedream/__init__.py (4 hunks)
  • src/pipedream/accounts/client.py (11 hunks)
  • src/pipedream/accounts/raw_client.py (15 hunks)
  • src/pipedream/actions/__init__.py (1 hunks)
  • src/pipedream/actions/client.py (12 hunks)
  • src/pipedream/actions/raw_client.py (24 hunks)
  • src/pipedream/actions/types/__init__.py (1 hunks)
  • src/pipedream/actions/types/actions_list_request_registry.py (1 hunks)
  • src/pipedream/apps/client.py (7 hunks)
  • src/pipedream/apps/raw_client.py (7 hunks)
  • src/pipedream/client.py (7 hunks)
  • src/pipedream/components/__init__.py (1 hunks)
  • src/pipedream/components/client.py (15 hunks)
  • src/pipedream/components/raw_client.py (22 hunks)
  • src/pipedream/components/types/__init__.py (1 hunks)
  • src/pipedream/components/types/components_list_request_registry.py (1 hunks)
  • src/pipedream/core/__init__.py (5 hunks)
  • src/pipedream/core/client_wrapper.py (3 hunks)
  • src/pipedream/core/custom_pagination.py (1 hunks)
  • src/pipedream/core/http_client.py (7 hunks)
  • src/pipedream/core/oauth_token_provider.py (3 hunks)
  • src/pipedream/core/pagination.py (5 hunks)
  • src/pipedream/core/pydantic_utilities.py (1 hunks)
  • src/pipedream/deployed_triggers/client.py (11 hunks)
  • src/pipedream/deployed_triggers/raw_client.py (23 hunks)
  • src/pipedream/errors/__init__.py (2 hunks)
  • src/pipedream/errors/bad_request_error.py (1 hunks)
  • src/pipedream/errors/not_found_error.py (1 hunks)
  • src/pipedream/errors/too_many_requests_error.py (1 hunks)
  • src/pipedream/file_stash/raw_client.py (2 hunks)
  • src/pipedream/pipedream.py (2 hunks)
  • src/pipedream/projects/client.py (3 hunks)
  • src/pipedream/projects/raw_client.py (4 hunks)
  • src/pipedream/tokens/client.py (2 hunks)
  • src/pipedream/tokens/raw_client.py (4 hunks)
  • src/pipedream/triggers/__init__.py (1 hunks)
  • src/pipedream/triggers/client.py (12 hunks)
  • src/pipedream/triggers/raw_client.py (22 hunks)
  • src/pipedream/triggers/types/__init__.py (1 hunks)
  • src/pipedream/triggers/types/triggers_list_request_registry.py (1 hunks)
  • src/pipedream/types/__init__.py (9 hunks)
  • src/pipedream/types/account.py (1 hunks)
  • src/pipedream/types/configurable_prop.py (2 hunks)
  • src/pipedream/types/configurable_prop_airtable_base_id.py (1 hunks)
  • src/pipedream/types/configurable_prop_airtable_field_id.py (1 hunks)
  • src/pipedream/types/configurable_prop_airtable_table_id.py (1 hunks)
  • src/pipedream/types/configurable_prop_airtable_view_id.py (1 hunks)
  • src/pipedream/types/configurable_prop_alert.py (1 hunks)
  • src/pipedream/types/configurable_prop_any.py (1 hunks)
  • src/pipedream/types/configurable_prop_app.py (1 hunks)
  • src/pipedream/types/configurable_prop_apphook.py (2 hunks)
  • src/pipedream/types/configurable_prop_base.py (1 hunks)
  • src/pipedream/types/configurable_prop_boolean.py (1 hunks)
  • src/pipedream/types/configurable_prop_data_store.py (1 hunks)
  • src/pipedream/types/configurable_prop_db.py (1 hunks)
  • src/pipedream/types/configurable_prop_dir.py (1 hunks)
  • src/pipedream/types/configurable_prop_discord.py (1 hunks)
  • src/pipedream/types/configurable_prop_discord_channel.py (1 hunks)
  • src/pipedream/types/configurable_prop_discord_channel_array.py (1 hunks)
  • src/pipedream/types/configurable_prop_http.py (1 hunks)
  • src/pipedream/types/configurable_prop_http_request.py (1 hunks)
  • src/pipedream/types/configurable_prop_integer.py (1 hunks)
  • src/pipedream/types/configurable_prop_integer_array.py (1 hunks)
  • src/pipedream/types/configurable_prop_object.py (1 hunks)
  • src/pipedream/types/configurable_prop_sql.py (1 hunks)
  • src/pipedream/types/configurable_prop_string.py (1 hunks)
  • src/pipedream/types/configurable_prop_string_array.py (1 hunks)
  • src/pipedream/types/configurable_prop_timer.py (1 hunks)
  • src/pipedream/types/configurable_prop_type.py (0 hunks)
  • src/pipedream/types/configure_prop_opts.py (1 hunks)
  • src/pipedream/types/configure_prop_response.py (1 hunks)
  • src/pipedream/types/configured_prop_value_any.py (1 hunks)
  • src/pipedream/types/configured_prop_value_object.py (1 hunks)
  • src/pipedream/types/deployed_component.py (1 hunks)
  • src/pipedream/types/emitted_event.py (1 hunks)
  • src/pipedream/types/emitter.py (3 hunks)
  • src/pipedream/types/error_response.py (1 hunks)
  • src/pipedream/types/http_request_auth.py (1 hunks)
  • src/pipedream/types/http_request_auth_type.py (1 hunks)
  • src/pipedream/types/http_request_body.py (1 hunks)
  • src/pipedream/types/http_request_body_mode.py (1 hunks)
  • src/pipedream/types/http_request_body_type.py (1 hunks)
  • src/pipedream/types/http_request_config.py (1 hunks)
  • src/pipedream/types/http_request_field.py (1 hunks)
  • src/pipedream/types/list_projects_response.py (1 hunks)
  • src/pipedream/types/project.py (1 hunks)
  • src/pipedream/types/proxy_response.py (1 hunks)
  • src/pipedream/types/run_action_response.py (1 hunks)
  • src/pipedream/users/raw_client.py (2 hunks)
  • tests/utils/test_http_client.py (2 hunks)
💤 Files with no reviewable changes (1)
  • src/pipedream/types/configurable_prop_type.py
🧰 Additional context used
🧬 Code graph analysis (56)
src/pipedream/types/configurable_prop_any.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/users/raw_client.py (1)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
src/pipedream/types/list_projects_response.py (4)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/types/page_info.py (1)
  • PageInfo (9-22)
src/pipedream/types/project.py (1)
  • Project (9-41)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop_http_request.py (4)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/http_request_config.py (1)
  • HttpRequestConfig (12-32)
src/pipedream/core/pydantic_utilities.py (1)
  • Config (70-72)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop_airtable_table_id.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/http_request_config.py (5)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/types/http_request_auth.py (1)
  • HttpRequestAuth (10-31)
src/pipedream/types/http_request_body.py (1)
  • HttpRequestBody (14-32)
src/pipedream/types/http_request_field.py (1)
  • HttpRequestField (9-31)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/errors/not_found_error.py (2)
src/pipedream/core/api_error.py (1)
  • ApiError (6-23)
src/pipedream/core/http_response.py (1)
  • headers (20-21)
src/pipedream/types/configurable_prop_object.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/http_request_auth.py (2)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop_airtable_field_id.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_integer_array.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/project.py (3)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop.py (14)
  • Config (58-61)
  • Config (87-90)
  • Config (115-118)
  • Config (144-147)
  • Config (171-174)
  • Config (198-201)
  • Config (228-231)
  • Config (261-264)
  • Config (292-295)
  • Config (320-323)
  • Config (348-351)
  • Config (375-378)
  • Config (405-408)
  • Config (433-436)
src/pipedream/types/configurable_prop_boolean.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/apps/raw_client.py (3)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/types/app.py (1)
  • App (10-63)
src/pipedream/types/list_apps_response.py (1)
  • ListAppsResponse (11-26)
src/pipedream/deployed_triggers/raw_client.py (4)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/types/get_triggers_response.py (1)
  • GetTriggersResponse (11-26)
src/pipedream/errors/too_many_requests_error.py (1)
  • TooManyRequestsError (8-10)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
src/pipedream/types/http_request_field.py (3)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop.py (14)
  • Config (58-61)
  • Config (87-90)
  • Config (115-118)
  • Config (144-147)
  • Config (171-174)
  • Config (198-201)
  • Config (228-231)
  • Config (261-264)
  • Config (292-295)
  • Config (320-323)
  • Config (348-351)
  • Config (375-378)
  • Config (405-408)
  • Config (433-436)
src/pipedream/types/configurable_prop_airtable_view_id.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_sql.py (3)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_sql_auth.py (1)
  • ConfigurablePropSqlAuth (9-22)
src/pipedream/types/configured_prop_value_sql.py (1)
  • ConfiguredPropValueSql (11-41)
src/pipedream/types/configurable_prop_base.py (3)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/errors/__init__.py (3)
src/pipedream/errors/bad_request_error.py (1)
  • BadRequestError (8-10)
src/pipedream/errors/not_found_error.py (1)
  • NotFoundError (8-10)
src/pipedream/errors/too_many_requests_error.py (1)
  • TooManyRequestsError (8-10)
src/pipedream/core/custom_pagination.py (1)
src/pipedream/core/client_wrapper.py (2)
  • AsyncClientWrapper (87-122)
  • SyncClientWrapper (59-84)
src/pipedream/pipedream.py (1)
src/pipedream/client.py (1)
  • _get_base_url (572-578)
src/pipedream/file_stash/raw_client.py (1)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
src/pipedream/errors/bad_request_error.py (2)
src/pipedream/core/api_error.py (1)
  • ApiError (6-23)
src/pipedream/core/http_response.py (1)
  • headers (20-21)
src/pipedream/types/http_request_body.py (4)
src/pipedream/core/pydantic_utilities.py (2)
  • UniversalBaseModel (55-153)
  • Config (70-72)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/http_request_field.py (1)
  • HttpRequestField (9-31)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/accounts/raw_client.py (3)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/types/list_accounts_response.py (1)
  • ListAccountsResponse (11-26)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
tests/utils/test_http_client.py (2)
src/pipedream/core/http_client.py (1)
  • get_request_body (180-196)
src/pipedream/core/remove_none_from_dict.py (1)
  • remove_none_from_dict (6-11)
src/pipedream/types/configurable_prop_discord.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/tokens/raw_client.py (1)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
src/pipedream/core/oauth_token_provider.py (2)
src/pipedream/oauth_tokens/client.py (2)
  • AsyncOauthTokensClient (78-147)
  • OauthTokensClient (14-75)
src/pipedream/core/client_wrapper.py (2)
  • AsyncClientWrapper (87-122)
  • SyncClientWrapper (59-84)
src/pipedream/apps/client.py (2)
src/pipedream/types/list_apps_response.py (1)
  • ListAppsResponse (11-26)
src/pipedream/core/pagination.py (2)
  • SyncPager (26-53)
  • AsyncPager (57-82)
src/pipedream/types/configurable_prop_db.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_http.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/core/__init__.py (1)
src/pipedream/core/custom_pagination.py (2)
  • AsyncCustomPager (94-152)
  • SyncCustomPager (33-91)
src/pipedream/actions/raw_client.py (6)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/core/pydantic_utilities.py (1)
  • parse_obj_as (39-44)
src/pipedream/core/serialization.py (1)
  • convert_and_respect_annotation_metadata (29-154)
src/pipedream/errors/bad_request_error.py (1)
  • BadRequestError (8-10)
src/pipedream/types/get_components_response.py (1)
  • GetComponentsResponse (11-26)
src/pipedream/errors/too_many_requests_error.py (1)
  • TooManyRequestsError (8-10)
src/pipedream/types/configurable_prop_string_array.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_alert.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_string.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/__init__.py (4)
src/pipedream/errors/bad_request_error.py (1)
  • BadRequestError (8-10)
src/pipedream/errors/not_found_error.py (1)
  • NotFoundError (8-10)
src/pipedream/errors/too_many_requests_error.py (1)
  • TooManyRequestsError (8-10)
src/pipedream/environment.py (1)
  • PipedreamEnvironment (6-9)
src/pipedream/core/pagination.py (1)
src/pipedream/core/http_sse/_api.py (1)
  • response (45-46)
src/pipedream/types/configurable_prop_data_store.py (3)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/core/pydantic_utilities.py (1)
  • Config (70-72)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/projects/client.py (6)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/core/request_options.py (1)
  • RequestOptions (11-35)
src/pipedream/types/list_projects_response.py (1)
  • ListProjectsResponse (11-26)
src/pipedream/types/project.py (1)
  • Project (9-41)
src/pipedream/types/project_info_response.py (1)
  • ProjectInfoResponse (10-24)
src/pipedream/projects/raw_client.py (10)
  • AsyncRawProjectsClient (468-914)
  • RawProjectsClient (24-465)
  • create (123-191)
  • create (570-638)
  • delete (243-281)
  • delete (690-730)
  • update (283-355)
  • update (732-804)
  • update_logo (357-418)
  • update_logo (806-867)
src/pipedream/types/configurable_prop_integer.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/actions/client.py (3)
src/pipedream/types/get_components_response.py (1)
  • GetComponentsResponse (11-26)
src/pipedream/actions/raw_client.py (2)
  • AsyncRawActionsClient (482-934)
  • RawActionsClient (30-479)
src/pipedream/core/pagination.py (2)
  • SyncPager (26-53)
  • AsyncPager (57-82)
src/pipedream/types/configurable_prop_app.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/accounts/client.py (3)
src/pipedream/types/list_accounts_response.py (1)
  • ListAccountsResponse (11-26)
src/pipedream/core/pagination.py (2)
  • SyncPager (26-53)
  • AsyncPager (57-82)
src/pipedream/types/account.py (1)
  • Account (12-81)
src/pipedream/types/configurable_prop_dir.py (2)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/account.py (1)
  • Config (78-81)
src/pipedream/types/configurable_prop_airtable_base_id.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_discord_channel.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/client.py (3)
src/pipedream/core/oauth_token_provider.py (3)
  • OAuthTokenProvider (14-42)
  • get_token (25-31)
  • get_token (56-62)
src/pipedream/environment.py (1)
  • PipedreamEnvironment (6-9)
src/pipedream/pipedream.py (1)
  • _get_base_url (118-122)
src/pipedream/types/configurable_prop_timer.py (1)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_apphook.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/types/configurable_prop_discord_channel_array.py (2)
src/pipedream/core/serialization.py (1)
  • FieldMetadata (11-26)
src/pipedream/types/configurable_prop_base.py (1)
  • ConfigurablePropBase (11-81)
src/pipedream/core/client_wrapper.py (1)
src/pipedream/core/http_client.py (3)
  • AsyncHttpClient (401-613)
  • get_base_url (213-220)
  • get_base_url (422-429)
src/pipedream/projects/raw_client.py (10)
src/pipedream/core/pagination.py (2)
  • AsyncPager (57-82)
  • SyncPager (26-53)
src/pipedream/core/request_options.py (1)
  • RequestOptions (11-35)
src/pipedream/errors/bad_request_error.py (1)
  • BadRequestError (8-10)
src/pipedream/errors/not_found_error.py (1)
  • NotFoundError (8-10)
src/pipedream/errors/too_many_requests_error.py (1)
  • TooManyRequestsError (8-10)
src/pipedream/types/list_projects_response.py (1)
  • ListProjectsResponse (11-26)
src/pipedream/types/project.py (1)
  • Project (9-41)
src/pipedream/types/project_info_response.py (1)
  • ProjectInfoResponse (10-24)
src/pipedream/core/http_response.py (3)
  • headers (20-21)
  • HttpResponse (24-38)
  • AsyncHttpResponse (41-55)
src/pipedream/core/api_error.py (1)
  • ApiError (6-23)
src/pipedream/core/http_client.py (2)
src/pipedream/core/remove_none_from_dict.py (1)
  • remove_none_from_dict (6-11)
src/pipedream/core/request_options.py (1)
  • RequestOptions (11-35)
🪛 Ruff (0.14.8)
src/pipedream/actions/types/actions_list_request_registry.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/components/types/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/types/emitter.py

92-92: Use X | Y for type annotations

Convert to X | Y

(UP007)

src/pipedream/errors/too_many_requests_error.py

9-9: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


9-9: Dynamically typed expressions (typing.Any) are disallowed in body

(ANN401)

src/pipedream/types/http_request_body_type.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/types/http_request_auth_type.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/components/types/components_list_request_registry.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/errors/not_found_error.py

9-9: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


9-9: Dynamically typed expressions (typing.Any) are disallowed in body

(ANN401)

src/pipedream/actions/types/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/triggers/types/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/components/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/types/http_request_body_mode.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/core/custom_pagination.py

18-18: Import from collections.abc instead: AsyncIterator, Iterator

Import from collections.abc

(UP035)


70-70: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


131-131: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)

src/pipedream/errors/bad_request_error.py

9-9: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


9-9: Dynamically typed expressions (typing.Any) are disallowed in body

(ANN401)

src/pipedream/triggers/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/core/oauth_token_provider.py

26-26: datetime.datetime.now() called without a tz argument

(DTZ005)


29-29: datetime.datetime.now() called without a tz argument

(DTZ005)


48-48: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


52-52: datetime.datetime.now() called without a tz argument

(DTZ005)


57-57: datetime.datetime.now() called without a tz argument

(DTZ005)


60-60: datetime.datetime.now() called without a tz argument

(DTZ005)


72-72: Missing return type annotation for private function _get_expires_at

(ANN202)


73-73: datetime.datetime.now() called without a tz argument

(DTZ005)

src/pipedream/__init__.py

359-359: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


362-362: Avoid specifying long messages outside the exception class

(TRY003)


370-370: Avoid specifying long messages outside the exception class

(TRY003)


372-372: Avoid specifying long messages outside the exception class

(TRY003)


375-375: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/types/configurable_prop.py

700-724: Use X | Y for type annotations

Convert to X | Y

(UP007)

src/pipedream/triggers/types/triggers_list_request_registry.py

5-5: Use X | Y for type annotations

(UP007)

src/pipedream/client.py

95-95: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


101-101: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)


109-109: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


115-115: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)


127-127: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)


365-365: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


371-371: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)


379-379: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


385-385: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)


397-397: Do not perform function call os.getenv in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable

(B008)

src/pipedream/actions/__init__.py

13-13: Dynamically typed expressions (typing.Any) are disallowed in __getattr__

(ANN401)


16-16: Avoid specifying long messages outside the exception class

(TRY003)


24-24: Avoid specifying long messages outside the exception class

(TRY003)


26-26: Avoid specifying long messages outside the exception class

(TRY003)


29-29: Missing return type annotation for private function __dir__

(ANN202)

src/pipedream/projects/raw_client.py

25-25: Missing return type annotation for special method __init__

Add return type annotation: None

(ANN204)


88-94: Do not assign a lambda expression, use a def

Rewrite _get_next as a def

(E731)


120-120: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


190-190: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


240-240: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


280-280: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


354-354: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


417-417: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


533-533: Missing return type annotation for private function _get_next

(ANN202)


567-567: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


637-637: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


687-687: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


729-729: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


803-803: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


866-866: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)

src/pipedream/core/http_client.py

69-69: Standard pseudo-random generators are not suitable for cryptographic purposes

(S311)


75-75: Standard pseudo-random generators are not suitable for cryptographic purposes

(S311)


127-127: Dynamically typed expressions (typing.Any) are disallowed in data

(ANN401)


129-129: Boolean-typed positional argument in function definition

(FBT001)


130-130: Dynamically typed expressions (typing.Any) are disallowed in _maybe_filter_none_from_multipart_data

(ANN401)

@jverce jverce merged commit 4912398 into main Dec 10, 2025
4 checks passed
@jverce jverce deleted the fern-bot/2025-12-09T23-08Z branch December 10, 2025 00:56
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.

2 participants