fal 1.7.7__tar.gz → 1.8.1__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.

Potentially problematic release.


This version of fal might be problematic. Click here for more details.

Files changed (172) hide show
  1. {fal-1.7.7/fal.egg-info → fal-1.8.1}/PKG-INFO +1 -1
  2. {fal-1.7.7 → fal-1.8.1/fal.egg-info}/PKG-INFO +1 -1
  3. {fal-1.7.7 → fal-1.8.1}/src/fal/_fal_version.py +2 -2
  4. {fal-1.7.7 → fal-1.8.1}/src/fal/api.py +2 -0
  5. fal-1.8.1/src/fal/container.py +49 -0
  6. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/utils/download_utils.py +5 -1
  7. fal-1.7.7/src/fal/container.py +0 -19
  8. {fal-1.7.7 → fal-1.8.1}/.gitignore +0 -0
  9. {fal-1.7.7 → fal-1.8.1}/Makefile +0 -0
  10. {fal-1.7.7 → fal-1.8.1}/README.md +0 -0
  11. {fal-1.7.7 → fal-1.8.1}/docs/conf.py +0 -0
  12. {fal-1.7.7 → fal-1.8.1}/docs/index.rst +0 -0
  13. {fal-1.7.7 → fal-1.8.1}/fal.egg-info/SOURCES.txt +0 -0
  14. {fal-1.7.7 → fal-1.8.1}/fal.egg-info/dependency_links.txt +0 -0
  15. {fal-1.7.7 → fal-1.8.1}/fal.egg-info/entry_points.txt +0 -0
  16. {fal-1.7.7 → fal-1.8.1}/fal.egg-info/requires.txt +0 -0
  17. {fal-1.7.7 → fal-1.8.1}/fal.egg-info/top_level.txt +0 -0
  18. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/README.md +0 -0
  19. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  20. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  21. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  22. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  23. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  24. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  25. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  26. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  27. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  28. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  29. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  30. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  31. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  32. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  33. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  34. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  35. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  36. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  37. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  38. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  39. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  40. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  41. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  42. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  43. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  44. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  45. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  46. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  47. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  48. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  49. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  50. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  51. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  52. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  53. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  54. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  55. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  56. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  57. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  58. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  59. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  60. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  61. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  62. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  63. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  64. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  65. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  66. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  67. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  68. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  69. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  70. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  71. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  72. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  73. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  74. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  75. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  76. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  77. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  78. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  79. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  80. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  81. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  82. {fal-1.7.7 → fal-1.8.1}/openapi-fal-rest/pyproject.toml +0 -0
  83. {fal-1.7.7 → fal-1.8.1}/openapi_rest.config.yaml +0 -0
  84. {fal-1.7.7 → fal-1.8.1}/pyproject.toml +0 -0
  85. {fal-1.7.7 → fal-1.8.1}/setup.cfg +0 -0
  86. {fal-1.7.7 → fal-1.8.1}/src/fal/__init__.py +0 -0
  87. {fal-1.7.7 → fal-1.8.1}/src/fal/__main__.py +0 -0
  88. {fal-1.7.7 → fal-1.8.1}/src/fal/_serialization.py +0 -0
  89. {fal-1.7.7 → fal-1.8.1}/src/fal/_version.py +0 -0
  90. {fal-1.7.7 → fal-1.8.1}/src/fal/app.py +0 -0
  91. {fal-1.7.7 → fal-1.8.1}/src/fal/apps.py +0 -0
  92. {fal-1.7.7 → fal-1.8.1}/src/fal/auth/__init__.py +0 -0
  93. {fal-1.7.7 → fal-1.8.1}/src/fal/auth/auth0.py +0 -0
  94. {fal-1.7.7 → fal-1.8.1}/src/fal/auth/local.py +0 -0
  95. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/__init__.py +0 -0
  96. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/_utils.py +0 -0
  97. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/apps.py +0 -0
  98. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/auth.py +0 -0
  99. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/create.py +0 -0
  100. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/debug.py +0 -0
  101. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/deploy.py +0 -0
  102. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/doctor.py +0 -0
  103. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/keys.py +0 -0
  104. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/main.py +0 -0
  105. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/parser.py +0 -0
  106. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/run.py +0 -0
  107. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/runners.py +0 -0
  108. {fal-1.7.7 → fal-1.8.1}/src/fal/cli/secrets.py +0 -0
  109. {fal-1.7.7 → fal-1.8.1}/src/fal/config.py +0 -0
  110. {fal-1.7.7 → fal-1.8.1}/src/fal/console/__init__.py +0 -0
  111. {fal-1.7.7 → fal-1.8.1}/src/fal/console/icons.py +0 -0
  112. {fal-1.7.7 → fal-1.8.1}/src/fal/console/ux.py +0 -0
  113. {fal-1.7.7 → fal-1.8.1}/src/fal/exceptions/__init__.py +0 -0
  114. {fal-1.7.7 → fal-1.8.1}/src/fal/exceptions/_base.py +0 -0
  115. {fal-1.7.7 → fal-1.8.1}/src/fal/exceptions/_cuda.py +0 -0
  116. {fal-1.7.7 → fal-1.8.1}/src/fal/exceptions/auth.py +0 -0
  117. {fal-1.7.7 → fal-1.8.1}/src/fal/files.py +0 -0
  118. {fal-1.7.7 → fal-1.8.1}/src/fal/flags.py +0 -0
  119. {fal-1.7.7 → fal-1.8.1}/src/fal/logging/__init__.py +0 -0
  120. {fal-1.7.7 → fal-1.8.1}/src/fal/logging/isolate.py +0 -0
  121. {fal-1.7.7 → fal-1.8.1}/src/fal/logging/style.py +0 -0
  122. {fal-1.7.7 → fal-1.8.1}/src/fal/logging/trace.py +0 -0
  123. {fal-1.7.7 → fal-1.8.1}/src/fal/logging/user.py +0 -0
  124. {fal-1.7.7 → fal-1.8.1}/src/fal/py.typed +0 -0
  125. {fal-1.7.7 → fal-1.8.1}/src/fal/rest_client.py +0 -0
  126. {fal-1.7.7 → fal-1.8.1}/src/fal/sdk.py +0 -0
  127. {fal-1.7.7 → fal-1.8.1}/src/fal/sync.py +0 -0
  128. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/__init__.py +0 -0
  129. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/exceptions.py +0 -0
  130. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/__init__.py +0 -0
  131. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/file.py +0 -0
  132. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/providers/fal.py +0 -0
  133. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/providers/gcp.py +0 -0
  134. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/providers/r2.py +0 -0
  135. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/providers/s3.py +0 -0
  136. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/file/types.py +0 -0
  137. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/__init__.py +0 -0
  138. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/image.py +0 -0
  139. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  140. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  141. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  142. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  143. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  144. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/image/safety_checker.py +0 -0
  145. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/optimize.py +0 -0
  146. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/types.py +0 -0
  147. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/utils/__init__.py +0 -0
  148. {fal-1.7.7 → fal-1.8.1}/src/fal/toolkit/utils/retry.py +0 -0
  149. {fal-1.7.7 → fal-1.8.1}/src/fal/utils.py +0 -0
  150. {fal-1.7.7 → fal-1.8.1}/src/fal/workflows.py +0 -0
  151. {fal-1.7.7 → fal-1.8.1}/tests/__init__.py +0 -0
  152. {fal-1.7.7 → fal-1.8.1}/tests/assets/cat.png +0 -0
  153. {fal-1.7.7 → fal-1.8.1}/tests/cli/__init__.py +0 -0
  154. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_apps.py +0 -0
  155. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_auth.py +0 -0
  156. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_deploy.py +0 -0
  157. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_keys.py +0 -0
  158. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_run.py +0 -0
  159. {fal-1.7.7 → fal-1.8.1}/tests/cli/test_secrets.py +0 -0
  160. {fal-1.7.7 → fal-1.8.1}/tests/conftest.py +0 -0
  161. {fal-1.7.7 → fal-1.8.1}/tests/integration_test.py +0 -0
  162. {fal-1.7.7 → fal-1.8.1}/tests/mainify_package/__init__.py +0 -0
  163. {fal-1.7.7 → fal-1.8.1}/tests/mainify_package/impl.py +0 -0
  164. {fal-1.7.7 → fal-1.8.1}/tests/mainify_package/utils.py +0 -0
  165. {fal-1.7.7 → fal-1.8.1}/tests/mainify_target.py +0 -0
  166. {fal-1.7.7 → fal-1.8.1}/tests/test_apps.py +0 -0
  167. {fal-1.7.7 → fal-1.8.1}/tests/test_stability.py +0 -0
  168. {fal-1.7.7 → fal-1.8.1}/tests/toolkit/file_test.py +0 -0
  169. {fal-1.7.7 → fal-1.8.1}/tests/toolkit/image_test.py +0 -0
  170. {fal-1.7.7 → fal-1.8.1}/tests/toolkit/test_types.py +0 -0
  171. {fal-1.7.7 → fal-1.8.1}/tests/toolkit/utils/retry.py +0 -0
  172. {fal-1.7.7 → fal-1.8.1}/tools/demo_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fal
