crossplane-function-pythonic 0.4.0__tar.gz → 0.4.2__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 (138) hide show
  1. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/PKG-INFO +6 -5
  2. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/README.md +4 -3
  3. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__about__.py +1 -1
  4. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__init__.py +2 -1
  5. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/command.py +7 -1
  6. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/composite.py +6 -6
  7. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/function.py +5 -5
  8. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/grpc.py +1 -1
  9. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/protobuf.py +25 -4
  10. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/render.py +341 -331
  11. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/cluster-function-pythonic.yaml +1 -1
  12. crossplane_function_pythonic-0.4.0/examples/connection-details-composition/access-keys.yaml → crossplane_function_pythonic-0.4.2/examples/connection-details-composition/observed.yaml +19 -0
  13. crossplane_function_pythonic-0.4.2/examples/connection-details-composition/render.sh +5 -0
  14. crossplane_function_pythonic-0.4.2/examples/connections/render.sh +7 -0
  15. crossplane_function_pythonic-0.4.2/examples/connections/resources.yaml +27 -0
  16. crossplane_function_pythonic-0.4.2/examples/function-go-templating/context/render.sh +3 -0
  17. crossplane_function_pythonic-0.4.2/examples/function-go-templating/functions/getCredentialData/render.sh +3 -0
  18. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/composition.yaml +1 -1
  19. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/composition.yaml +1 -2
  20. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/render.sh +1 -1
  21. crossplane_function_pythonic-0.4.2/examples/function-go-templating/required-resources/render.sh +3 -0
  22. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/render.sh +1 -1
  23. crossplane_function_pythonic-0.4.2/examples/usages-extra/render.sh +3 -0
  24. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/pyproject.toml +1 -1
  25. crossplane_function_pythonic-0.4.0/examples/connection-details-composition/render.sh +0 -6
  26. crossplane_function_pythonic-0.4.0/examples/connection-details-composition/user.yaml +0 -18
  27. crossplane_function_pythonic-0.4.0/examples/connections/composite-connection.yaml +0 -8
  28. crossplane_function_pythonic-0.4.0/examples/connections/rds-connection.yaml +0 -8
  29. crossplane_function_pythonic-0.4.0/examples/connections/render.sh +0 -9
  30. crossplane_function_pythonic-0.4.0/examples/connections/step-credential.yaml +0 -8
  31. crossplane_function_pythonic-0.4.0/examples/function-go-templating/context/render.sh +0 -3
  32. crossplane_function_pythonic-0.4.0/examples/function-go-templating/functions/getCredentialData/render.sh +0 -3
  33. crossplane_function_pythonic-0.4.0/examples/function-go-templating/required-resources/render.sh +0 -3
  34. crossplane_function_pythonic-0.4.0/examples/usages-extra/render.sh +0 -3
  35. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/.gitignore +0 -0
  36. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/LICENSE +0 -0
  37. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__main__.py +0 -0
  38. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/auto_ready.py +0 -0
  39. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/main.py +0 -0
  40. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/packages.py +0 -0
  41. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/version.py +0 -0
  42. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/README.md +0 -0
  43. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/aks/kubernetescluster.py +0 -0
  44. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/aks/resourcegroup.py +0 -0
  45. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/composition.yaml +0 -0
  46. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/definition.yaml +0 -0
  47. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/install.sh +0 -0
  48. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/kustomization.yaml +0 -0
  49. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/providers.yaml +0 -0
  50. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/render.sh +0 -0
  51. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/xr.yaml +0 -0
  52. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/composition.yaml +0 -0
  53. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/definition.yaml +0 -0
  54. crossplane_function_pythonic-0.4.0/examples/connection-details-composition/secrets.yaml → crossplane_function_pythonic-0.4.2/examples/connection-details-composition/resources.yaml +0 -0
  55. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/xr.yaml +0 -0
  56. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connections/composition.yaml +0 -0
  57. crossplane_function_pythonic-0.4.0/examples/connections/rds-observed.yaml → crossplane_function_pythonic-0.4.2/examples/connections/observed.yaml +0 -0
  58. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connections/xr.yaml +0 -0
  59. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/composition-v2.yaml +0 -0
  60. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/composition.yaml +0 -0
  61. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/definition.yaml +0 -0
  62. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/render-v2.sh +0 -0
  63. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/render.sh +0 -0
  64. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/xr.yaml +0 -0
  65. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/README.md +0 -0
  66. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/composition.yaml +0 -0
  67. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/definition.yaml +0 -0
  68. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/kustomization.yaml +0 -0
  69. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/runtime.yaml +0 -0
  70. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/vcluster.py +0 -0
  71. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/vcluster.yaml +0 -0
  72. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/composition.yaml +0 -0
  73. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/render.sh +0 -0
  74. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/xr.yaml +0 -0
  75. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/xrd.yaml +0 -0
  76. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/composition.yaml +1 -1
  77. /crossplane_function_pythonic-0.4.0/examples/function-go-templating/context/environmentConfigs.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/context/resources.yaml +0 -0
  78. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/xr.yaml +0 -0
  79. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/xrd.yaml +0 -0
  80. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/composition.yaml +0 -0
  81. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/render.sh +0 -0
  82. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/xr.yaml +0 -0
  83. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/composition.yaml +0 -0
  84. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/observed.yaml +0 -0
  85. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/render.sh +0 -0
  86. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/xr.yaml +0 -0
  87. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/composition.yaml +0 -0
  88. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/render.sh +0 -0
  89. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/xr.yaml +0 -0
  90. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCredentialData/composition.yaml +0 -0
  91. /crossplane_function_pythonic-0.4.0/examples/function-go-templating/functions/getCredentialData/credentials.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/functions/getCredentialData/resources.yaml +0 -0
  92. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCredentialData/xr.yaml +0 -0
  93. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/composition.yaml +0 -0
  94. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/observed.yaml +0 -0
  95. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/render.sh +0 -0
  96. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/xr.yaml +0 -0
  97. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/render.sh +0 -0
  98. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/xr.yaml +0 -0
  99. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/composition.yaml +0 -0
  100. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/render.sh +0 -0
  101. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/xr.yaml +0 -0
  102. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/render.sh +0 -0
  103. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/xr.yaml +0 -0
  104. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/composition-real.yaml +0 -0
  105. /crossplane_function_pythonic-0.4.0/examples/function-go-templating/recursive/composition-wrapper.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/recursive/composition.yaml +0 -0
  106. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/xr.yaml +0 -0
  107. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/required-resources/composition.yaml +0 -0
  108. /crossplane_function_pythonic-0.4.0/examples/function-go-templating/required-resources/required-resources.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/required-resources/resources.yaml +0 -0
  109. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/required-resources/xr.yaml +0 -0
  110. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/composition.yaml +0 -0
  111. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/observed.yaml +0 -0
  112. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/render.sh +0 -0
  113. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/sequencer.py +0 -0
  114. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/xr.yaml +0 -0
  115. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/composition.yaml +0 -0
  116. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/definition.yaml +0 -0
  117. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/observed.yaml +0 -0
  118. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/render.sh +0 -0
  119. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/xr.yaml +0 -0
  120. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/composition.yaml +0 -0
  121. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/kustomization.yaml +0 -0
  122. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/render.sh +0 -0
  123. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/vcluster.py +0 -0
  124. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/xr.yaml +0 -0
  125. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/xrd.yaml +0 -0
  126. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/README.md +0 -0
  127. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/composition.yaml +0 -0
  128. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/definition.yaml +0 -0
  129. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/observed.yaml +0 -0
  130. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/provider-ec2.yaml +0 -0
  131. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/xr.yaml +0 -0
  132. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/run-all.sh +0 -0
  133. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/single-purpose/render.sh +0 -0
  134. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/single-purpose/xr.yaml +0 -0
  135. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/usages-extra/composition.yaml +0 -0
  136. /crossplane_function_pythonic-0.4.0/examples/usages-extra/observedResources.yaml → /crossplane_function_pythonic-0.4.2/examples/usages-extra/observed.yaml +0 -0
  137. /crossplane_function_pythonic-0.4.0/examples/usages-extra/extraResources.yaml → /crossplane_function_pythonic-0.4.2/examples/usages-extra/resources.yaml +0 -0
  138. {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/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.4.0
3
+ Version: 0.4.2
4
4
  Summary: A Python centric Crossplane Function
5
5
  Project-URL: Documentation, https://github.com/crossplane-contrib/function-pythonic#readme
6
6
  Project-URL: Issues, https://github.com/crossplane-contrib/function-pythonic/issues
@@ -19,7 +19,7 @@ Requires-Dist: inflect==7.5.0
19
19
  Requires-Dist: kr8s==0.20.15
20
20
  Requires-Dist: pyyaml==6.0.3
21
21
  Provides-Extra: packages
22
- Requires-Dist: kopf==1.42.5; extra == 'packages'
22
+ Requires-Dist: kopf==1.43.0; extra == 'packages'
23
23
  Provides-Extra: pip-install
24
24
  Requires-Dist: pip==26.0.1; extra == 'pip-install'
25
25
  Description-Content-Type: text/markdown
@@ -83,7 +83,7 @@ kind: Function
83
83
  metadata:
84
84
  name: function-pythonic
85
85
  spec:
86
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
86
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
87
87
  ```
88
88
 
89
89
  ### Crossplane V1
@@ -95,7 +95,7 @@ kind: Function
95
95
  metadata:
96
96
  name: function-pythonic
97
97
  spec:
98
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
98
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
99
99
  runtimeConfigRef:
100
100
  name: function-pythonic
101
101
  --
@@ -241,6 +241,7 @@ The following functions are provided to create Protobuf structures:
241
241
  | List | Create a new Protobuf list |
242
242
  | Unknown | Create a new Protobuf unknown placeholder |
243
243
  | Yaml | Create a new Protobuf structure from a yaml string |
244
+ | YamlAll | Create a new Protobuf list from a yaml string |
244
245
  | Json | Create a new Protobuf structure from a json string |
245
246
  | B64Encode | Encode a string into base 64 |
246
247
  | B64Decode | Decode a string from base 64 |
@@ -616,7 +617,7 @@ kind: Function
616
617
  metadata:
617
618
  name: function-pythonic
618
619
  spec:
619
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
620
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
620
621
  runtimeConfigRef:
621
622
  name: function-pythonic
622
623
  ---
@@ -57,7 +57,7 @@ kind: Function
57
57
  metadata:
58
58
  name: function-pythonic
59
59
  spec:
60
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
60
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
61
61
  ```
62
62
 
63
63
  ### Crossplane V1
@@ -69,7 +69,7 @@ kind: Function
69
69
  metadata:
70
70
  name: function-pythonic
71
71
  spec:
72
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
72
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
73
73
  runtimeConfigRef:
74
74
  name: function-pythonic
75
75
  --
@@ -215,6 +215,7 @@ The following functions are provided to create Protobuf structures:
215
215
  | List | Create a new Protobuf list |
216
216
  | Unknown | Create a new Protobuf unknown placeholder |
217
217
  | Yaml | Create a new Protobuf structure from a yaml string |
218
+ | YamlAll | Create a new Protobuf list from a yaml string |
218
219
  | Json | Create a new Protobuf structure from a json string |
219
220
  | B64Encode | Encode a string into base 64 |
220
221
  | B64Decode | Decode a string from base 64 |
@@ -590,7 +591,7 @@ kind: Function
590
591
  metadata:
591
592
  name: function-pythonic
592
593
  spec:
593
- package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.0
594
+ package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
594
595
  runtimeConfigRef:
595
596
  name: function-pythonic
596
597
  ---
@@ -1,2 +1,2 @@
1
1
  # This is set at build time, using "hatch version"
2
- __version__ = "0.4.0"
2
+ __version__ = "0.4.2"
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  from .composite import BaseComposite
4
- from .protobuf import append, Map, List, Unknown, Yaml, Json, B64Encode, B64Decode
4
+ from .protobuf import append, Map, List, Unknown, Yaml, YamlAll, Json, B64Encode, B64Decode
5
5
 
6
6
  __all__ = [
7
7
  'BaseComposite',
@@ -10,6 +10,7 @@ __all__ = [
10
10
  'List',
11
11
  'Unknown',
12
12
  'Yaml',
13
+ 'YamlAll',
13
14
  'Json',
14
15
  'B64Encode',
15
16
  'B64Decode',
@@ -63,7 +63,7 @@ class Command:
63
63
  help='Enable Crossplane V1 compatibility mode',
64
64
  )
65
65
 
66
- def __init__(self, args):
66
+ def __init__(self, args=None):
67
67
  self.args = args
68
68
  self.initialize()
69
69
 
@@ -77,6 +77,12 @@ class Command:
77
77
  logger = logging.getLogger()
78
78
  logger.handlers = [handler]
79
79
  logger.setLevel(logging.DEBUG if self.args.debug else logging.INFO)
80
+ # Suppress noisy libraries, these can be overriden using --logger-level
81
+ logging.getLogger('asyncio').setLevel(logging.INFO)
82
+ logging.getLogger('grpc').setLevel(logging.INFO)
83
+ logging.getLogger('httpcore').setLevel(logging.INFO)
84
+ logging.getLogger('httpx').setLevel(logging.WARNING)
85
+ logging.getLogger('kr8s').setLevel(logging.INFO)
80
86
  for logger_level in self.args.logger_level:
81
87
  for logger_level in logger_level.split(','):
82
88
  logger_level = logger_level.split('=')
@@ -43,7 +43,7 @@ class Connection:
43
43
 
44
44
  def __set__(self, composite, values):
45
45
  connection = self.__get__(composite)
46
- coneection()
46
+ connection()
47
47
  for key, value in values:
48
48
  connection[key] = value
49
49
 
@@ -384,7 +384,7 @@ class Resource:
384
384
  field = resource.observed.metadata.name
385
385
  else:
386
386
  field = resource.status.notReady
387
- self.metadata.annotations[f"Dependency{resource.name}"] = field
387
+ self.metadata.annotations[f"pythonic.dependency/{resource.name}"] = field
388
388
 
389
389
  class Requireds:
390
390
  def __init__(self, composite):
@@ -757,7 +757,7 @@ class Results:
757
757
  return len(self) > 0
758
758
 
759
759
  def __len__(self):
760
- len(self._results)
760
+ return len(self._results)
761
761
 
762
762
  def __getitem__(self, key):
763
763
  if key >= len(self._results):
@@ -832,7 +832,7 @@ class Result:
832
832
 
833
833
  @property
834
834
  def claim(self):
835
- return bool(self) and self._result == fnv1.Target.TARGET_COMPOSITE_AND_CLAIM
835
+ return bool(self) and self._result.target == fnv1.Target.TARGET_COMPOSITE_AND_CLAIM
836
836
 
837
837
  @claim.setter
838
838
  def claim(self, claim):
@@ -887,10 +887,10 @@ class _Connection:
887
887
 
888
888
  def __call__(self, **kwargs):
889
889
  self._composite.response.desired.composite.connection_details(**kwargs)
890
- if self._composite_v1:
890
+ if self._composite.crossplane_v1:
891
891
  return
892
892
  del self._composite.resources[self._resource_name]
893
- for key, value in kwargs:
893
+ for key, value in kwargs.items():
894
894
  self[key] = value
895
895
 
896
896
  def __setattr__(self, key, value):
@@ -17,9 +17,8 @@ logger = logging.getLogger(__name__)
17
17
  class FunctionRunner(grpcv1.FunctionRunnerService):
18
18
  """A FunctionRunner handles gRPC RunFunctionRequests."""
19
19
 
20
- def __init__(self, debug=False, renderUnknowns=False, crossplane_v1=False):
20
+ def __init__(self, renderUnknowns=False, crossplane_v1=False):
21
21
  """Create a new FunctionRunner."""
22
- self.debug = debug
23
22
  self.renderUnknowns = renderUnknowns
24
23
  self.crossplane_v1 = crossplane_v1
25
24
  self.clazzes = {}
@@ -182,7 +181,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
182
181
  for _, resource in sorted(entry for entry in composite.resources):
183
182
  dependencies = resource.desired._getDependencies
184
183
  if dependencies:
185
- if self.debug:
184
+ if composite.logger.isEnabledFor(logging.DEBUG):
186
185
  for destination, source in sorted(dependencies.items()):
187
186
  destination = self.trimFullName(destination)
188
187
  source = self.trimFullName(source)
@@ -278,7 +277,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
278
277
  if resource.unknownsFatal or (resource.unknownsFatal is None and composite.unknownsFatal):
279
278
  fatalResources.append(name)
280
279
  fatal = True
281
- if self.debug:
280
+ if composite.logger.isEnabledFor(logging.DEBUG):
282
281
  for destination, source in sorted(unknowns.items()):
283
282
  destination = self.trimFullName(destination)
284
283
  source = self.trimFullName(source)
@@ -319,7 +318,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
319
318
  message = 'All resources are composed'
320
319
  status = True
321
320
  result = None
322
- if not self.debug and level:
321
+ if not composite.logger.isEnabledFor(logging.DEBUG) and level:
323
322
  level(message)
324
323
  composite.conditions.ResourcesComposed(reason, message, status)
325
324
  if result:
@@ -378,6 +377,7 @@ class Module:
378
377
  self.List = pythonic.List
379
378
  self.Unknown = pythonic.Unknown
380
379
  self.Yaml = pythonic.Yaml
380
+ self.YamlAll = pythonic.YamlAll
381
381
  self.Json = pythonic.Json
382
382
  self.B64Encode = pythonic.B64Encode
383
383
  self.B64Decode = pythonic.B64Decode
@@ -88,7 +88,7 @@ class Command(command.Command):
88
88
 
89
89
  async def run(self):
90
90
  grpc.aio.init_grpc_aio()
91
- grpc_runner = function.FunctionRunner(self.args.debug, self.args.render_unknowns, self.args.crossplane_v1)
91
+ grpc_runner = function.FunctionRunner(self.args.render_unknowns, self.args.crossplane_v1)
92
92
  grpc_server = grpc.aio.server()
93
93
  grpcv1.add_FunctionRunnerServiceServicer_to_server(grpc_runner, grpc_server)
94
94
  if self.args.insecure:
@@ -42,6 +42,13 @@ def Yaml(string, readOnly=None):
42
42
  string = str(string)
43
43
  return Value(None, None, yaml.safe_load(string), readOnly)
44
44
 
45
+ def YamlAll(string, readOnly=None):
46
+ if isinstance(string, (FieldMessage, Value)):
47
+ if not string:
48
+ return string
49
+ string = str(string)
50
+ return Value(None, None, [document for document in yaml.safe_load_all(string)], readOnly)
51
+
45
52
  def Json(string, readOnly=None):
46
53
  if isinstance(string, (FieldMessage, Value)):
47
54
  if not string:
@@ -406,12 +413,26 @@ class RepeatedMessage:
406
413
 
407
414
  def __getitem__(self, key):
408
415
  key = self._validate_key(key)
409
- if key in self._cache:
410
- return self._cache[key]
411
- if self._messages is _Unknown or key >= len(self._messages):
416
+ if key == append:
417
+ if self._messages is _Unknown:
418
+ key = 0
419
+ else:
420
+ key = len(self._messages)
412
421
  value = _Unknown
413
422
  else:
414
- value = self._messages[key]
423
+ if key < 0:
424
+ if self._messages is _Unknown:
425
+ key = 0
426
+ else:
427
+ key = len(self._messages) + key
428
+ if key < 0:
429
+ key = 0
430
+ if key in self._cache:
431
+ return self._cache[key]
432
+ if self._messages is _Unknown or key >= len(self._messages):
433
+ value = _Unknown
434
+ else:
435
+ value = self._messages[key]
415
436
  if value is None and self._field.has_default_value:
416
437
  value = self._field.default_value
417
438
  if self._field.type == self._field.TYPE_MESSAGE: