| # coding: utf-8 | |
| """ | |
| Airflow API | |
| Airflow API. All endpoints located under ``/api/v2`` can be used safely, are stable and backward compatible. Endpoints located under ``/ui`` are dedicated to the UI and are subject to breaking change depending on the need of the frontend. Users should not rely on those but use the public ones instead. **Filtering with pattern parameters.** Many list endpoints accept ``*_pattern`` and ``*_prefix_pattern`` query parameters. Unless a parameter's own description says otherwise, ``*_pattern`` is a case-insensitive substring match (SQL ``ILIKE '%term%'``) where ``%`` matches any sequence and ``_`` matches any single character (e.g. ``%customer_%``) — convenient, but it cannot use B-tree indexes, so it is slow on large tables. ``*_prefix_pattern`` matches the start of the value, is case-sensitive and index-friendly (prefer it at scale); there ``%`` and ``_`` are literal and trailing non-alphanumeric characters are stripped so the range scan stays index-compatible under locale-aware collations (e.g. ``test_`` matches values starting with ``test``, and ``s3://`` matches ``s3``). In both, ``|`` means OR (e.g. ``dag1|dag2``) and ``~`` matches everything. Regular expressions are not supported by these parameters; regex-capable endpoints expose a separate parameter. | |
| The version of the OpenAPI document: 2 | |
| Generated by OpenAPI Generator (https://openapi-generator.tech) | |
| Do not edit the class manually. | |
| """ # noqa: E501 | |
| from __future__ import annotations | |
| import pprint | |
| import re # noqa: F401 | |
| import json | |
| from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr, field_validator | |
| from typing import Any, ClassVar, Dict, List, Optional | |
| from typing import Optional, Set | |
| from typing_extensions import Self | |
| from pydantic_core import to_jsonable_python | |
| class ReactAppResponse(BaseModel): | |
| """ | |
| Serializer for React App Plugin responses. | |
| """ # noqa: E501 | |
| bundle_url: StrictStr | |
| category: Optional[StrictStr] = None | |
| destination: Optional[StrictStr] = 'nav' | |
| icon: Optional[StrictStr] = None | |
| icon_dark_mode: Optional[StrictStr] = None | |
| name: StrictStr | |
| nav_top_level: Optional[StrictBool] = None | |
| url_route: Optional[StrictStr] = None | |
| additional_properties: Dict[str, Any] = {} | |
| __properties: ClassVar[List[str]] = ["bundle_url", "category", "destination", "icon", "icon_dark_mode", "name", "nav_top_level", "url_route"] | |
| @field_validator('destination') | |
| def destination_validate_enum(cls, value): | |
| """Validates the enum""" | |
| if value is None: | |
| return value | |
| if value not in set(['nav', 'dag', 'dag_run', 'task', 'task_instance', 'base', 'dashboard']): | |
| raise ValueError("must be one of enum values ('nav', 'dag', 'dag_run', 'task', 'task_instance', 'base', 'dashboard')") | |
| return value | |
| model_config = ConfigDict( | |
| validate_by_name=True, | |
| validate_by_alias=True, | |
| validate_assignment=True, | |
| protected_namespaces=(), | |
| ) | |
| def to_str(self) -> str: | |
| """Returns the string representation of the model using alias""" | |
| return pprint.pformat(self.model_dump(by_alias=True)) | |
| def to_json(self) -> str: | |
| """Returns the JSON representation of the model using alias""" | |
| return json.dumps(to_jsonable_python(self.to_dict())) | |
| @classmethod | |
| def from_json(cls, json_str: str) -> Optional[Self]: | |
| """Create an instance of ReactAppResponse from a JSON string""" | |
| return cls.from_dict(json.loads(json_str)) | |
| def to_dict(self) -> Dict[str, Any]: | |
| """Return the dictionary representation of the model using alias. | |
| This has the following differences from calling pydantic's | |
| `self.model_dump(by_alias=True)`: | |
| * `None` is only added to the output dict for nullable fields that | |
| were set at model initialization. Other fields with value `None` | |
| are ignored. | |
| * Fields in `self.additional_properties` are added to the output dict. | |
| """ | |
| excluded_fields: Set[str] = set([ | |
| "additional_properties", | |
| ]) | |
| _dict = self.model_dump( | |
| by_alias=True, | |
| exclude=excluded_fields, | |
| exclude_none=True, | |
| ) | |
| # puts key-value pairs in additional_properties in the top level | |
| if self.additional_properties is not None: | |
| for _key, _value in self.additional_properties.items(): | |
| _dict[_key] = _value | |
| return _dict | |
| @classmethod | |
| def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: | |
| """Create an instance of ReactAppResponse from a dict""" | |
| if obj is None: | |
| return None | |
| if not isinstance(obj, dict): | |
| return cls.model_validate(obj) | |
| _obj = cls.model_validate({ | |
| "bundle_url": obj.get("bundle_url"), | |
| "category": obj.get("category"), | |
| "destination": obj.get("destination") if obj.get("destination") is not None else 'nav', | |
| "icon": obj.get("icon"), | |
| "icon_dark_mode": obj.get("icon_dark_mode"), | |
| "name": obj.get("name"), | |
| "nav_top_level": obj.get("nav_top_level"), | |
| "url_route": obj.get("url_route") | |
| }) | |
| # store additional fields in additional_properties | |
| for _key in obj.keys(): | |
| if _key not in cls.__properties: | |
| _obj.additional_properties[_key] = obj.get(_key) | |
| return _obj | |