clear-skies 2.0.4__py3-none-any.whl → 2.0.5__py3-none-any.whl

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.

Potentially problematic release.


This version of clear-skies might be problematic. Click here for more details.

Files changed (253) hide show
  1. clear_skies-2.0.5.dist-info/METADATA +74 -0
  2. clear_skies-2.0.5.dist-info/RECORD +4 -0
  3. {clear_skies-2.0.4.dist-info → clear_skies-2.0.5.dist-info}/WHEEL +1 -1
  4. clear_skies-2.0.4.dist-info/METADATA +0 -36
  5. clear_skies-2.0.4.dist-info/RECORD +0 -251
  6. clearskies/__init__.py +0 -61
  7. clearskies/action.py +0 -7
  8. clearskies/authentication/__init__.py +0 -15
  9. clearskies/authentication/authentication.py +0 -46
  10. clearskies/authentication/authorization.py +0 -16
  11. clearskies/authentication/authorization_pass_through.py +0 -20
  12. clearskies/authentication/jwks.py +0 -163
  13. clearskies/authentication/public.py +0 -5
  14. clearskies/authentication/secret_bearer.py +0 -553
  15. clearskies/autodoc/__init__.py +0 -8
  16. clearskies/autodoc/formats/__init__.py +0 -5
  17. clearskies/autodoc/formats/oai3_json/__init__.py +0 -7
  18. clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -87
  19. clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -15
  20. clearskies/autodoc/formats/oai3_json/parameter.py +0 -35
  21. clearskies/autodoc/formats/oai3_json/request.py +0 -68
  22. clearskies/autodoc/formats/oai3_json/response.py +0 -28
  23. clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -11
  24. clearskies/autodoc/formats/oai3_json/schema/array.py +0 -9
  25. clearskies/autodoc/formats/oai3_json/schema/default.py +0 -13
  26. clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -7
  27. clearskies/autodoc/formats/oai3_json/schema/object.py +0 -35
  28. clearskies/autodoc/formats/oai3_json/test.json +0 -1985
  29. clearskies/autodoc/py.typed +0 -0
  30. clearskies/autodoc/request/__init__.py +0 -15
  31. clearskies/autodoc/request/header.py +0 -6
  32. clearskies/autodoc/request/json_body.py +0 -6
  33. clearskies/autodoc/request/parameter.py +0 -8
  34. clearskies/autodoc/request/request.py +0 -47
  35. clearskies/autodoc/request/url_parameter.py +0 -6
  36. clearskies/autodoc/request/url_path.py +0 -6
  37. clearskies/autodoc/response/__init__.py +0 -5
  38. clearskies/autodoc/response/response.py +0 -9
  39. clearskies/autodoc/schema/__init__.py +0 -31
  40. clearskies/autodoc/schema/array.py +0 -10
  41. clearskies/autodoc/schema/base64.py +0 -8
  42. clearskies/autodoc/schema/boolean.py +0 -5
  43. clearskies/autodoc/schema/date.py +0 -5
  44. clearskies/autodoc/schema/datetime.py +0 -5
  45. clearskies/autodoc/schema/double.py +0 -5
  46. clearskies/autodoc/schema/enum.py +0 -17
  47. clearskies/autodoc/schema/integer.py +0 -6
  48. clearskies/autodoc/schema/long.py +0 -5
  49. clearskies/autodoc/schema/number.py +0 -6
  50. clearskies/autodoc/schema/object.py +0 -13
  51. clearskies/autodoc/schema/password.py +0 -5
  52. clearskies/autodoc/schema/schema.py +0 -11
  53. clearskies/autodoc/schema/string.py +0 -5
  54. clearskies/backends/__init__.py +0 -65
  55. clearskies/backends/api_backend.py +0 -1178
  56. clearskies/backends/backend.py +0 -136
  57. clearskies/backends/cursor_backend.py +0 -335
  58. clearskies/backends/memory_backend.py +0 -797
  59. clearskies/backends/secrets_backend.py +0 -106
  60. clearskies/column.py +0 -1233
  61. clearskies/columns/__init__.py +0 -71
  62. clearskies/columns/audit.py +0 -206
  63. clearskies/columns/belongs_to_id.py +0 -483
  64. clearskies/columns/belongs_to_model.py +0 -132
  65. clearskies/columns/belongs_to_self.py +0 -105
  66. clearskies/columns/boolean.py +0 -113
  67. clearskies/columns/category_tree.py +0 -275
  68. clearskies/columns/category_tree_ancestors.py +0 -51
  69. clearskies/columns/category_tree_children.py +0 -127
  70. clearskies/columns/category_tree_descendants.py +0 -48
  71. clearskies/columns/created.py +0 -95
  72. clearskies/columns/created_by_authorization_data.py +0 -116
  73. clearskies/columns/created_by_header.py +0 -99
  74. clearskies/columns/created_by_ip.py +0 -92
  75. clearskies/columns/created_by_routing_data.py +0 -97
  76. clearskies/columns/created_by_user_agent.py +0 -92
  77. clearskies/columns/date.py +0 -234
  78. clearskies/columns/datetime.py +0 -282
  79. clearskies/columns/email.py +0 -76
  80. clearskies/columns/float.py +0 -153
  81. clearskies/columns/has_many.py +0 -505
  82. clearskies/columns/has_many_self.py +0 -56
  83. clearskies/columns/has_one.py +0 -14
  84. clearskies/columns/integer.py +0 -160
  85. clearskies/columns/json.py +0 -126
  86. clearskies/columns/many_to_many_ids.py +0 -337
  87. clearskies/columns/many_to_many_ids_with_data.py +0 -274
  88. clearskies/columns/many_to_many_models.py +0 -158
  89. clearskies/columns/many_to_many_pivots.py +0 -134
  90. clearskies/columns/phone.py +0 -159
  91. clearskies/columns/select.py +0 -92
  92. clearskies/columns/string.py +0 -102
  93. clearskies/columns/timestamp.py +0 -164
  94. clearskies/columns/updated.py +0 -110
  95. clearskies/columns/uuid.py +0 -86
  96. clearskies/configs/README.md +0 -105
  97. clearskies/configs/__init__.py +0 -162
  98. clearskies/configs/actions.py +0 -43
  99. clearskies/configs/any.py +0 -13
  100. clearskies/configs/any_dict.py +0 -22
  101. clearskies/configs/any_dict_or_callable.py +0 -23
  102. clearskies/configs/authentication.py +0 -23
  103. clearskies/configs/authorization.py +0 -23
  104. clearskies/configs/boolean.py +0 -16
  105. clearskies/configs/boolean_or_callable.py +0 -18
  106. clearskies/configs/callable_config.py +0 -18
  107. clearskies/configs/columns.py +0 -34
  108. clearskies/configs/conditions.py +0 -30
  109. clearskies/configs/config.py +0 -24
  110. clearskies/configs/datetime.py +0 -18
  111. clearskies/configs/datetime_or_callable.py +0 -19
  112. clearskies/configs/endpoint.py +0 -23
  113. clearskies/configs/endpoint_list.py +0 -28
  114. clearskies/configs/float.py +0 -16
  115. clearskies/configs/float_or_callable.py +0 -18
  116. clearskies/configs/integer.py +0 -16
  117. clearskies/configs/integer_or_callable.py +0 -18
  118. clearskies/configs/joins.py +0 -30
  119. clearskies/configs/list_any_dict.py +0 -30
  120. clearskies/configs/list_any_dict_or_callable.py +0 -31
  121. clearskies/configs/model_class.py +0 -35
  122. clearskies/configs/model_column.py +0 -65
  123. clearskies/configs/model_columns.py +0 -56
  124. clearskies/configs/model_destination_name.py +0 -25
  125. clearskies/configs/model_to_id_column.py +0 -43
  126. clearskies/configs/readable_model_column.py +0 -9
  127. clearskies/configs/readable_model_columns.py +0 -9
  128. clearskies/configs/schema.py +0 -23
  129. clearskies/configs/searchable_model_columns.py +0 -9
  130. clearskies/configs/security_headers.py +0 -39
  131. clearskies/configs/select.py +0 -26
  132. clearskies/configs/select_list.py +0 -47
  133. clearskies/configs/string.py +0 -29
  134. clearskies/configs/string_dict.py +0 -32
  135. clearskies/configs/string_list.py +0 -32
  136. clearskies/configs/string_list_or_callable.py +0 -35
  137. clearskies/configs/string_or_callable.py +0 -18
  138. clearskies/configs/timedelta.py +0 -18
  139. clearskies/configs/timezone.py +0 -18
  140. clearskies/configs/url.py +0 -23
  141. clearskies/configs/validators.py +0 -45
  142. clearskies/configs/writeable_model_column.py +0 -9
  143. clearskies/configs/writeable_model_columns.py +0 -9
  144. clearskies/configurable.py +0 -76
  145. clearskies/contexts/__init__.py +0 -11
  146. clearskies/contexts/cli.py +0 -117
  147. clearskies/contexts/context.py +0 -98
  148. clearskies/contexts/wsgi.py +0 -76
  149. clearskies/contexts/wsgi_ref.py +0 -82
  150. clearskies/decorators.py +0 -33
  151. clearskies/di/__init__.py +0 -14
  152. clearskies/di/additional_config.py +0 -130
  153. clearskies/di/additional_config_auto_import.py +0 -17
  154. clearskies/di/di.py +0 -973
  155. clearskies/di/inject/__init__.py +0 -23
  156. clearskies/di/inject/by_class.py +0 -21
  157. clearskies/di/inject/by_name.py +0 -18
  158. clearskies/di/inject/di.py +0 -13
  159. clearskies/di/inject/environment.py +0 -14
  160. clearskies/di/inject/input_output.py +0 -20
  161. clearskies/di/inject/now.py +0 -13
  162. clearskies/di/inject/requests.py +0 -13
  163. clearskies/di/inject/secrets.py +0 -14
  164. clearskies/di/inject/utcnow.py +0 -13
  165. clearskies/di/inject/uuid.py +0 -15
  166. clearskies/di/injectable.py +0 -29
  167. clearskies/di/injectable_properties.py +0 -131
  168. clearskies/di/test_module/__init__.py +0 -6
  169. clearskies/di/test_module/another_module/__init__.py +0 -2
  170. clearskies/di/test_module/module_class.py +0 -5
  171. clearskies/end.py +0 -183
  172. clearskies/endpoint.py +0 -1314
  173. clearskies/endpoint_group.py +0 -338
  174. clearskies/endpoints/__init__.py +0 -25
  175. clearskies/endpoints/advanced_search.py +0 -526
  176. clearskies/endpoints/callable.py +0 -388
  177. clearskies/endpoints/create.py +0 -205
  178. clearskies/endpoints/delete.py +0 -139
  179. clearskies/endpoints/get.py +0 -271
  180. clearskies/endpoints/health_check.py +0 -183
  181. clearskies/endpoints/list.py +0 -574
  182. clearskies/endpoints/restful_api.py +0 -427
  183. clearskies/endpoints/schema.py +0 -189
  184. clearskies/endpoints/simple_search.py +0 -286
  185. clearskies/endpoints/update.py +0 -193
  186. clearskies/environment.py +0 -104
  187. clearskies/exceptions/__init__.py +0 -19
  188. clearskies/exceptions/authentication.py +0 -2
  189. clearskies/exceptions/authorization.py +0 -2
  190. clearskies/exceptions/client_error.py +0 -2
  191. clearskies/exceptions/input_errors.py +0 -4
  192. clearskies/exceptions/missing_dependency.py +0 -2
  193. clearskies/exceptions/moved_permanently.py +0 -3
  194. clearskies/exceptions/moved_temporarily.py +0 -3
  195. clearskies/exceptions/not_found.py +0 -2
  196. clearskies/functional/__init__.py +0 -7
  197. clearskies/functional/routing.py +0 -92
  198. clearskies/functional/string.py +0 -112
  199. clearskies/functional/validations.py +0 -76
  200. clearskies/input_outputs/__init__.py +0 -13
  201. clearskies/input_outputs/cli.py +0 -171
  202. clearskies/input_outputs/exceptions/__init__.py +0 -2
  203. clearskies/input_outputs/exceptions/cli_input_error.py +0 -2
  204. clearskies/input_outputs/exceptions/cli_not_found.py +0 -2
  205. clearskies/input_outputs/headers.py +0 -45
  206. clearskies/input_outputs/input_output.py +0 -138
  207. clearskies/input_outputs/programmatic.py +0 -69
  208. clearskies/input_outputs/py.typed +0 -0
  209. clearskies/input_outputs/wsgi.py +0 -77
  210. clearskies/model.py +0 -1922
  211. clearskies/py.typed +0 -0
  212. clearskies/query/__init__.py +0 -12
  213. clearskies/query/condition.py +0 -223
  214. clearskies/query/join.py +0 -136
  215. clearskies/query/query.py +0 -196
  216. clearskies/query/sort.py +0 -27
  217. clearskies/schema.py +0 -82
  218. clearskies/secrets/__init__.py +0 -6
  219. clearskies/secrets/additional_configs/__init__.py +0 -32
  220. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -61
  221. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -160
  222. clearskies/secrets/akeyless.py +0 -182
  223. clearskies/secrets/exceptions/__init__.py +0 -1
  224. clearskies/secrets/exceptions/not_found.py +0 -2
  225. clearskies/secrets/secrets.py +0 -38
  226. clearskies/security_header.py +0 -15
  227. clearskies/security_headers/__init__.py +0 -11
  228. clearskies/security_headers/cache_control.py +0 -67
  229. clearskies/security_headers/cors.py +0 -50
  230. clearskies/security_headers/csp.py +0 -94
  231. clearskies/security_headers/hsts.py +0 -22
  232. clearskies/security_headers/x_content_type_options.py +0 -0
  233. clearskies/security_headers/x_frame_options.py +0 -0
  234. clearskies/test_base.py +0 -8
  235. clearskies/typing.py +0 -11
  236. clearskies/validator.py +0 -37
  237. clearskies/validators/__init__.py +0 -33
  238. clearskies/validators/after_column.py +0 -62
  239. clearskies/validators/before_column.py +0 -13
  240. clearskies/validators/in_the_future.py +0 -32
  241. clearskies/validators/in_the_future_at_least.py +0 -11
  242. clearskies/validators/in_the_future_at_most.py +0 -10
  243. clearskies/validators/in_the_past.py +0 -32
  244. clearskies/validators/in_the_past_at_least.py +0 -10
  245. clearskies/validators/in_the_past_at_most.py +0 -10
  246. clearskies/validators/maximum_length.py +0 -26
  247. clearskies/validators/maximum_value.py +0 -29
  248. clearskies/validators/minimum_length.py +0 -26
  249. clearskies/validators/minimum_value.py +0 -29
  250. clearskies/validators/required.py +0 -34
  251. clearskies/validators/timedelta.py +0 -59
  252. clearskies/validators/unique.py +0 -30
  253. {clear_skies-2.0.4.dist-info → clear_skies-2.0.5.dist-info/licenses}/LICENSE +0 -0
File without changes
@@ -1,15 +0,0 @@
1
- from .header import Header
2
- from .json_body import JSONBody
3
- from .parameter import Parameter
4
- from .request import Request
5
- from .url_parameter import URLParameter
6
- from .url_path import URLPath
7
-
8
- __all__ = [
9
- "Header",
10
- "JSONBody",
11
- "Parameter",
12
- "Request",
13
- "URLParameter",
14
- "URLPath",
15
- ]
@@ -1,6 +0,0 @@
1
- from .parameter import Parameter
2
-
3
-
4
- class Header(Parameter):
5
- location = "header"
6
- in_body = False
@@ -1,6 +0,0 @@
1
- from .parameter import Parameter
2
-
3
-
4
- class JSONBody(Parameter):
5
- location = "json_body"
6
- in_body = True
@@ -1,8 +0,0 @@
1
- class Parameter:
2
- location = ""
3
- in_body = False
4
-
5
- def __init__(self, definition, description="", required=False):
6
- self.definition = definition
7
- self.description = description
8
- self.required = required
@@ -1,47 +0,0 @@
1
- import re
2
- from typing import Any
3
-
4
-
5
- class Request:
6
- description: str = ""
7
- relative_path: str = ""
8
- request_methods: list[str] = []
9
- parameters: list[Any] = []
10
- responses = None
11
- root_properties = None
12
-
13
- def __init__(
14
- self, description, responses, relative_path="", request_methods="GET", parameters=None, root_properties=None
15
- ):
16
- # clearskies supports path parameters via {parameter} and :parameter but we want to normalize to {paramter} for
17
- # autodoc purposes
18
- if ":" in relative_path:
19
- relative_path = "/" + relative_path.strip("/") + "/"
20
- for match in re.findall("/(:[^/]+)/", relative_path):
21
- name = match[1:]
22
- relative_path = relative_path.replace(f"/:{name}/", "/{" + name + "}/")
23
-
24
- self.description = description
25
- self.responses = responses
26
- self.relative_path = relative_path.lstrip("/")
27
- self.request_methods = [request_methods] if type(request_methods) == str else request_methods
28
- self.set_parameters(parameters)
29
- self.root_properties = root_properties if root_properties is not None else {}
30
-
31
- def set_request_methods(self, request_methods):
32
- self.request_methods = [request_methods] if type(request_methods) == str else request_methods
33
- return self
34
-
35
- def prepend_relative_path(self, path):
36
- self.relative_path = path.rstrip("/") + "/" + self.relative_path.lstrip("/")
37
- return self
38
-
39
- def append_relative_path(self, path):
40
- self.relative_path = self.relative_path.rstrip("/") + "/" + path.lstrip("/")
41
- return self
42
-
43
- def set_parameters(self, parameters=None):
44
- self.parameters = parameters if parameters else []
45
-
46
- def add_parameter(self, parameter):
47
- self.parameters.append(parameter)
@@ -1,6 +0,0 @@
1
- from .parameter import Parameter
2
-
3
-
4
- class URLParameter(Parameter):
5
- location = "url_parameter"
6
- in_body = False
@@ -1,6 +0,0 @@
1
- from .parameter import Parameter
2
-
3
-
4
- class URLPath(Parameter):
5
- location = "url_path"
6
- in_body = False
@@ -1,5 +0,0 @@
1
- from .response import Response
2
-
3
- __all__ = [
4
- "Response",
5
- ]
@@ -1,9 +0,0 @@
1
- class Response:
2
- status = None
3
- schema = None
4
- description = None
5
-
6
- def __init__(self, status, schema, description=None):
7
- self.status = status
8
- self.schema = schema
9
- self.description = description if description is not None else ""
@@ -1,31 +0,0 @@
1
- from .array import Array
2
- from .base64 import Base64
3
- from .boolean import Boolean
4
- from .date import Date
5
- from .datetime import Datetime
6
- from .double import Double
7
- from .enum import Enum
8
- from .integer import Integer
9
- from .long import Long
10
- from .number import Number
11
- from .object import Object
12
- from .password import Password
13
- from .schema import Schema
14
- from .string import String
15
-
16
- __all__ = [
17
- "Array",
18
- "Base64",
19
- "Boolean",
20
- "Date",
21
- "Datetime",
22
- "Double",
23
- "Enum",
24
- "Integer",
25
- "Long",
26
- "Number",
27
- "Object",
28
- "Password",
29
- "Schema",
30
- "String",
31
- ]
@@ -1,10 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Array(Schema):
5
- item_definition = None
6
- _type = "array"
7
-
8
- def __init__(self, name, item_definition, value=None):
9
- super().__init__(name, example=None, value=value)
10
- self.item_definition = item_definition
@@ -1,8 +0,0 @@
1
- from .string import String
2
-
3
-
4
- class Base64(String):
5
- _format = "byte"
6
-
7
- def __init__(self, name, example=None, value=None):
8
- super().__init__(name, example=example, value=value)
@@ -1,5 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Boolean(Schema):
5
- _type = "boolean"
@@ -1,5 +0,0 @@
1
- from .string import String
2
-
3
-
4
- class Date(String):
5
- _format = "date"
@@ -1,5 +0,0 @@
1
- from .string import String
2
-
3
-
4
- class Datetime(String):
5
- _format = "date-time"
@@ -1,5 +0,0 @@
1
- from .number import Number
2
-
3
-
4
- class Double(Number):
5
- _format = "double"
@@ -1,17 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Enum(Schema):
5
- values = None
6
- value_type = None
7
- example = None
8
- _type = "string"
9
- _format = ""
10
-
11
- def __init__(self, name, values, value_type, example=None):
12
- self.name = name
13
- self.values = values
14
- self.value_type = value_type
15
- self._type = value_type._type
16
- self._format = value_type._format
17
- self.example = example
@@ -1,6 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Integer(Schema):
5
- _type = "integer"
6
- _format = "int32"
@@ -1,5 +0,0 @@
1
- from .integer import Integer
2
-
3
-
4
- class Long(Integer):
5
- _format = "int64"
@@ -1,6 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Number(Schema):
5
- _type = "number"
6
- _format = "float"
@@ -1,13 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class Object(Schema):
5
- children = None
6
- model_name = None
7
- _type = "object"
8
- _format = ""
9
-
10
- def __init__(self, name, children, value=None, example=None, model_name=None):
11
- super().__init__(name, example=example, value=value)
12
- self.children = children
13
- self.model_name = model_name
@@ -1,5 +0,0 @@
1
- from .string import String
2
-
3
-
4
- class Password(String):
5
- _format = "password"
@@ -1,11 +0,0 @@
1
- class Schema:
2
- name = None
3
- example = None
4
- value = None
5
- _type = "string"
6
- _format = ""
7
-
8
- def __init__(self, name, example=None, value=None):
9
- self.name = name
10
- self.example = example
11
- self.value = value
@@ -1,5 +0,0 @@
1
- from .schema import Schema
2
-
3
-
4
- class String(Schema):
5
- pass
@@ -1,65 +0,0 @@
1
- """
2
- The backend system provides a layer of abstraction between a clearskies model and the place where it stores its data.
3
-
4
- ## Motivation
5
-
6
- The goal of the backend system is to create a standard way to interact with external systems, whether those are
7
- databases, APIs, cloud resources, etc... For comparison, models in other frameworks typically interact exclusively
8
- with SQL databases. Therefore, building integrations with other data stores or 3rd party systems requires the
9
- creation of bespoke SDKs, which results in time spent integrating and learning how to use them. Clearskies models
10
- work with different backends to normalize the process of integrating with data stores and external systems.
11
- This ability to switch backends turns the models, in essence, into a standardized SDK. The details of how to
12
- interact with some other system are abstracted away into the backend, and then developers can interact with the
13
- system using models in the standard way.
14
-
15
- Of course, no abstraction layer is perfect, and not all datastores can fit into the backend system provided by
16
- clearskies. That's okay! Like every abstraction layer in clearskies, you should use it when it works for
17
- you and forget about it otherwise. So, for instance, it is not possible to build arbitrarily complex SQL
18
- queries with the query system provided by models, but you can always inject the cursor and use it directly.
19
- If some arbitrary data store just works in a completely different way, such that the backend system doesn't
20
- work for it, it's still fine to build an SDK the "old school" way and use it in a clearskies application.
21
-
22
- ## Backends
23
-
24
- There are four primary kinds of backends built into clearskies, with a few sub-types. Those are:
25
-
26
- 1. CursorBackend: Store data in an SQL-like database
27
- 2. MemoryBackend: Store data in-memory
28
- 3. ApiBackend: Use an API to fetch and store data
29
- 1. ApiGetOnlyBackend: Only supports fetching individual records from the API by id.
30
- 2. RestfulApiAdvancedSearchBackend: Automatically integrates with APIs built using clearskies.endpoints.RestfulApi
31
- 4. SecretsBackend - Store data directly in a secrets manager
32
-
33
- See the documentation for each backend to understand how to configure and use it. In all cases though, you specify
34
- the backend by instantiating the backend and attaching it to the model class via the `backend` attribute:
35
-
36
- ```python
37
- import clearskies
38
-
39
-
40
- class MyModel(clearskies.model):
41
- backend = clearskies.backends.MemoryBackend()
42
- ```
43
- """
44
-
45
- # from .api_backend import ApiBackend
46
- # from .api_get_only_backend import ApiGetOnlyBackend
47
- from clearskies.backends.api_backend import ApiBackend
48
- from clearskies.backends.backend import Backend
49
- from clearskies.backends.cursor_backend import CursorBackend
50
- from clearskies.backends.memory_backend import MemoryBackend
51
-
52
- # from .memory_backend import MemoryBackend
53
- # from .restful_api_advanced_search_backend import RestfulApiAdvancedSearchBackend
54
- # from .secrets_backend import SecretsBackend
55
-
56
-
57
- __all__ = [
58
- "ApiBackend",
59
- # "ApiGetOnlyBackend",
60
- "Backend",
61
- "CursorBackend",
62
- "MemoryBackend",
63
- # "RestfulApiAdvancedSearchBackend",
64
- # "SecretsBackend",
65
- ]