pybiolib 1.2.814__tar.gz → 1.2.841__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 (148) hide show
  1. {pybiolib-1.2.814 → pybiolib-1.2.841}/PKG-INFO +1 -1
  2. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/add_copilot_prompts.py +7 -5
  3. pybiolib-1.2.841/biolib/_internal/templates/__init__.py +1 -0
  4. pybiolib-1.2.841/biolib/_internal/templates/init_template/.biolib/config.yml +18 -0
  5. pybiolib-1.2.841/biolib/_internal/templates/init_template/.github/workflows/biolib.yml +13 -0
  6. pybiolib-1.2.841/biolib/_internal/templates/init_template/Dockerfile +10 -0
  7. pybiolib-1.2.841/biolib/_internal/templates/init_template/requirements.txt +1 -0
  8. pybiolib-1.2.841/biolib/_internal/templates/init_template/run.py +21 -0
  9. pybiolib-1.2.841/biolib/_internal/templates/init_template/run.sh +3 -0
  10. pybiolib-1.2.841/biolib/_internal/templates/templates.py +5 -0
  11. pybiolib-1.2.841/biolib/cli/init.py +89 -0
  12. {pybiolib-1.2.814 → pybiolib-1.2.841}/pyproject.toml +1 -1
  13. pybiolib-1.2.814/biolib/cli/init.py +0 -35
  14. pybiolib-1.2.814/biolib/templates/__init__.py +0 -1
  15. pybiolib-1.2.814/biolib/templates/example_app.py +0 -30
  16. {pybiolib-1.2.814 → pybiolib-1.2.841}/LICENSE +0 -0
  17. {pybiolib-1.2.814 → pybiolib-1.2.841}/PYPI_README.md +0 -0
  18. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/__init__.py +0 -0
  19. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_data_record/data_record.py +0 -0
  20. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/__init__.py +0 -0
  21. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/data_record/__init__.py +0 -0
  22. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/data_record/data_record.py +0 -0
  23. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/data_record/push_data.py +0 -0
  24. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  25. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/file_utils.py +0 -0
  26. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/fuse_mount/__init__.py +0 -0
  27. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  28. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/http_client.py +0 -0
  29. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/lfs/__init__.py +0 -0
  30. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/lfs/cache.py +0 -0
  31. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/libs/__init__.py +0 -0
  32. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  33. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/instructions/general-app-knowledge.instructions.md +0 -0
  34. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/instructions/style-general.instructions.md +0 -0
  35. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/instructions/style-python.instructions.md +0 -0
  36. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/instructions/style-react-ts.instructions.md +0 -0
  37. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/prompts/biolib_app_inputs.prompt.md +0 -0
  38. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/.github/prompts/biolib_run_apps.prompt.md +0 -0
  39. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/llm_instructions/__init__.py +0 -0
  40. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/push_application.py +0 -0
  41. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/runtime.py +0 -0
  42. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/tree_utils.py +0 -0
  43. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/__init__.py +0 -0
  44. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/app.py +0 -0
  45. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/data_record.py +0 -0
  46. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/experiment.py +0 -0
  47. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/file_node.py +0 -0
  48. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/push.py +0 -0
  49. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/resource.py +0 -0
  50. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/resource_permission.py +0 -0
  51. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/resource_version.py +0 -0
  52. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/result.py +0 -0
  53. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/types/typing.py +0 -0
  54. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/utils/__init__.py +0 -0
  55. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_internal/utils/multinode.py +0 -0
  56. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_runtime/runtime.py +0 -0
  57. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/_session/session.py +0 -0
  58. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/api/__init__.py +0 -0
  59. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/api/client.py +0 -0
  60. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/app/__init__.py +0 -0
  61. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/app/app.py +0 -0
  62. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/app/search_apps.py +0 -0
  63. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/__init__.py +0 -0
  64. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/api_client.py +0 -0
  65. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/app_types.py +0 -0
  66. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/auth.py +0 -0
  67. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  68. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  69. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/common_types.py +0 -0
  70. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/job_types.py +0 -0
  71. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/lfs_types.py +0 -0
  72. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_api_client/user_state.py +0 -0
  73. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/__init__.py +0 -0
  74. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  75. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/file_in_container.py +0 -0
  76. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/module_input.py +0 -0
  77. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  78. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  79. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  80. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/saved_job.py +0 -0
  81. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  82. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/system_exception.py +0 -0
  83. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/system_status_update.py +0 -0
  84. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_binary_format/utils.py +0 -0
  85. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_docker_client/__init__.py +0 -0
  86. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_download_container.py +0 -0
  87. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_errors.py +0 -0
  88. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/biolib_logging.py +0 -0
  89. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/__init__.py +0 -0
  90. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/auth.py +0 -0
  91. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/data_record.py +0 -0
  92. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/download_container.py +0 -0
  93. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/lfs.py +0 -0
  94. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/push.py +0 -0
  95. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/run.py +0 -0
  96. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/runtime.py +0 -0
  97. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/sdk.py +0 -0
  98. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/cli/start.py +0 -0
  99. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/.gitignore +0 -0
  100. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/__init__.py +0 -0
  101. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  102. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  103. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/__init__.py +0 -0
  104. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/cache_state.py +0 -0
  105. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/cache_types.py +0 -0
  106. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  107. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  108. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  109. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  110. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  111. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/executors/types.py +0 -0
  112. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  113. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  114. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/job_storage.py +0 -0
  115. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/job_worker.py +0 -0
  116. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  117. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/mappings.py +0 -0
  118. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  119. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/job_worker/utils.py +0 -0
  120. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/remote_host_proxy.py +0 -0
  121. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/socker_listener_thread.py +0 -0
  122. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/socket_sender_thread.py +0 -0
  123. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/utils.py +0 -0
  124. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/__init__.py +0 -0
  125. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  126. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/webserver.py +0 -0
  127. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/webserver_types.py +0 -0
  128. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  129. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/compute_node/webserver/worker_thread.py +0 -0
  130. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/experiments/__init__.py +0 -0
  131. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/experiments/experiment.py +0 -0
  132. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/jobs/__init__.py +0 -0
  133. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/jobs/job.py +0 -0
  134. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/jobs/job_result.py +0 -0
  135. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/jobs/types.py +0 -0
  136. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/py.typed +0 -0
  137. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/runtime/__init__.py +0 -0
  138. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/sdk/__init__.py +0 -0
  139. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/tables.py +0 -0
  140. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/typing_utils.py +0 -0
  141. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/user/__init__.py +0 -0
  142. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/user/sign_in.py +0 -0
  143. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/__init__.py +0 -0
  144. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/app_uri.py +0 -0
  145. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/cache_state.py +0 -0
  146. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/multipart_uploader.py +0 -0
  147. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/seq_util.py +0 -0
  148. {pybiolib-1.2.814 → pybiolib-1.2.841}/biolib/utils/zip/remote_zip.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pybiolib
3
- Version: 1.2.814
3
+ Version: 1.2.841
4
4
  Summary: BioLib Python Client
5
5
  License: MIT
6
6
  Keywords: biolib
@@ -5,7 +5,7 @@ import sys
5
5
  from biolib._internal import llm_instructions
6
6
 
7
7
 
8
- def add_copilot_prompts(force: bool, silent: bool = False) -> None:
8
+ def add_copilot_prompts(force: bool, style: bool = True, silent: bool = False) -> None:
9
9
  current_working_directory = os.getcwd()
10
10
  config_file_path = f'{current_working_directory}/.biolib/config.yml'
11
11
  if not os.path.exists(config_file_path):
@@ -19,12 +19,14 @@ Error: Current directory has not been initialized as a BioLib application.
19
19
 
20
20
  conflicting_files = []
21
21
 
22
- for root, _, files in os.walk(source_path):
22
+ for root, _, filenames in os.walk(source_path):
23
23
  relative_dir = os.path.relpath(root, source_path)
24
24
  destination_dir = os.path.join(destination_path, relative_dir)
25
- for file in files:
26
- source_file = os.path.join(root, file)
27
- destination_file = os.path.join(destination_dir, file)
25
+ for filename in filenames:
26
+ if 'style' in filename and not style:
27
+ continue
28
+ source_file = os.path.join(root, filename)
29
+ destination_file = os.path.join(destination_dir, filename)
28
30
  if os.path.exists(destination_file) and not force:
29
31
  with open(source_file, 'rb') as fsrc, open(destination_file, 'rb') as fdest:
30
32
  if fsrc.read() != fdest.read():
@@ -0,0 +1 @@
1
+ from . import templates
@@ -0,0 +1,18 @@
1
+ biolib_version: 2
2
+
3
+ modules:
4
+ main:
5
+ image: 'local-docker://BIOLIB_REPLACE_DOCKER_TAG:latest'
6
+ command: "bash run.sh"
7
+ working_directory: /home/biolib/
8
+ input_files:
9
+ - COPY / /home/biolib/
10
+ output_files:
11
+ - COPY /home/biolib/output/ /
12
+
13
+ arguments:
14
+ -
15
+ key: --input
16
+ description: 'Input protein sequences'
17
+ type: sequence
18
+ required: true
@@ -0,0 +1,13 @@
1
+ name: BioLib Build & Push
2
+ on: push
3
+ jobs:
4
+ build-and-push:
5
+ runs-on: biolib-github-runner
6
+ steps:
7
+ - uses: actions/checkout@v4
8
+ - name: Build
9
+ run: docker build -t BIOLIB_REPLACE_DOCKER_TAG:latest .
10
+ - name: Push
11
+ run: biolib push $([ "$GITHUB_REF_NAME" != "main" ] && echo -n "--dev") BIOLIB_REPLACE_APP_URI
12
+ env:
13
+ BIOLIB_TOKEN: ${{ secrets.BIOLIB_TOKEN }}
@@ -0,0 +1,10 @@
1
+ FROM python:3.13.3-slim
2
+ WORKDIR /home/biolib/
3
+
4
+ COPY requirements.txt .
5
+ RUN pip install --no-cache-dir -r requirements.txt
6
+
7
+ COPY run.sh .
8
+ COPY run.py .
9
+
10
+ RUN mkdir output
@@ -0,0 +1 @@
1
+ pybiolib==BIOLIB_REPLACE_PYBIOLIB_VERSION
@@ -0,0 +1,21 @@
1
+ import argparse
2
+
3
+ from biolib.sdk import Runtime
4
+
5
+
6
+ def parse_args():
7
+ parser = argparse.ArgumentParser(description='Process some biological sequences.')
8
+ parser.add_argument('--input', type=str, required=True, help='Input protein sequences')
9
+ return parser.parse_args()
10
+
11
+
12
+ def main(args):
13
+ sequence = args.input
14
+ # Add your processing logic here
15
+ print(f'Received sequence: {sequence}')
16
+
17
+
18
+ if __name__ == '__main__':
19
+ args = parse_args()
20
+ Runtime.set_result_name_prefix_from_fasta(args.input)
21
+ main(args)
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+ set -e
3
+ python3 run.py "$@"
@@ -0,0 +1,5 @@
1
+ import os
2
+
3
+
4
+ def init_template():
5
+ return os.path.join(os.path.dirname(__file__), 'init_template')
@@ -0,0 +1,89 @@
1
+ import os
2
+ import shutil
3
+ import sys
4
+
5
+ import click
6
+
7
+ from biolib import utils # Import like this to let BASE_URL_IS_PUBLIC_BIOLIB be set correctly
8
+ from biolib._internal.add_copilot_prompts import add_copilot_prompts
9
+ from biolib._internal.templates import templates
10
+ from biolib.utils import BIOLIB_PACKAGE_VERSION
11
+
12
+
13
+ @click.command(help='Initialize a BioLib project', hidden=True)
14
+ def init() -> None:
15
+ cwd = os.getcwd()
16
+
17
+ app_uri = input('What URI do you want to create the application under? (leave blank to skip): ')
18
+ app_name = app_uri.split('/')[-1] if app_uri else None
19
+ if not app_uri:
20
+ print(
21
+ 'Remember to set the app URI in the .biolib/config.yml file later, '
22
+ 'and docker image name in the .biolib/config.yml and .github/workflows/biolib.yml files.'
23
+ )
24
+ copilot_input = input('Do you want to include Copilot style prompts? [y/N]: ')
25
+ include_copilot_style = copilot_input.lower() == 'y'
26
+
27
+ template_dir = templates.init_template()
28
+ conflicting_files = []
29
+
30
+ try:
31
+ # First pass: check for conflicts
32
+ for root, _, filenames in os.walk(template_dir):
33
+ relative_dir = os.path.relpath(root, template_dir)
34
+ destination_dir = cwd if relative_dir == '.' else os.path.join(cwd, relative_dir)
35
+ for filename in filenames:
36
+ source_file = os.path.join(root, filename)
37
+ destination_file = os.path.join(destination_dir, filename)
38
+ if os.path.exists(destination_file):
39
+ with open(source_file, 'rb') as fsrc, open(destination_file, 'rb') as fdest:
40
+ if fsrc.read() != fdest.read():
41
+ conflicting_files.append(os.path.relpath(destination_file, cwd))
42
+ if conflicting_files:
43
+ print('The following files were not overwritten. Use --force to override them:', file=sys.stderr)
44
+ for conflicting_file in conflicting_files:
45
+ print(f' {conflicting_file}', file=sys.stderr)
46
+ exit(1)
47
+
48
+ replace_app_uri = app_uri if app_uri else 'PUT_APP_URI_HERE'
49
+
50
+ # Second pass: copy files (only if no conflicts)
51
+ for root, _, filenames in os.walk(template_dir):
52
+ relative_dir = os.path.relpath(root, template_dir)
53
+ destination_dir = os.path.join(cwd, relative_dir)
54
+ os.makedirs(destination_dir, exist_ok=True)
55
+
56
+ for filename in filenames:
57
+ if utils.BASE_URL_IS_PUBLIC_BIOLIB and filename == 'biolib.yml':
58
+ continue
59
+
60
+ source_file = os.path.join(root, filename)
61
+ destination_file = os.path.join(destination_dir, filename)
62
+
63
+ if not os.path.exists(destination_file):
64
+ try:
65
+ with open(source_file) as f:
66
+ content = f.read()
67
+
68
+ new_content = content.replace('BIOLIB_REPLACE_PYBIOLIB_VERSION', BIOLIB_PACKAGE_VERSION)
69
+ new_content = new_content.replace('BIOLIB_REPLACE_APP_URI', replace_app_uri)
70
+ new_content = new_content.replace(
71
+ 'BIOLIB_REPLACE_DOCKER_TAG',
72
+ app_name if app_name else 'PUT_DOCKER_TAG_HERE',
73
+ )
74
+
75
+ with open(destination_file, 'w') as f:
76
+ f.write(new_content)
77
+ except UnicodeDecodeError:
78
+ shutil.copy2(source_file, destination_file)
79
+
80
+ readme_path = os.path.join(cwd, 'README.md')
81
+ if not os.path.exists(readme_path) and app_name:
82
+ with open(readme_path, 'w') as readme_file:
83
+ readme_file.write(f'# {app_name}\n')
84
+
85
+ add_copilot_prompts(force=False, style=include_copilot_style, silent=True)
86
+
87
+ except KeyboardInterrupt:
88
+ print('\nInit command cancelled.', file=sys.stderr)
89
+ exit(1)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.2.814"
3
+ version = "1.2.841"
4
4
  description = "BioLib Python Client"
5
5
  readme = "PYPI_README.md"
6
6
  license = "MIT"
@@ -1,35 +0,0 @@
1
- import os
2
- import sys
3
-
4
- import click
5
-
6
- from biolib import templates
7
- from biolib._internal.add_copilot_prompts import add_copilot_prompts
8
-
9
-
10
- @click.command(help='Initialize a project with a .biolib/config.yml file', hidden=True)
11
- def init() -> None:
12
- cwd = os.getcwd()
13
- config_file_path = f'{cwd}/.biolib/config.yml'
14
- readme_path = f'{cwd}/README.md'
15
-
16
- if os.path.exists(config_file_path):
17
- print(f'The file "{config_file_path}" already exists', file=sys.stderr)
18
- exit(1)
19
-
20
- try:
21
- project_name = input('Enter a name for your project: ')
22
-
23
- os.makedirs(f'{cwd}/.biolib', exist_ok=True)
24
- with open(config_file_path, 'w') as config_file:
25
- config_file.write(templates.example_app.CONFIG_YML)
26
-
27
- if not os.path.exists(readme_path):
28
- with open(readme_path, 'w') as readme_file:
29
- readme_file.write(f'# {project_name}\n')
30
-
31
- add_copilot_prompts(force=False, silent=True)
32
-
33
- except KeyboardInterrupt:
34
- print('\nInit command cancelled.', file=sys.stderr)
35
- exit(1)
@@ -1 +0,0 @@
1
- import biolib.templates.example_app
@@ -1,30 +0,0 @@
1
- CONFIG_YML = '''\
2
- biolib_version: 2
3
-
4
- modules:
5
- main:
6
- image: 'dockerhub://python:3.9-slim'
7
- command: |
8
- python3 -c "
9
- import argparse
10
- parser = argparse.ArgumentParser()
11
- parser.add_argument('--name')
12
- args = parser.parse_args()
13
- print(f'Hello there, {args.name}!')
14
- "
15
- working_directory: /home/biolib/
16
- input_files:
17
- - COPY / /home/biolib/
18
- output_files:
19
- - COPY /home/biolib/ /
20
-
21
- arguments:
22
- -
23
- default_value: Charles Darwin
24
- description: What is your name?
25
- key: '--name'
26
- key_value_separator: ' '
27
- required: true
28
- type: text
29
-
30
- '''
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes