Skip to content

Commit a26bee8

Browse files
committed
Merge main into test for PyPI publish
2 parents cafc9c4 + 1cede7a commit a26bee8

File tree

7 files changed

+33
-11
lines changed

7 files changed

+33
-11
lines changed

src/workato_platform_cli/cli/commands/api_clients.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -576,8 +576,9 @@ def display_client_summary(client: ApiClient) -> None:
576576
click.echo(f" 🔐 Auth Type: {client.auth_type}")
577577

578578
# Show API collections if available
579-
for collection in client.api_collections:
580-
click.echo(f" 📚 {collection.name} (ID: {collection.id})")
579+
if client.api_collections:
580+
for collection in client.api_collections:
581+
click.echo(f" 📚 {collection.name} (ID: {collection.id})")
581582

582583
# Show email if available (API portal integration)
583584
if client.email:

src/workato_platform_cli/cli/commands/connections.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,9 @@ def pick_lists(adapter: str | None = None) -> None:
939939
"""List available pick lists by adapter"""
940940

941941
# Load the bundled picklist data
942-
data_file = Path(__file__).parent.parent / "data" / "picklist-data.json"
942+
data_file = (
943+
Path(__file__).parent.parent / "resources" / "data" / "picklist-data.json"
944+
)
943945

944946
if not data_file.exists():
945947
click.echo(

src/workato_platform_cli/cli/commands/recipes/validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class RecipeLine(BaseModel):
110110
clear_scope: bool | None = Field(None, alias="clear_scope")
111111
repeat_mode: str | None = Field(None, alias="repeat_mode")
112112
source: str | None = None
113-
format_version: str | None = Field(None, alias="format_version")
113+
format_version: int | None = Field(None, alias="format_version")
114114
job_report_config: dict[str, Any] | None = None
115115
job_report_schema: list[dict[str, Any]] | None = None
116116
param: dict[str, Any] | None = None

src/workato_platform_cli/client/workato_api/models/api_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ class ApiClient(BaseModel):
4545
mtls_enabled: Optional[StrictBool] = None
4646
validation_formula: Optional[StrictStr] = None
4747
cert_bundle_ids: Optional[List[StrictInt]] = None
48-
api_policies: List[ApiClientApiPoliciesInner] = Field(description="List of API policies associated with the client")
49-
api_collections: List[ApiClientApiCollectionsInner] = Field(description="List of API collections associated with the client")
48+
api_policies: Optional[List[ApiClientApiPoliciesInner]] = Field(default=None, description="List of API policies associated with the client")
49+
api_collections: Optional[List[ApiClientApiCollectionsInner]] = Field(default=None, description="List of API collections associated with the client")
5050
__properties: ClassVar[List[str]] = ["id", "name", "description", "active_api_keys_count", "total_api_keys_count", "created_at", "updated_at", "logo", "logo_2x", "is_legacy", "email", "auth_type", "api_token", "mtls_enabled", "validation_formula", "cert_bundle_ids", "api_policies", "api_collections"]
5151

5252
@field_validator('auth_type')

src/workato_platform_cli/client/workato_api/models/api_collection.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import json
1919

2020
from datetime import datetime
21-
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
22-
from typing import Any, ClassVar, Dict, List, Optional
21+
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
22+
from typing import Any, ClassVar, Dict, List, Optional, Union
2323
from workato_platform_cli.client.workato_api.models.import_results import ImportResults
2424
from typing import Optional, Set
2525
from typing_extensions import Self
@@ -30,7 +30,7 @@ class ApiCollection(BaseModel):
3030
""" # noqa: E501
3131
id: StrictInt
3232
name: StrictStr
33-
project_id: StrictStr
33+
project_id: Optional[Union[StrictStr, StrictInt]] = None
3434
url: StrictStr
3535
api_spec_url: StrictStr
3636
version: StrictStr
@@ -40,6 +40,14 @@ class ApiCollection(BaseModel):
4040
import_results: Optional[ImportResults] = None
4141
__properties: ClassVar[List[str]] = ["id", "name", "project_id", "url", "api_spec_url", "version", "created_at", "updated_at", "message", "import_results"]
4242

43+
@field_validator('project_id', mode='before')
44+
@classmethod
45+
def coerce_project_id_to_string(cls, v):
46+
"""Coerce project_id to string since API may return int or string"""
47+
if v is not None:
48+
return str(v)
49+
return v
50+
4351
model_config = ConfigDict(
4452
populate_by_name=True,
4553
validate_assignment=True,

tests/unit/commands/connections/test_helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ def test_pick_lists(
269269
expected: str,
270270
) -> None:
271271
module_root = tmp_path / "cli" / "commands"
272-
data_dir = module_root.parent / "data"
272+
data_dir = module_root.parent / "resources" / "data"
273273
data_dir.mkdir(parents=True)
274274

275275
picklist_file = data_dir / "picklist-data.json"
@@ -320,7 +320,7 @@ def test_pick_lists_invalid_json(
320320
monkeypatch: pytest.MonkeyPatch, capture_echo: list[str], tmp_path: Path
321321
) -> None:
322322
module_root = tmp_path / "cli" / "commands"
323-
data_dir = module_root.parent / "data"
323+
data_dir = module_root.parent / "resources" / "data"
324324
data_dir.mkdir(parents=True)
325325
invalid_file = data_dir / "picklist-data.json"
326326
invalid_file.write_text("not-json")

tests/unit/commands/recipes/test_validator.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,17 @@ def test_recipe_line_limits_job_report_entries() -> None:
119119
)
120120

121121

122+
def test_recipe_line_accepts_format_version_as_int() -> None:
123+
"""format_version is exported as integer by Workato API."""
124+
line = RecipeLine(
125+
number=0,
126+
keyword=Keyword.TRIGGER,
127+
uuid="test-uuid",
128+
format_version=2,
129+
)
130+
assert line.format_version == 2
131+
132+
122133
def test_is_expression_detects_formulas_jinja_and_data_pills(
123134
validator: RecipeValidator,
124135
) -> None:

0 commit comments

Comments
 (0)