3
- Version: 1.7.7
3
+ Version: 1.8.1
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <support@fal.ai>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fal
3
- Version: 1.7.7
3
+ Version: 1.8.1
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <support@fal.ai>
6
6
  Requires-Python: >=3.8
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.7.7'
16
- __version_tuple__ = version_tuple = (1, 7, 7)
15
+ __version__ = version = '1.8.1'
16
+ __version_tuple__ = version_tuple = (1, 8, 1)
@@ -142,6 +142,8 @@ class Host(Generic[ArgsT, ReturnT]):
142
142
  # Conda environment definition should be parsed before sending to serverless
143
143
  with open(value) as f:
144
144
  return "env_dict", yaml.safe_load(f)
145
+ elif key == "image" and isinstance(value, ContainerImage):
146
+ return "image", value.to_dict()
145
147
  else:
146
148
  return key, value
147
149
 
@@ -0,0 +1,49 @@
1
+ from dataclasses import dataclass, field
2
+ from typing import Dict, Literal
3
+
4
+ Builder = Literal["depot", "service", "worker"]
5
+ BUILDERS = {"depot", "service", "worker"}
6
+ DEFAULT_BUILDER: Builder = "depot"
7
+
8
+
9
+ @dataclass
10
+ class ContainerImage:
11
+ """ContainerImage represents a Docker image that can be built
12
+ from a Dockerfile.
13
+ """
14
+
15
+ dockerfile_str: str
16
+ build_args: Dict[str, str] = field(default_factory=dict)
17
+ registries: Dict[str, Dict[str, str]] = field(default_factory=dict)
18
+ builder: Builder = field(default=DEFAULT_BUILDER)
19
+
20
+ def __post_init__(self) -> None:
21
+ if self.registries:
22
+ for registry in self.registries.values():
23
+ keys = registry.keys()
24
+ if "username" not in keys or "password" not in keys:
25
+ raise ValueError(
26
+ "Username and password are required for each registry"
27
+ )
28
+
29
+ if self.builder not in BUILDERS:
30
+ raise ValueError(
31
+ f"Invalid builder: {self.builder}, must be one of {BUILDERS}"
32
+ )
33
+
34
+ @classmethod
35
+ def from_dockerfile_str(cls, text: str, **kwargs) -> "ContainerImage":
36
+ return cls(dockerfile_str=text, **kwargs)
37
+
38
+ @classmethod
39
+ def from_dockerfile(cls, path: str, **kwargs) -> "ContainerImage":
40
+ with open(path) as fobj:
41
+ return cls.from_dockerfile_str(fobj.read(), **kwargs)
42
+
43
+ def to_dict(self) -> dict:
44
+ return {
45
+ "dockerfile_str": self.dockerfile_str,
46
+ "build_args": self.build_args,
47
+ "registries": self.registries,
48
+ "builder": self.builder,
49
+ }
@@ -416,7 +416,11 @@ def clone_repository(
416
416
  f"Forcing re-download."
417
417
  )
418
418
  print(f"Removing the existing repository: {local_repo_path} ")
419
- shutil.rmtree(local_repo_path)
419
+ with TemporaryDirectory(
420
+ dir=target_dir, suffix=f"{local_repo_path.name}.tmp.old"
421
+ ) as tmp_dir:
422
+ os.rename(local_repo_path, tmp_dir)
423
+ shutil.rmtree(tmp_dir)
420
424
 
421
425
  # NOTE: using the target_dir to be able to avoid potential copies across temp fs
422
426
  # and target fs, and also to be able to atomically rename repo_name dir into place
@@ -1,19 +0,0 @@
1
- class ContainerImage:
2
- """ContainerImage represents a Docker image that can be built
3
- from a Dockerfile.
4
- """
5
-
6
- _known_keys = {"dockerfile_str", "build_args", "registries", "builder"}
7
-
8
- @classmethod
9
- def from_dockerfile_str(cls, text: str, **kwargs):
10
- # Check for unknown keys and return them as a dict.
11
- return dict(
12
- dockerfile_str=text,
13
- **{k: v for k, v in kwargs.items() if k in cls._known_keys},
14
- )
15
-
16
- @classmethod
17
- def from_dockerfile(cls, path: str, **kwargs):
18
- with open(path) as fobj:
19
- return cls.from_dockerfile_str(fobj.read(), **kwargs)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes