mmar-mapi 1.0.3__py3-none-any.whl → 1.0.5__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 mmar-mapi might be problematic. Click here for more details.

mmar_mapi/file_storage.py CHANGED
@@ -1,12 +1,14 @@
1
+ import json
1
2
  import string
3
+ from datetime import datetime
2
4
  from hashlib import md5
3
5
  from pathlib import Path
4
6
  from zipfile import ZipFile, is_zipfile
5
7
 
6
-
7
8
  ResourceId = str
8
9
  ASCII_DIGITS = set(string.ascii_lowercase + string.digits)
9
10
  SUFFIX_DIR = ".dir"
11
+ SUFFIX_METADATA = ".metadata"
10
12
 
11
13
 
12
14
  def _validate_exist(files_dir):
@@ -37,18 +39,26 @@ class FileStorage:
37
39
  fpath = self.files_dir / generate_fname(content, dtype)
38
40
  return fpath
39
41
 
40
- def upload_maybe(self, content: bytes | None, dtype: str) -> ResourceId | None:
42
+ def upload_maybe(self, content: bytes | str | None, fname: str) -> ResourceId | None:
41
43
  if not content:
42
44
  return None
43
- resource_id = self.upload(content, dtype)
45
+ resource_id = self.upload(content, fname)
44
46
  return resource_id
45
47
 
46
- def upload(self, content: bytes | str, dtype: str) -> ResourceId:
47
- _validate_dtype(dtype)
48
+ def upload(self, content: bytes | str, fname: str) -> ResourceId:
48
49
  if isinstance(content, str):
49
50
  content = content.encode()
51
+
52
+ dtype = fname.rsplit(".", 1)[-1]
53
+ _validate_dtype(dtype)
50
54
  fpath = self._generate_fname_path(content, dtype)
51
55
  fpath.write_bytes(content)
56
+
57
+ fpath_md = fpath.with_suffix(SUFFIX_METADATA)
58
+ update_date = f"{datetime.now():%Y-%m-%d--%H-%M-%S}"
59
+ metadata = {"fname": fname, "update_date": update_date, "size": len(content)}
60
+ fpath_md.write_text(json.dumps(metadata, ensure_ascii=False))
61
+
52
62
  return str(fpath)
53
63
 
54
64
  def upload_dir(self, resource_ids: list[ResourceId]) -> ResourceId:
@@ -90,7 +100,7 @@ class FileStorage:
90
100
  return resource_id and resource_id.rsplit(".")[-1]
91
101
 
92
102
  def unzip_file(self, resource_id: str) -> ResourceId:
93
- """ takes resource_id which refer to zip-archive, unpacks it and returns directory ResourceId with content of zip-archive """
103
+ """takes resource_id which refer to zip-archive, unpacks it and returns directory ResourceId with content of zip-archive"""
94
104
  path = self._get_path(resource_id)
95
105
  if not path:
96
106
  raise ValueError(f"Not found path: {resource_id}")
@@ -99,15 +109,12 @@ class FileStorage:
99
109
 
100
110
  resource_ids = []
101
111
 
102
- with ZipFile(path, mode='r') as zip_file:
103
- files_info = zip_file.filelist
104
-
112
+ with ZipFile(path, mode="r") as zip_file:
105
113
  for file_info in zip_file.filelist:
106
- file_dtype = file_info.filename.rsplit('.')[-1]
114
+ file_dtype = file_info.filename.rsplit(".")[-1]
107
115
  file_bytes = zip_file.read(file_info)
108
116
  rid = self.upload(file_bytes, file_dtype)
109
117
  resource_ids.append(rid)
110
118
 
111
119
  res = self.upload_dir(resource_ids)
112
120
  return res
113
-
mmar_mapi/models/chat.py CHANGED
@@ -229,11 +229,13 @@ def make_content(
229
229
  resource_id: str | None = None,
230
230
  command: dict | None = None,
231
231
  widget: Widget | None = None,
232
+ content: Content | None = None,
232
233
  ) -> Content:
233
234
  resource_id = (resource_id or None) and {"type": "resource_id", "resource_id": resource_id}
234
235
  command = (command or None) and {"type": "command", "command": command}
235
236
 
236
- content = list(filter(None, [text, resource_id, command, widget]))
237
+ content = content if isinstance(content, list) else [content] if content else []
238
+ content += list(filter(None, [text, resource_id, command, widget]))
237
239
  if len(content) == 0:
238
240
  content = ""
239
241
  elif len(content) == 1:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mmar-mapi
3
- Version: 1.0.3
3
+ Version: 1.0.5
4
4
  Summary: Common pure/IO utilities for multi-modal architectures team
5
5
  Keywords:
6
6
  Author: Eugene Tagin
@@ -1,11 +1,11 @@
1
1
  mmar_mapi/__init__.py,sha256=cj3McZDG8zU1nLSMjwtVHG0u99xN7LaNLW90d4tK7Io,613
2
2
  mmar_mapi/api.py,sha256=C9Sr8dISvf51xfEznPjccI_odaG4coQE3HI_0jVpjMQ,1677
3
- mmar_mapi/file_storage.py,sha256=bwfpoYivOu6uXV5rg2OZQuk8MOpxbT5Zp4TaYD4XjdY,3841
3
+ mmar_mapi/file_storage.py,sha256=NbmCjTLinpWwZJRvNo7kuR1BiIIwUrsuw0xnl5R6A2g,4170
4
4
  mmar_mapi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  mmar_mapi/models/base.py,sha256=mKtXV2x51XVj7W-et9tjGcPMDUUUMelW-BywMgFc2p0,411
6
6
  mmar_mapi/models/base_config_models/__init__.py,sha256=KjS_bSCka8BOMsigwcIML-e6eNB2ouMU6gxlhRmzeuY,44
7
7
  mmar_mapi/models/base_config_models/gigachat_config.py,sha256=QvKTnp0VioXzd3_PUgNBeYx5RDTZT-45j-Ll-wXEI_o,421
8
- mmar_mapi/models/chat.py,sha256=KisHhE-wRU2ulwmizqkfUojqe9kWB2LMwgwRjvIZ7-M,12358
8
+ mmar_mapi/models/chat.py,sha256=sAYuudA--i7qVfEERy5K5wmAkIFAjn6vUrKRT_BmfIE,12480
9
9
  mmar_mapi/models/chat_item.py,sha256=ZfCKvTqr7gpuJSAuHVxWRnlTefRwki_IVNA2N_CXGdg,5557
10
10
  mmar_mapi/models/enums.py,sha256=J-GNpql9MCnKnWiV9aJRQGI-pAybvV86923RZs99grA,1006
11
11
  mmar_mapi/models/tracks.py,sha256=HKDp-BX1p7AlDfSEKfOKCu0TRSK9cD4Dmq1vJt8oRjw,307
@@ -13,7 +13,7 @@ mmar_mapi/models/widget.py,sha256=KXSP3d4yQNeificMfzRxROdByw9IkxwCjkDD0kc7tcQ,70
13
13
  mmar_mapi/type_union.py,sha256=diwmzcnbqkpGFckPHNw9o8zyQ955mOGNvhTlcBJ0RMI,1905
14
14
  mmar_mapi/utils.py,sha256=hcKJVslvTBLw2vjZ9zcKZxh_tqk48obHcVs_i3Rxn3M,112
15
15
  mmar_mapi/xml_parser.py,sha256=VvLIX_XCZao9i0qqpTVx8nx0vbFXSe8pEbdJdXnj97g,568
16
- mmar_mapi-1.0.3.dist-info/licenses/LICENSE,sha256=2A90w8WjhOgQXnFuUijKJYazaqZ4_NTokYb9Po4y-9k,1061
17
- mmar_mapi-1.0.3.dist-info/WHEEL,sha256=Jb20R3Ili4n9P1fcwuLup21eQ5r9WXhs4_qy7VTrgPI,79
18
- mmar_mapi-1.0.3.dist-info/METADATA,sha256=oOWAqW2HW1Hp3zK05RCK0OlL6tTZkNzlSoxxOutRlO8,914
19
- mmar_mapi-1.0.3.dist-info/RECORD,,
16
+ mmar_mapi-1.0.5.dist-info/licenses/LICENSE,sha256=2A90w8WjhOgQXnFuUijKJYazaqZ4_NTokYb9Po4y-9k,1061
17
+ mmar_mapi-1.0.5.dist-info/WHEEL,sha256=Jb20R3Ili4n9P1fcwuLup21eQ5r9WXhs4_qy7VTrgPI,79
18
+ mmar_mapi-1.0.5.dist-info/METADATA,sha256=-lflaOAZ06lU3sUyvsCaweurmww3viGsfG5i3K9gUC8,914
19
+ mmar_mapi-1.0.5.dist-info/RECORD,,