bluer-objects 6.175.1__py3-none-any.whl → 6.186.1__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 bluer-objects might be problematic. Click here for more details.

Files changed (31) hide show
  1. bluer_objects/.abcli/alias.sh +2 -0
  2. bluer_objects/.abcli/tests/help.sh +3 -0
  3. bluer_objects/.abcli/tests/storage_public_upload.sh +18 -0
  4. bluer_objects/.abcli/tests/{storage.sh → storage_upload_download.sh} +2 -2
  5. bluer_objects/.abcli/tests/url_is_accessible.sh +17 -0
  6. bluer_objects/.abcli/upload.sh +4 -2
  7. bluer_objects/.abcli/url/is_accessible.sh +13 -0
  8. bluer_objects/.abcli/url.sh +15 -0
  9. bluer_objects/__init__.py +1 -1
  10. bluer_objects/config.env +1 -0
  11. bluer_objects/env.py +1 -0
  12. bluer_objects/help/functions.py +2 -0
  13. bluer_objects/help/upload.py +6 -1
  14. bluer_objects/help/url.py +23 -0
  15. bluer_objects/storage/WebDAV.py +6 -0
  16. bluer_objects/storage/WebDAVrequest.py +7 -0
  17. bluer_objects/storage/WebDAVzip.py +6 -0
  18. bluer_objects/storage/__init__.py +2 -0
  19. bluer_objects/storage/__main__.py +7 -0
  20. bluer_objects/storage/base.py +3 -1
  21. bluer_objects/storage/s3.py +20 -2
  22. bluer_objects/tests/test_env.py +1 -0
  23. bluer_objects/tests/test_url_is_accessible.py +11 -0
  24. bluer_objects/url/__init__.py +1 -0
  25. bluer_objects/url/__main__.py +31 -0
  26. bluer_objects/url/functions.py +11 -0
  27. {bluer_objects-6.175.1.dist-info → bluer_objects-6.186.1.dist-info}/METADATA +2 -2
  28. {bluer_objects-6.175.1.dist-info → bluer_objects-6.186.1.dist-info}/RECORD +31 -22
  29. {bluer_objects-6.175.1.dist-info → bluer_objects-6.186.1.dist-info}/WHEEL +0 -0
  30. {bluer_objects-6.175.1.dist-info → bluer_objects-6.186.1.dist-info}/licenses/LICENSE +0 -0
  31. {bluer_objects-6.175.1.dist-info → bluer_objects-6.186.1.dist-info}/top_level.txt +0 -0
@@ -38,3 +38,5 @@ alias @select=bluer_ai_select
38
38
  alias @storage=bluer_ai_storage
39
39
 
40
40
  alias @upload=bluer_objects_upload
41
+
42
+ alias @url=bluer_objects_url
@@ -77,6 +77,9 @@ function test_bluer_objects_help() {
77
77
  \
78
78
  "@upload" \
79
79
  \
80
+ "@url" \
81
+ "@url is_accessible" \
82
+ \
80
83
  "@wait" \
81
84
  \
82
85
  "bluer_objects"; do
@@ -0,0 +1,18 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_storage_public_upload() {
4
+ local options=$1
5
+
6
+ local object_name=test_bluer_objects_storage_public_upload-$(bluer_ai_string_timestamp_short)
7
+ local object_path=$ABCLI_OBJECT_ROOT/$object_name
8
+ mkdir -pv $object_path
9
+
10
+ bluer_objects_create_test_asset \
11
+ $object_name \
12
+ --depth 1
13
+ [[ $? -ne 0 ]] && return 1
14
+
15
+ bluer_objects_upload \
16
+ public \
17
+ $object_name
18
+ }
@@ -1,9 +1,9 @@
1
1
  #! /usr/bin/env bash
2
2
 
3
- function test_bluer_objects_storage() {
3
+ function test_bluer_objects_storage_upload_download() {
4
4
  local options=$1
5
5
 
6
- local object_name=test_bluer_objects_storage-$(bluer_ai_string_timestamp_short)
6
+ local object_name=test_bluer_objects_storage_upload_download-$(bluer_ai_string_timestamp_short)
7
7
  local object_path=$ABCLI_OBJECT_ROOT/$object_name
8
8
  mkdir -pv $object_path
9
9
 
@@ -0,0 +1,17 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_url_is_accessible() {
4
+ local output=$(bluer_objects_url_is_accessible void)
5
+ [[ "$output" -ne 0 ]] &&
6
+ return 1
7
+
8
+ local url="https://iribnews.ir"
9
+ [[ "$abcli_is_github_workflow" == true ]] &&
10
+ url="https://cnn.com"
11
+
12
+ output=$(bluer_objects_url_is_accessible $url)
13
+ [[ "$output" -ne 1 ]] &&
14
+ return 1
15
+
16
+ return 0
17
+ }
@@ -3,6 +3,7 @@
3
3
  function bluer_objects_upload() {
4
4
  local options=$1
5
5
  local filename=$(bluer_ai_option "$options" filename)
6
+ local public=$(bluer_ai_option_int "$options" public 0)
6
7
 
7
8
  local object_name=$(bluer_ai_clarify_object $2 .)
8
9
  local object_path=$ABCLI_OBJECT_ROOT/$object_name
@@ -12,10 +13,11 @@ function bluer_objects_upload() {
12
13
  python3 -m bluer_objects.storage \
13
14
  upload \
14
15
  --object_name $object_name \
15
- --filename "$filename"
16
+ --filename "$filename" \
17
+ --public $public
16
18
  [[ $? -ne 0 ]] && return 1
17
19
 
18
- if [[ -z "$filename" ]]; then
20
+ if [[ -z "$filename" ]] && [[ "$public" == 0 ]]; then
19
21
  bluer_objects_mlflow_log_run $object_name
20
22
  fi
21
23
  }
@@ -0,0 +1,13 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_url_is_accessible() {
4
+ local url=$1
5
+ if [[ -z "$url" ]]; then
6
+ bluer_ai_log_error "url not found."
7
+ return 1
8
+ fi
9
+
10
+ python3 -m bluer_objects.url \
11
+ is_accessible \
12
+ --url $url
13
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_url() {
4
+ local task=$1
5
+
6
+ local function_name=bluer_objects_url_$task
7
+ if [[ $(type -t $function_name) == "function" ]]; then
8
+ $function_name "${@:2}"
9
+ return
10
+ fi
11
+
12
+ python3 -m bluer_objects.url "$@"
13
+ }
14
+
15
+ bluer_ai_source_caller_suffix_path /url
bluer_objects/__init__.py CHANGED
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} Object management in Bash."
6
6
 
7
- VERSION = "6.175.1"
7
+ VERSION = "6.186.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
bluer_objects/config.env CHANGED
@@ -4,5 +4,6 @@ MLFLOW_LOCK_WAIT_FOR_CLEARANCE=3
4
4
  MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY=1
5
5
 
6
6
  S3_STORAGE_BUCKET=kamangir
7
+ S3_PUBLIC_STORAGE_BUCKET=kamangir-public
7
8
 
8
9
  BLUER_OBJECTS_STORAGE_INTERFACE=s3
bluer_objects/env.py CHANGED
@@ -36,6 +36,7 @@ DUMMY_TEXT = "This is some dummy text. This is some dummy text. This is some dum
36
36
  ABCLI_MLFLOW_EXPERIMENT_PREFIX = get_env("ABCLI_MLFLOW_EXPERIMENT_PREFIX")
37
37
 
38
38
  S3_STORAGE_BUCKET = get_env("S3_STORAGE_BUCKET")
39
+ S3_PUBLIC_STORAGE_BUCKET = get_env("S3_PUBLIC_STORAGE_BUCKET")
39
40
 
40
41
  S3_STORAGE_ENDPOINT_URL = get_env("S3_STORAGE_ENDPOINT_URL")
41
42
  S3_STORAGE_AWS_ACCESS_KEY_ID = get_env("S3_STORAGE_AWS_ACCESS_KEY_ID")
@@ -10,6 +10,7 @@ from bluer_objects.help.ls import help_ls
10
10
  from bluer_objects.help.metadata import help_functions as help_metadata
11
11
  from bluer_objects.help.mlflow import help_functions as help_mlflow
12
12
  from bluer_objects.help.upload import help_upload
13
+ from bluer_objects.help.url import help_functions as help_url
13
14
 
14
15
  help_functions = generic_help_functions(plugin_name=ALIAS)
15
16
 
@@ -24,5 +25,6 @@ help_functions.update(
24
25
  "metadata": help_metadata,
25
26
  "mlflow": help_mlflow,
26
27
  "upload": help_upload,
28
+ "url": help_url,
27
29
  }
28
30
  )
@@ -7,7 +7,12 @@ def help_upload(
7
7
  tokens: List[str],
8
8
  mono: bool,
9
9
  ) -> str:
10
- options = "filename=<filename>"
10
+ options = "".join(
11
+ [
12
+ "filename=<filename>",
13
+ xtra(",public", mono=mono),
14
+ ]
15
+ )
11
16
 
12
17
  return show_usage(
13
18
  [
@@ -0,0 +1,23 @@
1
+ from typing import List
2
+
3
+ from bluer_options.terminal import show_usage
4
+
5
+
6
+ def help_is_accessible(
7
+ tokens: List[str],
8
+ mono: bool,
9
+ ) -> str:
10
+ return show_usage(
11
+ [
12
+ "@url",
13
+ "is_accessible",
14
+ "<url>",
15
+ ],
16
+ "is <url> accessible?",
17
+ mono=mono,
18
+ )
19
+
20
+
21
+ help_functions = {
22
+ "is_accessible": help_is_accessible,
23
+ }
@@ -86,8 +86,13 @@ class WebDAVInterface(StorageInterface):
86
86
  self,
87
87
  object_name: str,
88
88
  filename: str = "",
89
+ public: bool = False,
89
90
  log: bool = True,
90
91
  ) -> bool:
92
+ if public:
93
+ logger.error("public not supported.")
94
+ return False
95
+
91
96
  if filename:
92
97
  remote_dir = "/".join([object_name] + filename.split("/")[:-1])
93
98
  if not self.mkdir(
@@ -111,5 +116,6 @@ class WebDAVInterface(StorageInterface):
111
116
  return super().upload(
112
117
  object_name=object_name,
113
118
  filename=filename,
119
+ public=public,
114
120
  log=log,
115
121
  )
@@ -278,8 +278,13 @@ class WebDAVRequestInterface(StorageInterface):
278
278
  self,
279
279
  object_name: str,
280
280
  filename: str = "",
281
+ public: bool = False,
281
282
  log: bool = True,
282
283
  ) -> bool:
284
+ if public:
285
+ logger.error("public not supported.")
286
+ return False
287
+
283
288
  if filename:
284
289
  if not self.mkdir(
285
290
  path="{}/{}".format(
@@ -315,6 +320,7 @@ class WebDAVRequestInterface(StorageInterface):
315
320
  return super().upload(
316
321
  object_name=object_name,
317
322
  filename=filename,
323
+ public=public,
318
324
  log=log,
319
325
  )
320
326
 
@@ -339,6 +345,7 @@ class WebDAVRequestInterface(StorageInterface):
339
345
  if not self.upload(
340
346
  object_name=object_name,
341
347
  filename=filename_.split(object_path, 1)[1],
348
+ public=public,
342
349
  log=log,
343
350
  ):
344
351
  return False
@@ -125,8 +125,13 @@ class WebDAVzipInterface(StorageInterface):
125
125
  self,
126
126
  object_name: str,
127
127
  filename: str = "",
128
+ public: bool = False,
128
129
  log: bool = True,
129
130
  ) -> bool:
131
+ if public:
132
+ logger.error("public not supported.")
133
+ return False
134
+
130
135
  object_path = objects.object_path(object_name=object_name)
131
136
 
132
137
  if not zip(
@@ -149,5 +154,6 @@ class WebDAVzipInterface(StorageInterface):
149
154
 
150
155
  return super().upload(
151
156
  object_name=object_name,
157
+ public=public,
152
158
  log=log,
153
159
  )
@@ -56,10 +56,12 @@ def ls(
56
56
  def upload(
57
57
  object_name: str,
58
58
  filename: str = "",
59
+ public: bool = False,
59
60
  log: bool = True,
60
61
  ) -> bool:
61
62
  return interface.upload(
62
63
  object_name=object_name,
63
64
  filename=filename,
65
+ public=public,
64
66
  log=log,
65
67
  )
@@ -24,6 +24,12 @@ parser.add_argument(
24
24
  type=str,
25
25
  default="",
26
26
  )
27
+ parser.add_argument(
28
+ "--public",
29
+ type=int,
30
+ default=0,
31
+ help="0 | 1",
32
+ )
27
33
  parser.add_argument(
28
34
  "--where",
29
35
  type=str,
@@ -80,6 +86,7 @@ elif args.task == "upload":
80
86
  success = storage.upload(
81
87
  object_name=args.object_name,
82
88
  filename=args.filename,
89
+ public=args.public == 1,
83
90
  )
84
91
  else:
85
92
  success = None
@@ -66,14 +66,16 @@ class StorageInterface:
66
66
  self,
67
67
  object_name: str,
68
68
  filename: str = "",
69
+ public: bool = False,
69
70
  log: bool = True,
70
71
  ) -> bool:
71
72
  if log:
72
73
  logger.info(
73
- "{}.upload {}{}".format(
74
+ "{}.upload {}{}{}".format(
74
75
  self.__class__.__name__,
75
76
  object_name,
76
77
  f"/{filename}" if filename else "",
78
+ " [public]" if public else "",
77
79
  )
78
80
  )
79
81
 
@@ -225,6 +225,7 @@ class S3Interface(StorageInterface):
225
225
  self,
226
226
  object_name: str,
227
227
  filename: str = "",
228
+ public: bool = False,
228
229
  log: bool = True,
229
230
  ) -> bool:
230
231
  if filename:
@@ -233,6 +234,10 @@ class S3Interface(StorageInterface):
233
234
  filename=filename,
234
235
  )
235
236
 
237
+ bucket_name = (
238
+ env.S3_PUBLIC_STORAGE_BUCKET if public else env.S3_STORAGE_BUCKET
239
+ )
240
+
236
241
  try:
237
242
  s3_resource = boto3.resource(
238
243
  "s3",
@@ -241,11 +246,11 @@ class S3Interface(StorageInterface):
241
246
  aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
242
247
  )
243
248
 
244
- bucket = s3_resource.Bucket(env.S3_STORAGE_BUCKET)
249
+ bucket = s3_resource.Bucket(bucket_name)
245
250
 
246
251
  with open(local_path, "rb") as fp:
247
252
  bucket.put_object(
248
- ACL="private",
253
+ ACL="public-read" if public else "private",
249
254
  Body=fp,
250
255
  Key=f"{object_name}/{filename}",
251
256
  )
@@ -253,9 +258,21 @@ class S3Interface(StorageInterface):
253
258
  logger.error(e)
254
259
  return False
255
260
 
261
+ if public:
262
+
263
+ logger.info(
264
+ "🔗 https://{}.{}/{}/{}".format(
265
+ bucket_name,
266
+ env.S3_STORAGE_ENDPOINT_URL.split("https://", 1)[1],
267
+ object_name,
268
+ filename,
269
+ )
270
+ )
271
+
256
272
  return super().upload(
257
273
  object_name=object_name,
258
274
  filename=filename,
275
+ public=public,
259
276
  log=log,
260
277
  )
261
278
 
@@ -277,6 +294,7 @@ class S3Interface(StorageInterface):
277
294
  if not self.upload(
278
295
  object_name=object_name,
279
296
  filename=filename_.split(object_path, 1)[1],
297
+ public=public,
280
298
  log=log,
281
299
  ):
282
300
  return False
@@ -17,6 +17,7 @@ def test_bluer_objects_env():
17
17
  assert env.ABCLI_MLFLOW_EXPERIMENT_PREFIX
18
18
 
19
19
  assert env.S3_STORAGE_BUCKET
20
+ assert env.S3_PUBLIC_STORAGE_BUCKET
20
21
 
21
22
  assert env.S3_STORAGE_ENDPOINT_URL
22
23
  assert env.S3_STORAGE_AWS_ACCESS_KEY_ID
@@ -0,0 +1,11 @@
1
+ from bluer_objects.url.functions import is_accessible
2
+ from bluer_ai.env import abcli_is_github_workflow
3
+
4
+
5
+ def test_url_is_accessible():
6
+ success = is_accessible("void")
7
+ assert not success
8
+
9
+ url = "https://cnn.com" if abcli_is_github_workflow else "https://iribnews.ir"
10
+ success = is_accessible(url)
11
+ assert success
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,31 @@
1
+ import argparse
2
+
3
+ from blueness import module
4
+ from blueness.argparse.generic import sys_exit
5
+
6
+ from bluer_objects import NAME
7
+ from bluer_objects.url.functions import is_accessible
8
+ from bluer_objects.logger import logger
9
+
10
+ NAME = module.name(__file__, NAME)
11
+
12
+ parser = argparse.ArgumentParser(NAME)
13
+ parser.add_argument(
14
+ "task",
15
+ type=str,
16
+ help="is_accessible",
17
+ )
18
+ parser.add_argument(
19
+ "--url",
20
+ type=str,
21
+ )
22
+ args = parser.parse_args()
23
+
24
+ success = False
25
+ if args.task == "is_accessible":
26
+ success = True
27
+ print(int(is_accessible(args.url)))
28
+ else:
29
+ success = None
30
+
31
+ sys_exit(logger, NAME, args.task, success)
@@ -0,0 +1,11 @@
1
+ import requests
2
+
3
+ from bluer_objects.logger import logger
4
+
5
+
6
+ def is_accessible(url) -> bool:
7
+ try:
8
+ response = requests.get(url)
9
+ return response.status_code == 200
10
+ except:
11
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.175.1
3
+ Version: 6.186.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -64,6 +64,6 @@ pip install bluer-objects
64
64
 
65
65
  [![pylint](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-objects.svg)](https://pypi.org/project/bluer-objects/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-objects)](https://pypistats.org/packages/bluer-objects)
66
66
 
67
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.175.1`](https://github.com/kamangir/bluer-objects).
67
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.186.1`](https://github.com/kamangir/bluer-objects).
68
68
 
69
69
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -1,7 +1,7 @@
1
- bluer_objects/__init__.py,sha256=6gVB8kZmeOPmYrSyWuk7xz1PChKg2N6bauiQcEnurzg,315
1
+ bluer_objects/__init__.py,sha256=1sNJL8KQSNM0GOrqwPBYL3WA9ATDYGZnG0TcMjplZCo,315
2
2
  bluer_objects/__main__.py,sha256=Yqfov833_hJuRne19WrGhT5DWAPtdffpoMxeSXS7EGw,359
3
- bluer_objects/config.env,sha256=cpmtTuKHIBvVjX30MpAImFgwM0g24qTHwoO-lCJRInA,175
4
- bluer_objects/env.py,sha256=aImjtNh8NKaua2rpQVFXWp86QF7nY87fDuMOO14O58E,1956
3
+ bluer_objects/config.env,sha256=RjcpnbKfRqNyGLRB4z7M_OG9z2pOM032ck__53JqXqo,216
4
+ bluer_objects/env.py,sha256=iw4QvaImqnavlsHwfkUScNHc7afDEJQKJSsHTtVJE78,2019
5
5
  bluer_objects/markdown.py,sha256=PhAwCTHIisO9qOpKHeb63U5oD9Zi8LnIQKTx_OWS4wE,938
6
6
  bluer_objects/objects.py,sha256=EYzA1vKngY2c_gdMKnUfrKVUcf-5wpFKgBFaVJA4cLE,1626
7
7
  bluer_objects/path.py,sha256=9uspZqObI29NerVDF30uILLaouDtloASh0Mywyq2_ew,3946
@@ -10,7 +10,7 @@ bluer_objects/urls.py,sha256=paHaYlLMQOI46-EYNch5ohu9Q09BMkF2vvJy1QufrVI,19
10
10
  bluer_objects/.abcli/abcli.sh,sha256=zcqSfpuonb7u9YZCO6jbYeU63pTi0WD5q7lBMSUBXqw,352
11
11
  bluer_objects/.abcli/actions.sh,sha256=HZI-X5KUy6bXEHmxywfBN1zbHalU0mcTblTQ2HvIfOE,236
12
12
  bluer_objects/.abcli/aka.sh,sha256=odRbw4KZb9Ld7uXny6H2pPi64_5kowKX3s68N6YvRmI,23
13
- bluer_objects/.abcli/alias.sh,sha256=wrYmXLozAQKQ3XWoI5id9MFWgU8NvI3wnU8cFs2G3DE,758
13
+ bluer_objects/.abcli/alias.sh,sha256=yQFLZizlUHDZu_7P182J7YuT3wAIfdUUCHN0ThWgRuc,788
14
14
  bluer_objects/.abcli/bluer_objects.sh,sha256=x7qf8hSAp3dAl0Hes4J07vL6qP-mWFUkJhvUXzTJC_8,210
15
15
  bluer_objects/.abcli/clone.sh,sha256=KqC5d4MAXwo7UZGhKnfCq9k9CCSl3I1dpU1igYs0Yrs,1975
16
16
  bluer_objects/.abcli/create_test_asset.sh,sha256=ONIdad_WRjZWdW6V2RalRW2qSJwybEwzU-_KsvaJ9og,245
@@ -24,7 +24,8 @@ bluer_objects/.abcli/mlflow.sh,sha256=7ylwHrQas-QbAJ8SfDJiN3zbuU6ifLUBEAhPRw38Hp
24
24
  bluer_objects/.abcli/object.sh,sha256=Zh2ZMFqBSIOHwwwLegCMxJRfaYCbPp1EJMT3LvcFzhE,739
25
25
  bluer_objects/.abcli/select.sh,sha256=CVcqVRN6bMLtEo0SptZS_QGY90_lT1Su71DlcVyddXo,878
26
26
  bluer_objects/.abcli/storage.sh,sha256=iYHxdXJI9sGR-WKxDuYKOB06FccSQ0G0-uZn9UJQGnc,321
27
- bluer_objects/.abcli/upload.sh,sha256=vRkzfDzze0MYMoUalzY6QzNC2DXlTFfm2nSMfNSB-9k,529
27
+ bluer_objects/.abcli/upload.sh,sha256=IbT786rA6nWuQurhGOFOiJeH_ZqVpnhvrARA1VJl9MU,640
28
+ bluer_objects/.abcli/url.sh,sha256=T5Scg0PcMJleqB_JhOCyT3_bQDXRh4D4YCvV1AVQQ7A,315
28
29
  bluer_objects/.abcli/metadata/get.sh,sha256=6W9x0akZwwozTyOlKCW_0MndYVUAL4v1HSUPxTAsfKA,835
29
30
  bluer_objects/.abcli/metadata/post.sh,sha256=UdvZNuRu6_NcyRVvDMFZ9GEwOm3K8rsNqM0FFr9LskA,570
30
31
  bluer_objects/.abcli/mlflow/browse.sh,sha256=jPHAKLgG7yDLCdSAW5acVmCOcOltAkZQ8FrttrX401s,1166
@@ -54,7 +55,7 @@ bluer_objects/.abcli/tests/README.sh,sha256=gk2KuNLFTuV3qdVgH8BNfJmur3gZoSV8EwLb
54
55
  bluer_objects/.abcli/tests/clone.sh,sha256=Rl9pHvmRJ4H-y-iMA80q11UdSZFrguNaMTez0LTtJjA,473
55
56
  bluer_objects/.abcli/tests/create_test_asset.sh,sha256=onRGc3VjDWA7On3isxKD3J7mxA6n349AVXRj90Z3Jzc,386
56
57
  bluer_objects/.abcli/tests/gif.sh,sha256=2FvcomiyYTzJa527a7Wk2EJt5N9_vZt8tmQD1QVetDg,461
57
- bluer_objects/.abcli/tests/help.sh,sha256=ViyFns-27DKGh7dOSSvOHTlbE4qLw9YzhCxmVe87vJo,1890
58
+ bluer_objects/.abcli/tests/help.sh,sha256=gVdwuupQhLnbruPuuSqr5jInb6dtxhbPQXD4lmhKoKM,1948
58
59
  bluer_objects/.abcli/tests/host.sh,sha256=GBuTLNw1sU3fAb5jS-ew_qAfovVCQ5CLaz5ad04IkoA,144
59
60
  bluer_objects/.abcli/tests/ls.sh,sha256=oOvcnEQZgnNlwCK4SvkdAjCBs2_z0qBOhgFLsXDBSXM,555
60
61
  bluer_objects/.abcli/tests/metadata.sh,sha256=OP1c0h0TSlDycrv0UglKLyBtTQwqh9M0nqVAdQUzkno,1723
@@ -63,8 +64,11 @@ bluer_objects/.abcli/tests/mlflow_lock.sh,sha256=TJwp6HbVUOT1HqRfXPS8_zpKAL7-mBe
63
64
  bluer_objects/.abcli/tests/mlflow_logging.sh,sha256=TVzHhk9qRthpP2xdKwu3LwK00S77GqH50io3oVyS2UE,305
64
65
  bluer_objects/.abcli/tests/mlflow_tags.sh,sha256=pX4sEK_z2Vrb7a6Bq4qWurFVPZkvjpS10K4MLx3mf64,811
65
66
  bluer_objects/.abcli/tests/mlflow_test.sh,sha256=7MXxYq2GgD2MEJbQlpx80qLT2HaaVn_PFFMpSA_hWA4,125
66
- bluer_objects/.abcli/tests/storage.sh,sha256=194FlYzc8Eplsl2Xxi0n0iTh1r_44oIDB0Fbn7tRJxs,1314
67
+ bluer_objects/.abcli/tests/storage_public_upload.sh,sha256=3S7YJQ-mbPcVtG384PRxEGP7xGLJgvvV-CtV4hgz2I8,456
68
+ bluer_objects/.abcli/tests/storage_upload_download.sh,sha256=tXjrHuFtmogC9Pf4Q8aTU1Sx1C653GOcy_jIsecelMY,1346
69
+ bluer_objects/.abcli/tests/url_is_accessible.sh,sha256=JwrEfBD19H2nyUG9GY66_NONgwm4TkEXwkw2FFushSo,405
67
70
  bluer_objects/.abcli/tests/version.sh,sha256=k-lXozSjyFgFR58cTzUYla0Ef-upx3sSK641zI5ynfE,169
71
+ bluer_objects/.abcli/url/is_accessible.sh,sha256=nU6YuCOXjSQlvH3CoixSIAuv5Ck9YUqPhyEwwe6NfS0,262
68
72
  bluer_objects/README/__init__.py,sha256=JwxdTVAK3LeUaw7rMJujOFIXZA59HaLCtxpsR1C-vpo,1311
69
73
  bluer_objects/README/functions.py,sha256=IriuSysrApSTEgOZHqq32-eyks5v5Tn-KvmwYQUIloc,10752
70
74
  bluer_objects/README/items.py,sha256=-XaNCr5b_NGRkZVfIQ6hBFgJw5GIVcMJdktT3hWoam4,755
@@ -86,12 +90,13 @@ bluer_objects/help/__main__.py,sha256=Dxg-JpMOIlYWZklI_J2LyiHnRui5lUwWmfM7FLRzUX
86
90
  bluer_objects/help/clone.py,sha256=PDnQs7zc4sqmoBHPjVRfX7jIaePiohPGCNA5bxeerik,553
87
91
  bluer_objects/help/create_test_asset.py,sha256=oxJORm2qk4b_q7EC6-dEuNu1_pK9Ri60PcHhrE8ruxM,375
88
92
  bluer_objects/help/download.py,sha256=1fw3ASOXUuXcNhm8y0AK7ZBmXzWwZvdo2hK9ZVbgteA,439
89
- bluer_objects/help/functions.py,sha256=occpIuw_ywUnEiNGQiuJh_w15OEfKcmwD_NQ0wAJiNE,1009
93
+ bluer_objects/help/functions.py,sha256=-xkCaBRkDxeSfd9Df1DLiAwNoBwPx0uKWPpp7lUaYOY,1096
90
94
  bluer_objects/help/gif.py,sha256=gKV6vNT4bEC2Ch3QIb3Yc5DqzAH_UvAVCsuvzXeF1Sc,564
91
95
  bluer_objects/help/host.py,sha256=4t4yrPGjTbnFtODcuBjfIzpA5pmmvc5s4QrjIqPPVsM,988
92
96
  bluer_objects/help/ls.py,sha256=acvRLDxjJOzQ1a9ZQ4Mn9aBZ8Vf17IDHcAxC2O3R33Y,627
93
97
  bluer_objects/help/metadata.py,sha256=fk22NasBcZU1ffY4fu6AxrCzMQtTI28p_ghaSVRrrPM,2811
94
- bluer_objects/help/upload.py,sha256=p-nRw9d_S6PI7PcD0mBwWqQRPWQG4r3usjvOIzAbTeM,368
98
+ bluer_objects/help/upload.py,sha256=tXAdVhy0FZfF5b4cAEgaYlLQ8_cnQ656um8QioKMV_o,456
99
+ bluer_objects/help/url.py,sha256=jflKGfzBtkiwNY8_5ZHK6CI0qqEqPVj6iuFPz1BQMvI,381
95
100
  bluer_objects/help/mlflow/__init__.py,sha256=fvnGg8l24oGWKd7lbVm32GHyrE3eBlholj4RFrjFNuw,4427
96
101
  bluer_objects/help/mlflow/cache.py,sha256=O8O1oaiq1e1z2HCi8fRe4hjSNimzvCaCAIu-u2GDHkE,704
97
102
  bluer_objects/help/mlflow/lock.py,sha256=REdB4LmlHu2_6SF1nDA50KBbYtNIKRDbYH7KduUnuEg,848
@@ -118,19 +123,19 @@ bluer_objects/mlflow/testing.py,sha256=cJH5Ki02fJN_Xos1j9yvwQChXvMkOa9i12vtDKmkb
118
123
  bluer_objects/mlflow/lock/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
119
124
  bluer_objects/mlflow/lock/__main__.py,sha256=xF_xq2UqAsEohSOHjxaFXaw9KopOEDg6LRDM5a4VAPQ,1138
120
125
  bluer_objects/mlflow/lock/functions.py,sha256=MOslqblNAOsRvILzLF4q6m2EAwCk4f4zEWQpsy8lVnM,3045
121
- bluer_objects/storage/WebDAV.py,sha256=IvYZDST6Cg1rgRhQ5eh3Hrq8V7S3oon9O29MH55QLxA,2922
122
- bluer_objects/storage/WebDAVrequest.py,sha256=ihWOxP7h28qj0-5AZ0SsERSBrViq9p4iNVeR4pGBWQo,9836
123
- bluer_objects/storage/WebDAVzip.py,sha256=Sd_rU57pJaRa05sKNQiMr85Bg3w7O5k8N1pSN1u8omA,3872
124
- bluer_objects/storage/__init__.py,sha256=XosPRjB20wDS-QMwQtr3zqKC9UM7U8z-PHwySGBegcQ,1646
125
- bluer_objects/storage/__main__.py,sha256=vZI6rUkrekf1eYUgWOOUnFhl4qPfpByzwb-tihTOiIo,1776
126
- bluer_objects/storage/base.py,sha256=72I1zvlpbQbFU20TxqcTodR4m8PYgBPXMfteek8V0_A,1949
127
- bluer_objects/storage/s3.py,sha256=evUFpPk6PUv1KCXTMq_QCbygqNk0YNAOQr_B4gYrjBE,8342
126
+ bluer_objects/storage/WebDAV.py,sha256=TrMroPaCx_ploCol4s3604qdl-4HjOYj906JJ7oRpv8,3074
127
+ bluer_objects/storage/WebDAVrequest.py,sha256=tuMXWWpFcOkwf-W3YTsuJ5vQYJPFDOuEzBVRHjcSsdc,10027
128
+ bluer_objects/storage/WebDAVzip.py,sha256=Tn-g9wjK6qHHIEO4-N_xBEZ4H8Q7dIh1Iv5banQw-c4,4024
129
+ bluer_objects/storage/__init__.py,sha256=Sz9KJzb2p6MbAvHMZEhQIpo2UVOCi1OCSO095uwU3JI,1695
130
+ bluer_objects/storage/__main__.py,sha256=yfWoUlpF_HssujOepf6J60G1Ohm0eccq-OQkhLjnWyY,1895
131
+ bluer_objects/storage/base.py,sha256=E4u8yuRWK_-3i6aa4u2tFZshj74PWPf5AgGGgK0mmTg,2032
132
+ bluer_objects/storage/s3.py,sha256=NOAkScgFIWx5awi9Ve41axFi5TvW_IPzz232Cf9p7wE,8912
128
133
  bluer_objects/testing/__init__.py,sha256=DWY5ZtvCnHG_t9BDiqy_ArLOZi-nlyAtPVMLA1PPAMU,62
129
134
  bluer_objects/testing/__main__.py,sha256=hhJV9qn0V_8FxzNDcoHCHr4A7zf9UudnNGJCAPkTBGU,750
130
135
  bluer_objects/testing/functions.py,sha256=AXAfzWLcEPkbSYTehdahshjKJ45C4IJkRs_TgrHOntc,1355
131
136
  bluer_objects/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
137
  bluer_objects/tests/test_README.py,sha256=5D4UV8VcjbeAPThsYVynYtVFuP8gwMAhIjEWuOQZsWs,89
133
- bluer_objects/tests/test_env.py,sha256=Kh3aVc7UbXkv39-oJPvRxg6nCKFlLQnEnK_wO-UlGEo,1050
138
+ bluer_objects/tests/test_env.py,sha256=vjaNwfsLodw8jpTEKYBsjKwpxcwcNOtsWHqS4iyH4oQ,1090
134
139
  bluer_objects/tests/test_file_download.py,sha256=1_adHYqgSifkdP-I7TQVW0t8MLCujQ61fvRbcrSkcmg,512
135
140
  bluer_objects/tests/test_file_load_save.py,sha256=unqxfiqba6RVhMS95AtHZWsT7Q097jBOKdckAT9PyFU,2390
136
141
  bluer_objects/tests/test_file_load_save_text.py,sha256=3XnBGlv3KZvheHY-RlX1Su6LOBkkn57pkf9_dXR81r8,1017
@@ -155,9 +160,13 @@ bluer_objects/tests/test_storage_s3.py,sha256=otgWqAzQBC7_RoNCyNoKUbONVlm18DSKQF
155
160
  bluer_objects/tests/test_storage_webdav_request.py,sha256=h2b8PeIx0-hQ2d6PmQcJZyQf59L3fDAzTbKg4SNV-SE,1769
156
161
  bluer_objects/tests/test_storage_webdav_zip.py,sha256=C19qxhkcHyTwVFzW35vL85SOcXJPkqXXaWUNll0Uyqc,1017
157
162
  bluer_objects/tests/test_testing.py,sha256=d2NH435yqJBl9wmfMqGGd-f0Y0jsL2QhHUXkty9AwPA,235
163
+ bluer_objects/tests/test_url_is_accessible.py,sha256=U86PpmQXA1TmDlVo-7osleCzq9ug-46-3WBae4xRGAA,331
158
164
  bluer_objects/tests/test_version.py,sha256=Lyf3PMcA22e17BNRk_2VgPrtao6dWEgVoXo68Uds8SE,75
159
- bluer_objects-6.175.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
160
- bluer_objects-6.175.1.dist-info/METADATA,sha256=vyAEE05U7u6-0heCnWZI9Kz2WiFoKsD17rM-Y3yj05U,3678
161
- bluer_objects-6.175.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
162
- bluer_objects-6.175.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
163
- bluer_objects-6.175.1.dist-info/RECORD,,
165
+ bluer_objects/url/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
166
+ bluer_objects/url/__main__.py,sha256=kjB2_6lIqGaEqi_-Nml__R6Urx80rO_1lxGnIx9NjWw,624
167
+ bluer_objects/url/functions.py,sha256=L7Ug7kRQBzjgxCwV1ugkCRJd9iqihK8XvztL8LLuDG4,213
168
+ bluer_objects-6.186.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
169
+ bluer_objects-6.186.1.dist-info/METADATA,sha256=pnfUPjGL-m1204o5h_C-gee7cZY9zgG9qtNoDZKN_s4,3678
170
+ bluer_objects-6.186.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
171
+ bluer_objects-6.186.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
172
+ bluer_objects-6.186.1.dist-info/RECORD,,