crossplane-function-pythonic 0.1.4__tar.gz → 0.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/PKG-INFO +10 -10
  2. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/README.md +3 -3
  3. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/composite.py +26 -0
  4. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/function.py +7 -3
  5. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/protobuf.py +1 -1
  6. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/.dev/functions.yaml +1 -1
  7. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/cluster-function-pythonic.yaml +1 -1
  8. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/functions.yaml +1 -1
  9. {crossplane_function_pythonic-0.1.4/examples/import-existing-vpc → crossplane_function_pythonic-0.1.5/examples/eks-cluster}/functions.yaml +1 -1
  10. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/function.yaml +1 -1
  11. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/context → crossplane_function_pythonic-0.1.5/examples/function-go-templating/conditions}/functions.yaml +1 -1
  12. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/conditions → crossplane_function_pythonic-0.1.5/examples/function-go-templating/context}/functions.yaml +1 -1
  13. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/fromYaml → crossplane_function_pythonic-0.1.5/examples/function-go-templating/extra-resources}/functions.yaml +1 -1
  14. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/getComposedResource → crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/fromYaml}/functions.yaml +1 -1
  15. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/getCompositeResource → crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/getComposedResource}/functions.yaml +1 -1
  16. {crossplane_function_pythonic-0.1.4/examples/function-go-templating/extra-resources → crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/getCompositeResource}/functions.yaml +1 -1
  17. crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/getResourceCondition/functions.yaml +9 -0
  18. crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/include/functions.yaml +9 -0
  19. crossplane_function_pythonic-0.1.5/examples/function-go-templating/functions/toYaml/functions.yaml +9 -0
  20. crossplane_function_pythonic-0.1.5/examples/function-go-templating/inline/functions.yaml +9 -0
  21. crossplane_function_pythonic-0.1.5/examples/function-go-templating/recursive/functions.yaml +9 -0
  22. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/get-started-app/functions.yaml +1 -1
  23. {crossplane_function_pythonic-0.1.4/examples/single-purpose → crossplane_function_pythonic-0.1.5/examples/helm-copy-secret}/functions.yaml +1 -1
  24. {crossplane_function_pythonic-0.1.4/examples/eks-cluster → crossplane_function_pythonic-0.1.5/examples/import-existing-vpc}/functions.yaml +1 -1
  25. {crossplane_function_pythonic-0.1.4/examples/helm-copy-secret → crossplane_function_pythonic-0.1.5/examples/single-purpose}/functions.yaml +1 -1
  26. crossplane_function_pythonic-0.1.5/examples/usages-extra/functions.yaml +9 -0
  27. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/pyproject.toml +7 -7
  28. crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/getResourceCondition/functions.yaml +0 -9
  29. crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/include/functions.yaml +0 -9
  30. crossplane_function_pythonic-0.1.4/examples/function-go-templating/functions/toYaml/functions.yaml +0 -9
  31. crossplane_function_pythonic-0.1.4/examples/function-go-templating/inline/functions.yaml +0 -9
  32. crossplane_function_pythonic-0.1.4/examples/function-go-templating/recursive/functions.yaml +0 -9
  33. crossplane_function_pythonic-0.1.4/examples/usages-extra/functions.yaml +0 -9
  34. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/.gitignore +0 -0
  35. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/LICENSE +0 -0
  36. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/__init__.py +0 -0
  37. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/main.py +0 -0
  38. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/crossplane/pythonic/packages.py +0 -0
  39. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/README.md +0 -0
  40. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/aks/kubernetescluster.py +0 -0
  41. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/aks/resourcegroup.py +0 -0
  42. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/composition.yaml +0 -0
  43. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/definition.yaml +0 -0
  44. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/install.sh +0 -0
  45. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/kustomization.yaml +0 -0
  46. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/providers.yaml +0 -0
  47. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/render.sh +0 -0
  48. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/aks-cluster/xr.yaml +0 -0
  49. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/composition-v2.yaml +0 -0
  50. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/composition.yaml +0 -0
  51. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/definition.yaml +0 -0
  52. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/render-v2.sh +0 -0
  53. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/render.sh +0 -0
  54. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/eks-cluster/xr.yaml +0 -0
  55. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/README.md +0 -0
  56. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/composition.yaml +0 -0
  57. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/definition.yaml +0 -0
  58. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/kustomization.yaml +0 -0
  59. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/runtime.yaml +0 -0
  60. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/vcluster.py +0 -0
  61. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/filing-system/vcluster.yaml +0 -0
  62. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/conditions/composition.yaml +0 -0
  63. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/conditions/render.sh +0 -0
  64. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/conditions/xr.yaml +0 -0
  65. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/conditions/xrd.yaml +0 -0
  66. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/context/composition.yaml +0 -0
  67. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/context/environmentConfigs.yaml +0 -0
  68. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/context/render.sh +0 -0
  69. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/context/xr.yaml +0 -0
  70. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/context/xrd.yaml +0 -0
  71. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/extra-resources/composition.yaml +0 -0
  72. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/extra-resources/extraResources.yaml +0 -0
  73. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/extra-resources/render.sh +0 -0
  74. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/extra-resources/xr.yaml +0 -0
  75. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/fromYaml/composition.yaml +0 -0
  76. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/fromYaml/render.sh +0 -0
  77. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/fromYaml/xr.yaml +0 -0
  78. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getComposedResource/composition.yaml +0 -0
  79. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getComposedResource/observed.yaml +0 -0
  80. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getComposedResource/render.sh +0 -0
  81. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getComposedResource/xr.yaml +0 -0
  82. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getCompositeResource/composition.yaml +0 -0
  83. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getCompositeResource/render.sh +0 -0
  84. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getCompositeResource/xr.yaml +0 -0
  85. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getResourceCondition/composition.yaml +0 -0
  86. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getResourceCondition/observed.yaml +0 -0
  87. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getResourceCondition/render.sh +0 -0
  88. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/getResourceCondition/xr.yaml +0 -0
  89. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/include/composition.yaml +0 -0
  90. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/include/render.sh +0 -0
  91. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/include/xr.yaml +0 -0
  92. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/toYaml/composition.yaml +0 -0
  93. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/toYaml/render.sh +0 -0
  94. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/functions/toYaml/xr.yaml +0 -0
  95. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/inline/composition.yaml +0 -0
  96. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/inline/render.sh +0 -0
  97. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/inline/xr.yaml +0 -0
  98. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/recursive/composition-real.yaml +0 -0
  99. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/recursive/composition-wrapper.yaml +0 -0
  100. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/recursive/render.sh +0 -0
  101. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/function-go-templating/recursive/xr.yaml +0 -0
  102. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/get-started-app/composition.yaml +0 -0
  103. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/get-started-app/definition.yaml +0 -0
  104. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/get-started-app/render.sh +0 -0
  105. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/get-started-app/xr.yaml +0 -0
  106. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/composition.yaml +0 -0
  107. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/kustomization.yaml +0 -0
  108. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/render.sh +0 -0
  109. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/run-function.sh +0 -0
  110. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/vcluster.py +0 -0
  111. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/xr.yaml +0 -0
  112. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/helm-copy-secret/xrd.yaml +0 -0
  113. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/README.md +0 -0
  114. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/composition.yaml +0 -0
  115. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/definition.yaml +0 -0
  116. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/observed.yaml +0 -0
  117. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/provider-ec2.yaml +0 -0
  118. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/render.sh +0 -0
  119. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/import-existing-vpc/xr.yaml +0 -0
  120. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/single-purpose/render.sh +0 -0
  121. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/single-purpose/xr.yaml +0 -0
  122. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/usages-extra/composition.yaml +0 -0
  123. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/usages-extra/extraResources.yaml +0 -0
  124. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/usages-extra/observedResources.yaml +0 -0
  125. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/usages-extra/render.sh +0 -0
  126. {crossplane_function_pythonic-0.1.4 → crossplane_function_pythonic-0.1.5}/examples/usages-extra/xr.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crossplane-function-pythonic
3
- Version: 0.1.4
3
+ Version: 0.1.5
4
4
  Summary: A Python centric Crossplane Function
5
5
  Project-URL: Documentation, https://github.com/fortra/function-pythonic#readme
6
6
  Project-URL: Issues, https://github.com/fortra/function-pythonic/issues
@@ -10,16 +10,16 @@ License-Expression: Apache-2.0
10
10
  License-File: LICENSE
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Programming Language :: Python
13
- Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Programming Language :: Python :: 3.13
16
- Requires-Python: <3.14,>=3.11
17
- Requires-Dist: crossplane-function-sdk-python==0.9.0
18
- Requires-Dist: pyyaml==6.0.2
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Requires-Python: <3.15,>=3.12
17
+ Requires-Dist: crossplane-function-sdk-python==0.10.0
18
+ Requires-Dist: pyyaml==6.0.3
19
19
  Provides-Extra: packages
20
- Requires-Dist: kopf==1.38.0; extra == 'packages'
20
+ Requires-Dist: kopf==1.39.0; extra == 'packages'
21
21
  Provides-Extra: pip-install
22
- Requires-Dist: pip==25.2; extra == 'pip-install'
22
+ Requires-Dist: pip==25.3; extra == 'pip-install'
23
23
  Description-Content-Type: text/markdown
24
24
 
25
25
  # function-pythonic
@@ -81,7 +81,7 @@ kind: Function
81
81
  metadata:
82
82
  name: function-pythonic
83
83
  spec:
84
- package: ghcr.io/fortra/function-pythonic:v0.1.3
84
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
85
85
  ```
86
86
  ## Composed Resource Dependencies
87
87
 
@@ -409,7 +409,7 @@ metadata:
409
409
  annotations:
410
410
  render.crossplane.io/runtime: Development
411
411
  spec:
412
- package: ghcr.io/fortra/function-pythonic:v0.1.3
412
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
413
413
  ```
414
414
  In one terminal session, run function-pythonic:
415
415
  ```shell
@@ -511,7 +511,7 @@ kind: Function
511
511
  metadata:
512
512
  name: function-pythonic
513
513
  spec:
514
- package: ghcr.io/fortra/function-pythonic:v0.1.3
514
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
515
515
  runtimeConfigRef:
516
516
  name: function-pythonic
517
517
  ---
@@ -57,7 +57,7 @@ kind: Function
57
57
  metadata:
58
58
  name: function-pythonic
59
59
  spec:
60
- package: ghcr.io/fortra/function-pythonic:v0.1.3
60
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
61
61
  ```
62
62
  ## Composed Resource Dependencies
63
63
 
@@ -385,7 +385,7 @@ metadata:
385
385
  annotations:
386
386
  render.crossplane.io/runtime: Development
387
387
  spec:
388
- package: ghcr.io/fortra/function-pythonic:v0.1.3
388
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
389
389
  ```
390
390
  In one terminal session, run function-pythonic:
391
391
  ```shell
@@ -487,7 +487,7 @@ kind: Function
487
487
  metadata:
488
488
  name: function-pythonic
489
489
  spec:
490
- package: ghcr.io/fortra/function-pythonic:v0.1.3
490
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
491
491
  runtimeConfigRef:
492
492
  name: function-pythonic
493
493
  ---
@@ -449,6 +449,32 @@ class Conditions:
449
449
  def __getitem__(self, type):
450
450
  return Condition(self, type)
451
451
 
452
+ def __bool__(self):
453
+ if self._response is not None:
454
+ if self._response.conditions:
455
+ return True
456
+ if self._observed.resource.status.conditions:
457
+ return True
458
+ return False
459
+
460
+ def __len__(self):
461
+ return len(self._types())
462
+
463
+ def __iter__(self):
464
+ for type in self._types():
465
+ yield self[type]
466
+
467
+ def _types(self):
468
+ types = set()
469
+ if self._response is not None:
470
+ for condition in self._response.conditions:
471
+ if condition.type:
472
+ types.add(str(condition.type))
473
+ for condition in self._observed.resource.status.conditions:
474
+ if condition.type:
475
+ types.add(str(condition.type))
476
+ return sorted(types)
477
+
452
478
 
453
479
  class Condition(protobuf.ProtobufValue):
454
480
  def __init__(self, conditions, type):
@@ -24,10 +24,14 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
24
24
  self.clazzes = {}
25
25
 
26
26
  def invalidate_module(self, module):
27
- self.clazzes.clear()
28
- if module in sys.modules:
29
- del sys.modules[module]
27
+ ix = len(module)
28
+ while ix > 0:
29
+ module = module[:ix]
30
+ if module in sys.modules:
31
+ del sys.modules[module]
32
+ ix = module.rfind('.')
30
33
  importlib.invalidate_caches()
34
+ self.clazzes.clear()
31
35
 
32
36
  async def RunFunction(
33
37
  self, request: fnv1.RunFunctionRequest, _: grpc.aio.ServicerContext
@@ -81,7 +81,7 @@ class Message:
81
81
  value = getattr(self._message, key)
82
82
  if value is _Unknown and field.has_default_value:
83
83
  value = field.default_value
84
- if field.label == field.LABEL_REPEATED:
84
+ if field.is_repeated:
85
85
  if field.type == field.TYPE_MESSAGE and field.message_type.GetOptions().map_entry:
86
86
  value = MapMessage(self, key, field.message_type.fields_by_name['value'], value, self._readOnly)
87
87
  else:
@@ -10,4 +10,4 @@ metadata:
10
10
  render.crossplane.io/runtime: Development
11
11
  render.crossplane.io/runtime-development-target: localhost:9443
12
12
  spec:
13
- package: ghcr.io/fortra/function-pythonic:v0.1.3
13
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -3,7 +3,7 @@ kind: Function
3
3
  metadata:
4
4
  name: function-pythonic
5
5
  spec:
6
- package: ghcr.io/fortra/function-pythonic:v0.1.3
6
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
7
7
  runtimeConfigRef:
8
8
  name: function-pythonic
9
9
  ---
@@ -5,6 +5,6 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
9
9
  runtimeConfigRef:
10
10
  name: function-pythonic
@@ -5,4 +5,4 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -3,7 +3,7 @@ kind: Function
3
3
  metadata:
4
4
  name: function-pythonic
5
5
  spec:
6
- package: ghcr.io/fortra/function-pythonic:v0.1.3
6
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
7
7
  runtimeConfigRef:
8
8
  apiVersion: pkg.crossplane.io/v1beta1
9
9
  kind: DeploymentRuntimeConfig
@@ -15,7 +15,7 @@ metadata:
15
15
  # This tells crossplane beta render to connect to the function locally.
16
16
  render.crossplane.io/runtime: Development
17
17
  spec:
18
- package: ghcr.io/fortra/function-pythonic:v0.1.3
18
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
19
19
  ---
20
20
  apiVersion: pkg.crossplane.io/v1beta1
21
21
  kind: Function
@@ -15,7 +15,7 @@ metadata:
15
15
  # This tells crossplane beta render to connect to the function locally.
16
16
  render.crossplane.io/runtime: Development
17
17
  spec:
18
- package: ghcr.io/fortra/function-pythonic:v0.1.3
18
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
19
19
  ---
20
20
  apiVersion: pkg.crossplane.io/v1beta1
21
21
  kind: Function
@@ -6,4 +6,4 @@ metadata:
6
6
  # This tells crossplane beta render to connect to the function locally.
7
7
  render.crossplane.io/runtime: Development
8
8
  spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -6,4 +6,4 @@ metadata:
6
6
  # This tells crossplane beta render to connect to the function locally.
7
7
  render.crossplane.io/runtime: Development
8
8
  spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -6,4 +6,4 @@ metadata:
6
6
  # This tells crossplane beta render to connect to the function locally.
7
7
  render.crossplane.io/runtime: Development
8
8
  spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -6,4 +6,4 @@ metadata:
6
6
  # This tells crossplane beta render to connect to the function locally.
7
7
  render.crossplane.io/runtime: Development
8
8
  spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -5,4 +5,4 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -5,4 +5,4 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -5,4 +5,4 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -5,4 +5,4 @@ metadata:
5
5
  annotations:
6
6
  render.crossplane.io/runtime: Development
7
7
  spec:
8
- package: ghcr.io/fortra/function-pythonic:v0.1.3
8
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -0,0 +1,9 @@
1
+ apiVersion: pkg.crossplane.io/v1beta1
2
+ kind: Function
3
+ metadata:
4
+ name: function-pythonic
5
+ annotations:
6
+ # This tells crossplane beta render to connect to the function locally.
7
+ render.crossplane.io/runtime: Development
8
+ spec:
9
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.1.5
@@ -2,28 +2,28 @@
2
2
  name = "crossplane-function-pythonic"
3
3
  description = 'A Python centric Crossplane Function'
4
4
  readme = "README.md"
5
- requires-python = ">=3.11,<3.14"
5
+ requires-python = ">=3.12,<3.15"
6
6
  license = "Apache-2.0"
7
7
  keywords = []
8
8
  authors = [{ name = "Patrick J McNerthney", email = "pat@mcnerthney.com" }]
9
9
  classifiers = [
10
10
  "Development Status :: 4 - Beta",
11
11
  "Programming Language :: Python",
12
- "Programming Language :: Python :: 3.11",
13
12
  "Programming Language :: Python :: 3.12",
14
13
  "Programming Language :: Python :: 3.13",
14
+ "Programming Language :: Python :: 3.14",
15
15
  ]
16
16
 
17
17
  dynamic = ["version"]
18
18
 
19
19
  dependencies = [
20
- "crossplane-function-sdk-python==0.9.0",
21
- "pyyaml==6.0.2",
20
+ "crossplane-function-sdk-python==0.10.0",
21
+ "pyyaml==6.0.3",
22
22
  ]
23
23
 
24
24
  [project.optional-dependencies]
25
- packages = ["kopf==1.38.0"]
26
- pip-install = ["pip==25.2"]
25
+ packages = ["kopf==1.39.0"]
26
+ pip-install = ["pip==25.3"]
27
27
 
28
28
  [project.urls]
29
29
  Documentation = "https://github.com/fortra/function-pythonic#readme"
@@ -75,7 +75,7 @@ check = "ruff check crossplane tests && ruff format --diff crossplane tests"
75
75
  type = "virtual"
76
76
  path = ".venv-test"
77
77
  dependencies = [
78
- "grpcio-tools==1.74.0",
78
+ "grpcio-tools==1.76.0",
79
79
  "pytest==8.4.1",
80
80
  "pytest-asyncio==1.1.0",
81
81
  "pytest-cov==6.2.1",
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3
@@ -1,9 +0,0 @@
1
- apiVersion: pkg.crossplane.io/v1beta1
2
- kind: Function
3
- metadata:
4
- name: function-pythonic
5
- annotations:
6
- # This tells crossplane beta render to connect to the function locally.
7
- render.crossplane.io/runtime: Development
8
- spec:
9
- package: ghcr.io/fortra/function-pythonic:v0.1.3