Merge branch 'main' into main
This commit is contained in:
commit
54d6e39371
|
@ -120,7 +120,7 @@ jobs:
|
|||
path: "dist"
|
||||
|
||||
- name: Publish to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@v1.10.3
|
||||
uses: pypa/gh-action-pypi-publish@v1.12.3
|
||||
with:
|
||||
# Note that this is currently being pushed to the 'crossplane' PyPI
|
||||
# user (not org). See @negz if you need access - PyPI requires 2FA to
|
||||
|
|
|
@ -39,7 +39,15 @@ def update(r: fnv1.Resource, source: dict | structpb.Struct | pydantic.BaseModel
|
|||
"""
|
||||
match source:
|
||||
case pydantic.BaseModel():
|
||||
r.resource.update(source.model_dump(exclude_defaults=True, warnings=False))
|
||||
data = source.model_dump(exclude_defaults=True, warnings=False)
|
||||
# In Pydantic, exclude_defaults=True in model_dump excludes fields
|
||||
# that have their value equal to the default. If a field like
|
||||
# apiVersion is set to its default value 's3.aws.upbound.io/v1beta2'
|
||||
# (and not explicitly provided during initialization), it will be
|
||||
# excluded from the serialized output.
|
||||
data['apiVersion'] = source.apiVersion
|
||||
data['kind'] = source.kind
|
||||
r.resource.update(data)
|
||||
case structpb.Struct():
|
||||
# TODO(negz): Use struct_to_dict and update to match other semantics?
|
||||
r.resource.MergeFrom(source)
|
||||
|
@ -106,10 +114,10 @@ def get_condition(resource: structpb.Struct, typ: str) -> Condition:
|
|||
"""
|
||||
unknown = Condition(typ=typ, status="Unknown")
|
||||
|
||||
if "status" not in resource:
|
||||
if not resource or "status" not in resource:
|
||||
return unknown
|
||||
|
||||
if "conditions" not in resource["status"]:
|
||||
if not resource["status"] or "conditions" not in resource["status"]:
|
||||
return unknown
|
||||
|
||||
for c in resource["status"]["conditions"]:
|
||||
|
@ -145,9 +153,9 @@ class Credentials:
|
|||
def get_credentials(req: structpb.Struct, name: str) -> Credentials:
|
||||
"""Get the supplied credentials."""
|
||||
empty = Credentials(type="data", data={})
|
||||
if "credentials" not in req:
|
||||
if not req or "credentials" not in req:
|
||||
return empty
|
||||
if name not in req["credentials"]:
|
||||
if not req["credentials"] or name not in req["credentials"]:
|
||||
return empty
|
||||
return Credentials(
|
||||
type=req["credentials"][name]["type"],
|
||||
|
|
|
@ -19,7 +19,7 @@ classifiers = [
|
|||
dependencies = [
|
||||
"grpcio==1.67.0",
|
||||
"grpcio-reflection==1.*",
|
||||
"protobuf==5.27.2",
|
||||
"protobuf==5.29.3",
|
||||
"pydantic==2.*",
|
||||
"structlog==24.*",
|
||||
]
|
||||
|
@ -38,13 +38,13 @@ validate-bump = false # Allow going from 0.0.0.dev0+x to 0
|
|||
[tool.hatch.envs.default]
|
||||
type = "virtual"
|
||||
path = ".venv-default"
|
||||
dependencies = ["ipython==8.28.0"]
|
||||
dependencies = ["ipython==8.31.0"]
|
||||
|
||||
[tool.hatch.envs.generate]
|
||||
type = "virtual"
|
||||
detached = true
|
||||
path = ".venv-generate"
|
||||
dependencies = ["grpcio-tools==1.67.0"]
|
||||
dependencies = ["grpcio-tools==1.69.0"]
|
||||
|
||||
[tool.hatch.envs.generate.scripts]
|
||||
protoc = "python -m grpc_tools.protoc --proto_path=. --python_out=. --pyi_out=. --grpc_python_out=. crossplane/function/proto/v1beta1/run_function.proto crossplane/function/proto/v1/run_function.proto"
|
||||
|
@ -62,7 +62,7 @@ packages = ["crossplane"]
|
|||
|
||||
# This special environment is used by hatch fmt.
|
||||
[tool.hatch.envs.hatch-static-analysis]
|
||||
dependencies = ["ruff==0.6.9"]
|
||||
dependencies = ["ruff==0.9.1"]
|
||||
config-path = "none" # Disable Hatch's default Ruff config.
|
||||
|
||||
[tool.ruff]
|
||||
|
|
|
@ -90,7 +90,11 @@ class TestResource(unittest.TestCase):
|
|||
),
|
||||
want=fnv1.Resource(
|
||||
resource=resource.dict_to_struct(
|
||||
{"spec": {"forProvider": {"region": "us-west-2"}}}
|
||||
{
|
||||
"apiVersion": "s3.aws.upbound.io/v1beta2",
|
||||
"kind": "Bucket",
|
||||
"spec": {"forProvider": {"region": "us-west-2"}},
|
||||
}
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -759,11 +759,11 @@ class Status(BaseModel):
|
|||
|
||||
|
||||
class Bucket(BaseModel):
|
||||
apiVersion: Optional[str] = None
|
||||
apiVersion: Optional[str] = 's3.aws.upbound.io/v1beta2'
|
||||
"""
|
||||
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
"""
|
||||
kind: Optional[str] = None
|
||||
kind: Optional[str] = 'Bucket'
|
||||
"""
|
||||
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue