dcicutils 8.8.4.1b27__tar.gz → 8.8.4.1b28__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/PKG-INFO +1 -1
  2. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/file_utils.py +13 -4
  3. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/pyproject.toml +1 -1
  4. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/LICENSE.txt +0 -0
  5. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/README.rst +0 -0
  6. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/__init__.py +0 -0
  7. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/base.py +0 -0
  8. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/beanstalk_utils.py +0 -0
  9. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/bundle_utils.py +0 -0
  10. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/captured_output.py +0 -0
  11. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/cloudformation_utils.py +0 -0
  12. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/codebuild_utils.py +0 -0
  13. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/command_utils.py +0 -0
  14. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/common.py +0 -0
  15. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/contribution_scripts.py +0 -0
  16. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/contribution_utils.py +0 -0
  17. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/creds_utils.py +0 -0
  18. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/data_readers.py +0 -0
  19. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/data_utils.py +0 -0
  20. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/datetime_utils.py +0 -0
  21. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/deployment_utils.py +0 -0
  22. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/diff_utils.py +0 -0
  23. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/docker_utils.py +0 -0
  24. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ecr_scripts.py +0 -0
  25. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ecr_utils.py +0 -0
  26. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ecs_utils.py +0 -0
  27. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/env_base.py +0 -0
  28. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/env_manager.py +0 -0
  29. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/env_scripts.py +0 -0
  30. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/env_utils.py +0 -0
  31. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/env_utils_legacy.py +0 -0
  32. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/es_utils.py +0 -0
  33. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/exceptions.py +0 -0
  34. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ff_mocks.py +0 -0
  35. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ff_utils.py +0 -0
  36. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/function_cache_decorator.py +0 -0
  37. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/glacier_utils.py +0 -0
  38. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/http_utils.py +0 -0
  39. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/jh_utils.py +0 -0
  40. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/kibana/dashboards.json +0 -0
  41. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/kibana/readme.md +0 -0
  42. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/lang_utils.py +0 -0
  43. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/c4-infrastructure.jsonc +0 -0
  44. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/c4-python-infrastructure.jsonc +0 -0
  45. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/park-lab-common-server.jsonc +0 -0
  46. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/park-lab-common.jsonc +0 -0
  47. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc +0 -0
  48. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_policies/park-lab-pipeline.jsonc +0 -0
  49. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/license_utils.py +0 -0
  50. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/log_utils.py +0 -0
  51. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/misc_utils.py +0 -0
  52. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/obfuscation_utils.py +0 -0
  53. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/opensearch_utils.py +0 -0
  54. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/portal_object_utils.py +0 -0
  55. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/portal_utils.py +0 -0
  56. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/progress_bar.py +0 -0
  57. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/project_utils.py +0 -0
  58. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/qa_checkers.py +0 -0
  59. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/qa_utils.py +0 -0
  60. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/redis_tools.py +0 -0
  61. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/redis_utils.py +0 -0
  62. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/s3_utils.py +0 -0
  63. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/schema_utils.py +0 -0
  64. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/scripts/publish_to_pypi.py +0 -0
  65. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/scripts/run_license_checker.py +0 -0
  66. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/scripts/view_portal_object.py +0 -0
  67. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/secrets_utils.py +0 -0
  68. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/sheet_utils.py +0 -0
  69. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/snapshot_utils.py +0 -0
  70. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/ssl_certificate_utils.py +0 -0
  71. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/structured_data.py +0 -0
  72. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/submitr/progress_constants.py +0 -0
  73. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/submitr/ref_lookup_strategy.py +0 -0
  74. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/task_utils.py +0 -0
  75. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/tmpfile_utils.py +0 -0
  76. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/trace_utils.py +0 -0
  77. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/validation_utils.py +0 -0
  78. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/variant_utils.py +0 -0
  79. {dcicutils-8.8.4.1b27 → dcicutils-8.8.4.1b28}/dcicutils/zip_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcicutils
3
- Version: 8.8.4.1b27
3
+ Version: 8.8.4.1b28
4
4
  Summary: Utility package for interacting with the 4DN Data Portal and other 4DN resources
5
5
  Home-page: https://github.com/4dn-dcic/utils
6
6
  License: MIT
@@ -16,7 +16,8 @@ HOME_DIRECTORY = str(pathlib.Path().home())
16
16
  def search_for_file(file: str,
17
17
  location: Union[str, Optional[List[str]]] = None,
18
18
  recursive: bool = False,
19
- single: bool = False) -> Union[List[str], Optional[str]]:
19
+ single: bool = False,
20
+ order: bool = True) -> Union[List[str], Optional[str]]:
20
21
  """
21
22
  Searches for the existence of the given file name, first directly in the given directory or list
22
23
  of directories, if specified, and if not then just in the current (working) directory; if the
@@ -25,6 +26,11 @@ def search_for_file(file: str,
25
26
  first file which is found is returns (as a string), or None if none; if the single flag
26
27
  is False, then all matched files are returned in a list, or and empty list if none.
27
28
  """
29
+ def order_by_fewest_number_of_paths_and_then_alphabetically(paths: List[str]) -> List[str]:
30
+ def order_by(path: str):
31
+ return len(path.split(os.path.sep)), path
32
+ return sorted(paths, key=order_by)
33
+
28
34
  if not (file and isinstance(file, (str, pathlib.PosixPath))):
29
35
  return None if single is True else []
30
36
  if os.path.isabs(file):
@@ -74,9 +80,12 @@ def search_for_file(file: str,
74
80
  return file_found
75
81
  if file_found not in files_found:
76
82
  files_found.append(file_found)
77
- if files_found:
78
- return files_found[0] if single is True else files_found
79
- return None if single is True else []
83
+ if single is True:
84
+ return files_found[0] if files_found else None
85
+ elif order is True:
86
+ return order_by_fewest_number_of_paths_and_then_alphabetically(files_found)
87
+ else:
88
+ return files_found
80
89
 
81
90
 
82
91
  def normalize_path(value: Union[str, pathlib.Path], absolute: bool = False, expand_home: Optional[bool] = None) -> str:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "dcicutils"
3
- version = "8.8.4.1b27" # TODO: To become 8.8.5
3
+ version = "8.8.4.1b28" # TODO: To become 8.8.5
4
4
  description = "Utility package for interacting with the 4DN Data Portal and other 4DN resources"
5
5
  authors = ["4DN-DCIC Team <support@4dnucleome.org>"]
6
6
  license = "MIT"