pixelarraylib 1.0.3__tar.gz → 1.0.4__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 (46) hide show
  1. {pixelarraylib-1.0.3/pixelarraylib.egg-info → pixelarraylib-1.0.4}/PKG-INFO +1 -1
  2. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/__init__.py +1 -1
  3. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/oss.py +58 -15
  4. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/__init__.py +1 -1
  5. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4/pixelarraylib.egg-info}/PKG-INFO +1 -1
  6. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pyproject.toml +1 -1
  7. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/LICENSE +0 -0
  8. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/MANIFEST.in +0 -0
  9. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/README.md +0 -0
  10. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/__main__.py +0 -0
  11. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/__init__.py +0 -0
  12. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/acr.py +0 -0
  13. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/aliyun_email.py +0 -0
  14. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/billing.py +0 -0
  15. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/content_scanner.py +0 -0
  16. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/domain.py +0 -0
  17. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/eci.py +0 -0
  18. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/ecs.py +0 -0
  19. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/eip.py +0 -0
  20. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/fc.py +0 -0
  21. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/sms.py +0 -0
  22. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/aliyun/sts.py +0 -0
  23. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/db_utils/mysql.py +0 -0
  24. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/db_utils/redis.py +0 -0
  25. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/decorators/__init__.py +0 -0
  26. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/decorators/decorators.py +0 -0
  27. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/gitlab/__init__.py +0 -0
  28. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/gitlab/code_analyzer.py +0 -0
  29. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/gitlab/pypi_package_manager.py +0 -0
  30. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/monitor/__init__.py +0 -0
  31. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/monitor/feishu.py +0 -0
  32. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/net/request.py +0 -0
  33. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/build_website.py +0 -0
  34. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/collect_code_to_txt.py +0 -0
  35. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/create_test_case_files.py +0 -0
  36. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/nginx_proxy_to_ecs.py +0 -0
  37. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/scripts/remove_empty_lines.py +0 -0
  38. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/system/__init__.py +0 -0
  39. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib/system/common.py +0 -0
  40. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib.egg-info/SOURCES.txt +0 -0
  41. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib.egg-info/dependency_links.txt +0 -0
  42. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib.egg-info/entry_points.txt +0 -0
  43. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib.egg-info/requires.txt +0 -0
  44. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/pixelarraylib.egg-info/top_level.txt +0 -0
  45. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/requirements.txt +0 -0
  46. {pixelarraylib-1.0.3 → pixelarraylib-1.0.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pixelarraylib
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: PixelArray Python开发工具库 - 包含阿里云服务、数据库工具、装饰器、监控等功能
5
5
  Author-email: Lu qi <qi.lu@pixelarrayai.com>
6
6
  License-Expression: MIT
@@ -20,7 +20,7 @@ PixelArray Python开发工具库
20
20
  from pixelarraylib.gitlab import pypi_package_manager
21
21
  """
22
22
 
23
- __version__ = "1.0.3"
23
+ __version__ = "1.0.4"
24
24
  __author__ = "PixelArray"
25
25
  __email__ = "qi.lu@pixelarrayai.com"
26
26
 
@@ -258,6 +258,25 @@ class OSSUtils:
258
258
  feishu_alert.send(traceback.format_exc())
259
259
  return False
260
260
 
261
+ def copy_object(self, prefix, target_prefix):
262
+ """
263
+ description:
264
+ 复制对象
265
+ parameters:
266
+ prefix(str): 前缀
267
+ target_prefix(str): 目标前缀
268
+ """
269
+ try:
270
+ self.client.copy_object(
271
+ source_bucket_name=self.bucket_name,
272
+ source_key=prefix,
273
+ target_key=target_prefix,
274
+ )
275
+ return True
276
+ except Exception as e:
277
+ feishu_alert.send(traceback.format_exc())
278
+ return False
279
+
261
280
  def generate_presigned_url(self, prefix, expires_in=60 * 60 * 24):
262
281
  """
263
282
  description:
@@ -300,7 +319,7 @@ class OSSUtilsAsync:
300
319
 
301
320
  # 创建oss2的Auth对象用于签名
302
321
  self.auth = oss2.Auth(access_key_id, access_key_secret)
303
-
322
+
304
323
  # 创建oss2的Bucket对象用于同步操作
305
324
  correct_endpoint = self.endpoint.replace(f"{self.bucket_name}.", "")
306
325
  self.oss_bucket = oss2.Bucket(self.auth, correct_endpoint, self.bucket_name)
@@ -476,7 +495,9 @@ class OSSUtilsAsync:
476
495
 
477
496
  # 使用线程池运行oss2的同步操作
478
497
  try:
479
- await self._run_in_thread(self.oss_bucket.put_object_from_file, key, local_path)
498
+ await self._run_in_thread(
499
+ self.oss_bucket.put_object_from_file, key, local_path
500
+ )
480
501
  return True
481
502
  except Exception as e:
482
503
  return False
@@ -490,7 +511,9 @@ class OSSUtilsAsync:
490
511
 
491
512
  # 使用线程池运行oss2的同步操作
492
513
  try:
493
- await self._run_in_thread(self.oss_bucket.get_object_to_file, key, local_path)
514
+ await self._run_in_thread(
515
+ self.oss_bucket.get_object_to_file, key, local_path
516
+ )
494
517
  return True
495
518
  except Exception as e:
496
519
  return False
@@ -499,21 +522,21 @@ class OSSUtilsAsync:
499
522
  """删除OSS中的对象或前缀"""
500
523
  try:
501
524
  object_list = await self.list_objects(prefix)
502
-
525
+
503
526
  # 使用线程池批量删除对象
504
527
  delete_tasks = []
505
528
  for obj in object_list:
506
529
  task = self._run_in_thread(self.oss_bucket.delete_object, obj.key)
507
530
  delete_tasks.append(task)
508
-
531
+
509
532
  # 等待所有删除操作完成
510
533
  results = await asyncio.gather(*delete_tasks, return_exceptions=True)
511
-
534
+
512
535
  # 检查是否有任何删除失败
513
536
  for result in results:
514
537
  if isinstance(result, Exception):
515
538
  return False
516
-
539
+
517
540
  return True
518
541
  except Exception as e:
519
542
  print(f"删除对象时出错: {e}")
@@ -530,10 +553,10 @@ class OSSUtilsAsync:
530
553
  for obj in object_list:
531
554
  task = self._run_in_thread(self.oss_bucket.get_object_meta, obj.key)
532
555
  size_tasks.append(task)
533
-
556
+
534
557
  # 等待所有获取元数据操作完成
535
558
  results = await asyncio.gather(*size_tasks, return_exceptions=True)
536
-
559
+
537
560
  for result in results:
538
561
  if not isinstance(result, Exception):
539
562
  total_size += result.content_length
@@ -604,7 +627,9 @@ class OSSUtilsAsync:
604
627
  if await self.is_object(prefix):
605
628
  # 如果是单个对象,直接获取其最后修改时间
606
629
  try:
607
- meta = await self._run_in_thread(self.oss_bucket.get_object_meta, prefix)
630
+ meta = await self._run_in_thread(
631
+ self.oss_bucket.get_object_meta, prefix
632
+ )
608
633
  return format_time(meta.last_modified)
609
634
  except Exception:
610
635
  return ""
@@ -617,18 +642,21 @@ class OSSUtilsAsync:
617
642
  for obj in object_list:
618
643
  task = self._run_in_thread(self.oss_bucket.get_object_meta, obj.key)
619
644
  meta_tasks.append(task)
620
-
645
+
621
646
  # 等待所有获取元数据操作完成
622
647
  results = await asyncio.gather(*meta_tasks, return_exceptions=True)
623
-
648
+
624
649
  # 找到最后修改的对象
625
650
  latest_time = 0
626
651
  latest_meta = None
627
652
  for result in results:
628
- if not isinstance(result, Exception) and result.last_modified > latest_time:
653
+ if (
654
+ not isinstance(result, Exception)
655
+ and result.last_modified > latest_time
656
+ ):
629
657
  latest_time = result.last_modified
630
658
  latest_meta = result
631
-
659
+
632
660
  if latest_meta:
633
661
  return format_time(latest_meta.last_modified)
634
662
 
@@ -643,7 +671,22 @@ class OSSUtilsAsync:
643
671
  print(f"检查路径存在性时出错: {e}")
644
672
  return False
645
673
 
674
+ async def copy_object(self, prefix, target_prefix):
675
+ """复制对象"""
676
+ try:
677
+ await self._run_in_thread(
678
+ self.oss_bucket.copy_object,
679
+ source_bucket_name=self.bucket_name,
680
+ source_key=prefix,
681
+ target_key=target_prefix,
682
+ )
683
+ return True
684
+ except Exception as e:
685
+ return False
686
+
646
687
  async def generate_presigned_url(self, key, expires_in=3600):
647
688
  """生成预签名URL"""
648
689
  # 使用线程池运行oss2的同步操作
649
- return await self._run_in_thread(self.oss_bucket.sign_url, "GET", key, expires_in)
690
+ return await self._run_in_thread(
691
+ self.oss_bucket.sign_url, "GET", key, expires_in
692
+ )
@@ -3,7 +3,7 @@ ArrayLib 脚本工具包
3
3
  包含各种实用的命令行工具和脚本
4
4
  """
5
5
 
6
- __version__ = "1.0.3"
6
+ __version__ = "1.0.4"
7
7
  __author__ = "Lu qi"
8
8
 
9
9
  # 导出主要的脚本函数
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pixelarraylib
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: PixelArray Python开发工具库 - 包含阿里云服务、数据库工具、装饰器、监控等功能
5
5
  Author-email: Lu qi <qi.lu@pixelarrayai.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pixelarraylib"
7
- version = "1.0.3"
7
+ version = "1.0.4"
8
8
  authors = [
9
9
  {name = "Lu qi", email = "qi.lu@pixelarrayai.com"},
10
10
  ]
File without changes
File without changes
File without changes
File without changes