arpakitlib 1.8.78__py3-none-any.whl → 1.8.80__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.
@@ -6,6 +6,8 @@ import shutil
6
6
  import uuid
7
7
  from typing import Optional, Union, Iterator
8
8
 
9
+ from arpakitlib.ar_datetime_util import now_utc_dt
10
+
9
11
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
10
12
 
11
13
 
@@ -50,7 +52,8 @@ class FileStorageInDir:
50
52
  file_extension: Optional[str] = None,
51
53
  content_to_write: Optional[Union[str, bytes]] = None,
52
54
  create: bool = False,
53
- raise_if_exists: bool = True
55
+ raise_if_exists: bool = True,
56
+ add_datetime_in_filename: bool = False
54
57
  ) -> str:
55
58
  self.init()
56
59
 
@@ -69,6 +72,9 @@ class FileStorageInDir:
69
72
  if raise_if_exists and filename in os.listdir(self.dirpath):
70
73
  raise ValueError(f"file ({filename}) already exists")
71
74
 
75
+ if add_datetime_in_filename:
76
+ filename = f"{filename}--{now_utc_dt().isoformat()}"
77
+
72
78
  filepath = os.path.join(self.dirpath, filename)
73
79
 
74
80
  if create is True:
arpakitlib/ar_str_util.py CHANGED
@@ -139,21 +139,38 @@ def lower_and_strip_or_none(value: Any) -> str | None:
139
139
  return None
140
140
 
141
141
 
142
- def float_or_none(value: Any) -> float | int | None:
142
+ def int_or_float_or_none(value: Any) -> float | int | None:
143
+ if isinstance(value, float) or isinstance(value, int):
144
+ return value
143
145
  value = strip_or_none(value)
144
- if value is not None and (value.isdigit() or value.isdecimal()):
146
+ if value is not None and value.isdigit():
147
+ return int(value)
148
+ if value is not None and value.isdecimal():
145
149
  return float(value)
146
150
  return None
147
151
 
148
152
 
149
153
  def int_or_none(value: Any) -> int | None:
154
+ if isinstance(value, int):
155
+ return value
150
156
  value = strip_or_none(value)
151
157
  if value is not None and value.isdigit():
152
158
  return int(value)
153
159
  return None
154
160
 
155
161
 
162
+ def float_or_none(value: Any) -> float | None:
163
+ if isinstance(value, float):
164
+ return value
165
+ value = strip_or_none(value)
166
+ if value is not None and value.isdecimal():
167
+ return float(value)
168
+ return None
169
+
170
+
156
171
  def __example():
172
+ print(int_or_none("124.124"))
173
+
157
174
  print("str_in:")
158
175
  print(str_in(string="hello", main_string="hello world"))
159
176
  print(str_in(string="bye", main_string="hello world"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.78
3
+ Version: 1.8.80
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -345,7 +345,7 @@ arpakitlib/ar_dream_ai_api_client_util.py,sha256=Z1oii_XSsgunYx17SdcHl54S4KPQti7
345
345
  arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
346
346
  arpakitlib/ar_enumeration_util.py,sha256=XoFInWtGzbIr6fJq0un5nettaDfOLAyY84ovwj7n_7g,3030
347
347
  arpakitlib/ar_exception_util.py,sha256=3hZKsj34TZVdmd4JAQz7w515smWqB8o3gTwAEjuMdnI,408
348
- arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
348
+ arpakitlib/ar_file_storage_in_dir_util.py,sha256=dnSMTr9AX28wo8q4zHOZl89Zm0AFK6dOP-YzN_7Hays,3881
349
349
  arpakitlib/ar_file_util.py,sha256=GUdJYm1tUZnYpY-SIPRHAZBHGra8NKy1eYEI0D5AfhY,489
350
350
  arpakitlib/ar_func_util.py,sha256=lG0bx_DtxWN4skbUim0liRZ6WUyLVV8Qfk6iZNtCZOs,1042
351
351
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
@@ -371,11 +371,11 @@ arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1
371
371
  arpakitlib/ar_sqladmin_util.py,sha256=Jd33EX_fAso4bvrcDhNEYOUlUHkudbadNGOJDg7rqhQ,301
372
372
  arpakitlib/ar_sqlalchemy_util.py,sha256=Fo7xdHu1rjyHNj2XzN7r_yXbaajGK8dxBPsOL6-DzVU,10559
373
373
  arpakitlib/ar_ssh_runner_util.py,sha256=yvAwza480MkHKvLkDEsR7JNh2bYNs6P9rCVo4NA85NE,6865
374
- arpakitlib/ar_str_util.py,sha256=QUDnnsnA_1FvGM-RiUjz31PB92n-XUbDoz81pWkdvOM,5138
374
+ arpakitlib/ar_str_util.py,sha256=CuIptQwHP0msTLNJbp-OFAdInVeTY4P58p7jFdeGm-4,5591
375
375
  arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
376
376
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
377
- arpakitlib-1.8.78.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
378
- arpakitlib-1.8.78.dist-info/METADATA,sha256=H0NbOYKglz5d4kfI-ZrCvDSbEKnFoHEIJDrn3-UeoWQ,3559
379
- arpakitlib-1.8.78.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
380
- arpakitlib-1.8.78.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
381
- arpakitlib-1.8.78.dist-info/RECORD,,
377
+ arpakitlib-1.8.80.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
378
+ arpakitlib-1.8.80.dist-info/METADATA,sha256=3UK0mFRMuGCCrIwOC928Y14_ezqvqSw5sJyh2cEsO6k,3559
379
+ arpakitlib-1.8.80.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
380
+ arpakitlib-1.8.80.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
381
+ arpakitlib-1.8.80.dist-info/RECORD,,