funboost 41.6__py3-none-any.whl → 41.8__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 funboost might be problematic. Click here for more details.

funboost/__init__.py CHANGED
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "41.6"
16
+ __version__ = "41.8"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -61,4 +61,4 @@ from funboost.concurrent_pool.custom_threadpool_executor import show_current_thr
61
61
  # set_interrupt_signal_handler()
62
62
 
63
63
  # 有的包默认没加handlers,原始的日志不漂亮且不可跳转不知道哪里发生的。这里把warnning级别以上的日志默认加上handlers。
64
- # nb_log.get_logger(name='', log_level_int=30, log_filename='pywarning.log')
64
+ # nb_log.get_logger(name='', log_level_int=30, _log_filename='pywarning.log')
funboost/__init__old.py CHANGED
@@ -25,7 +25,7 @@ from funboost.utils import nb_print, patch_print, LogManager, get_logger, Logger
25
25
 
26
26
 
27
27
  # 有的包默认没加handlers,原始的日志不漂亮且不可跳转不知道哪里发生的。这里把warnning级别以上的日志默认加上handlers。
28
- # nb_log.get_logger(name='', log_level_int=30, log_filename='pywarning.log')
28
+ # nb_log.get_logger(name='', log_level_int=30, _log_filename='pywarning.log')
29
29
 
30
30
 
31
31
  class Booster(LoggerMixin):
@@ -159,6 +159,10 @@ class AsyncPoolExecutorGtPy310(AsyncPoolExecutorLtPy310):
159
159
 
160
160
  AsyncPoolExecutor = AsyncPoolExecutorLtPy310 if sys.version_info.minor < 10 else AsyncPoolExecutorGtPy310
161
161
 
162
+ if sys.platform == "darwin": # mac 上会出错
163
+ import selectors
164
+ selectors.DefaultSelector = selectors.PollSelector
165
+
162
166
  if __name__ == '__main__':
163
167
  def test_async_pool_executor():
164
168
  from funboost.concurrent_pool import CustomThreadPoolExecutor as ThreadPoolExecutor
@@ -164,7 +164,11 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
164
164
  self._last_timestamp_print_msg_num = 0
165
165
 
166
166
  self._result_persistence_helper: ResultPersistenceHelper
167
- self.consumer_params.broker_exclusive_config.update(self.BROKER_EXCLUSIVE_CONFIG_DEFAULT)
167
+ self._check_broker_exclusive_config()
168
+ broker_exclusive_config_merge = dict()
169
+ broker_exclusive_config_merge.update(self.BROKER_EXCLUSIVE_CONFIG_DEFAULT)
170
+ broker_exclusive_config_merge.update(self.consumer_params.broker_exclusive_config)
171
+ self.consumer_params.broker_exclusive_config = broker_exclusive_config_merge
168
172
 
169
173
  self._stop_flag = None
170
174
  self._pause_flag = None # 暂停消费标志,从reids读取
@@ -201,11 +205,11 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
201
205
  'code_filename': Path(self.consuming_function.__code__.co_filename).as_posix()
202
206
  }
203
207
 
204
- self._check_broker_exclusive_config()
208
+
205
209
  self._has_start_delay_task_scheduler = False
206
210
  self._consuming_function_is_asyncio = inspect.iscoroutinefunction(self.consuming_function)
207
211
  self.custom_init()
208
- # develop_logger.warning(consumer_params.log_filename)
212
+ # develop_logger.warning(consumer_params._log_filename)
209
213
  self.publisher_params = PublisherParams(queue_name=consumer_params.queue_name, consuming_function=consumer_params.consuming_function,
210
214
  broker_kind=self.BROKER_KIND, log_level=consumer_params.log_level,
211
215
  logger_prefix=consumer_params.logger_prefix,
@@ -213,7 +217,6 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
213
217
  log_filename=consumer_params.log_filename,
214
218
  broker_exclusive_config=self.consumer_params.broker_exclusive_config)
215
219
  if is_main_process:
216
- print(self.consumer_params.get_str_dict())
217
220
  self.logger.info(f'{self.queue_name} consumer 的消费者配置:\n {self.consumer_params.json_str_value()}')
218
221
  atexit.register(self.join_shedual_task_thread)
219
222
 
@@ -232,11 +235,12 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
232
235
  self.logger.info(f'队列 {self.queue_name} 的日志写入到 {nb_log_config_default.LOG_PATH} 文件夹的 {log_filename} 和 {nb_log.generate_error_file_name(log_filename)} 文件中')
233
236
 
234
237
  def _check_broker_exclusive_config(self):
235
- broker_exclusive_config_keys = self.consumer_params.broker_exclusive_config.keys()
236
- if set(self.consumer_params.broker_exclusive_config.keys()).issubset(broker_exclusive_config_keys):
237
- self.logger.info(f'当前消息队列中间件能支持特殊独有配置 {self.consumer_params.broker_exclusive_config.keys()}')
238
- else:
239
- self.logger.warning(f'当前消息队列中间件含有不支持的特殊配置 {self.consumer_params.broker_exclusive_config.keys()},能支持的特殊独有配置包括 {broker_exclusive_config_keys}')
238
+ broker_exclusive_config_keys = self.BROKER_EXCLUSIVE_CONFIG_DEFAULT.keys()
239
+ if self.consumer_params.broker_exclusive_config:
240
+ if set(self.consumer_params.broker_exclusive_config.keys()).issubset(broker_exclusive_config_keys):
241
+ self.logger.info(f'当前消息队列中间件能支持特殊独有配置 {self.consumer_params.broker_exclusive_config.keys()}')
242
+ else:
243
+ self.logger.warning(f'当前消息队列中间件含有不支持的特殊配置 {self.consumer_params.broker_exclusive_config.keys()},能支持的特殊独有配置包括 {broker_exclusive_config_keys}')
240
244
 
241
245
  def _check_monkey_patch(self):
242
246
  if self.consumer_params.concurrent_mode == ConcurrentModeEnum.GEVENT:
@@ -175,7 +175,7 @@ Transport Options
175
175
  self._middware_name = self.kombu_url.split(":")[0]
176
176
  # logger_name = f'{self.consumer_params.logger_prefix}{self.__class__.__name__}--{self._middware_name}--{self._queue_name}'
177
177
  # self.logger = get_logger(logger_name, log_level_int=self.consumer_params.log_level,
178
- # log_filename=f'{logger_name}.log' if self.consumer_params.create_logger_file else None,
178
+ # _log_filename=f'{logger_name}.log' if self.consumer_params.create_logger_file else None,
179
179
  # formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER,
180
180
  # ) #
181
181
  if self.kombu_url.startswith('filesystem://'):
@@ -57,14 +57,13 @@ class BaseJsonAbleModel(BaseModel):
57
57
  try:
58
58
  return json.dumps(self.get_str_dict(), ensure_ascii=False, )
59
59
  except TypeError as e:
60
- return self.get_str_dict()
61
-
60
+ return str(self.get_str_dict())
62
61
 
63
62
  def json_pre(self):
64
63
  try:
65
64
  return json.dumps(self.get_str_dict(), ensure_ascii=False, indent=4)
66
65
  except TypeError as e:
67
- return self.get_str_dict()
66
+ return str(self.get_str_dict())
68
67
 
69
68
  def update_from_dict(self, dictx: dict):
70
69
  for k, v in dictx.items():
@@ -49,7 +49,7 @@ class KombuPublisher(AbstractPublisher, ):
49
49
  self._kombu_broker_url_prefix = self.kombu_url.split(":")[0]
50
50
  # logger_name = f'{self._logger_prefix}{self.__class__.__name__}--{self._kombu_broker_url_prefix}--{self._queue_name}'
51
51
  # self.logger = get_logger(logger_name, log_level_int=self._log_level_int,
52
- # log_filename=f'{logger_name}.log' if self._is_add_file_handler else None,
52
+ # _log_filename=f'{logger_name}.log' if self._is_add_file_handler else None,
53
53
  # formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER,
54
54
  # ) #
55
55
  if self.kombu_url.startswith('filesystem://'):
@@ -37,7 +37,7 @@ class RedisPriorityPublisher(FlushRedisQueueMixin,AbstractPublisher, RedisMixin,
37
37
 
38
38
  def concrete_realization_of_publish(self, msg):
39
39
  queue_name = self.build_queue_name_by_msg(msg)
40
- self.logger.debug([queue_name, msg])
40
+ # self.logger.debug([queue_name, msg])
41
41
  self.redis_db_frame.rpush(queue_name, msg)
42
42
 
43
43
 
@@ -30,7 +30,7 @@ class RedisManager(object):
30
30
  self._key = (host, port, db, username, password,)
31
31
  if self._key not in self.__class__._redis_db__conn_map:
32
32
  self.__class__._redis_db__conn_map[self._key] = redis5.Redis(host=host, port=port, db=db, username=username,
33
- password=password, max_connections=100, decode_responses=True)
33
+ password=password, max_connections=1000, decode_responses=True)
34
34
  self.redis = self.__class__._redis_db__conn_map[self._key]
35
35
 
36
36
  def get_redis(self) -> redis5.Redis:
@@ -47,7 +47,7 @@ class AioRedisManager(object):
47
47
  self._key = (host, port, db, username, password,)
48
48
  if self._key not in self.__class__._redis_db__conn_map:
49
49
  self.__class__._redis_db__conn_map[self._key] = AioRedis(host=host, port=port, db=db, username=username,
50
- password=password, max_connections=100, decode_responses=True)
50
+ password=password, max_connections=1000, decode_responses=True)
51
51
  self.redis = self.__class__._redis_db__conn_map[self._key]
52
52
 
53
53
  def get_redis(self) -> AioRedis:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 41.6
3
+ Version: 41.8
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -1,5 +1,5 @@
1
- funboost/__init__.py,sha256=fhdMHQTLhg07yPH679EEFbLR356gzEkHtxN-hXJ0UjI,3765
2
- funboost/__init__old.py,sha256=cSzw-ZQqtAAp5_-7eONXQT5fwz_JbZlRjDQPASDLUHk,20378
1
+ funboost/__init__.py,sha256=wL5RC_bz4TE1AJ0IFmrt7dW5XNYMZ1tqbSKiOF5I73Q,3766
2
+ funboost/__init__old.py,sha256=07A1MLsxLtuRQQOIfDyphddOwNBrGe34enoHWAnjV14,20379
3
3
  funboost/__main__.py,sha256=-6Nogi666Y0LN8fVm3JmHGTOk8xEGWvotW_GDbSaZME,1065
4
4
  funboost/constant.py,sha256=VGwOZGP7U9Hq5--gPGT7mZFQ-a171gcxFYupJOMw7Y4,7162
5
5
  funboost/funboost_config_deafult.py,sha256=Ux1mWZeJdiJSlza_bubHWcaB9sLeZSp-4RQulWxVp3U,5295
@@ -14,7 +14,7 @@ funboost/assist/rq_windows_worker.py,sha256=jQlGmU0FWPVoKVP8cyuwTuAca9VfSd75F5Qw
14
14
  funboost/beggar_version_implementation/beggar_redis_consumer.py,sha256=x5cH6Vc3_UooY2oPeC9MlpMewrGd9qXCx6gEWi1fGa0,3941
15
15
  funboost/concurrent_pool/__init__.py,sha256=Zxgv0ZvtbkfGKu9_gJdYMcV_LXXtqg9DS3rixcf0Imk,938
16
16
  funboost/concurrent_pool/async_helper.py,sha256=iyb0Jcjyx-vkUGC_saSUWqN657kcR5K7B-L_SB6cDCE,3256
17
- funboost/concurrent_pool/async_pool_executor.py,sha256=bEF8_mmKnfiNJiGOrt0ggsht4PquGp-AHeWcmKCjJ7U,7379
17
+ funboost/concurrent_pool/async_pool_executor.py,sha256=YJskUo7R7yHfLpXj2IkV18_Ag76qseeYx2ksKLXad4s,7513
18
18
  funboost/concurrent_pool/base_pool_type.py,sha256=h3xcadufMAf49CoNe5VkUyIxlniMeNtDjadqB5IsiKA,194
19
19
  funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py,sha256=pWqpKAP0Z0cuHdSHJ5ti6EpNndnIoYkPE6IOl4BvbJw,4775
20
20
  funboost/concurrent_pool/bounded_processpoolexcutor_py36.py,sha256=CMRSjwnUAhNT2fj44SVNEYRehprlxjQADYkgw9hTVlw,3063
@@ -33,7 +33,7 @@ funboost/concurrent_pool/backup/async_pool_executor0223.py,sha256=RVUZiylUvpTm6U
33
33
  funboost/concurrent_pool/backup/async_pool_executor_back.py,sha256=KL6zEQaa1KkZOlAO85mCC1gwLm-YC5Ghn21IUom0UKM,9598
34
34
  funboost/concurrent_pool/backup/async_pool_executor_janus.py,sha256=OHMWJ9l3EYTpPpcrPrGGKd4K0tmQ2PN8HiX0Dta0EOo,5728
35
35
  funboost/consumers/__init__.py,sha256=ZXY_6Kut1VYNQiF5aWEgIWobsW1ht9YUP0TdRZRWFqI,126
36
- funboost/consumers/base_consumer.py,sha256=I3EQmh_7jnGaVmWVh8fPXB3SKDfyVYzzMsIO-uhLdi0,72707
36
+ funboost/consumers/base_consumer.py,sha256=457lJ2nvys7BXg2ZjO5w-4pxgHOWxRYHcJWlgYHTNQs,72931
37
37
  funboost/consumers/celery_consumer.py,sha256=W25gbGyimf8KG5lLbtgar3Ix7F3O4cIRBLtRq8nJ0AE,9216
38
38
  funboost/consumers/confirm_mixin.py,sha256=eY6fNwx51Hn4bQSYRjyTRwOqfCGsikVnd2Ga_Ep31N4,6062
39
39
  funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
@@ -43,7 +43,7 @@ funboost/consumers/httpsqs_consumer.py,sha256=oqGpAaA29f96i9FIah2dQy7eW5tFVBY82U
43
43
  funboost/consumers/huey_consumer.py,sha256=cW10ZPxdZQzUuJwdqQpJIRPTj2vCbZS0uXFJ7L8bpa4,1843
44
44
  funboost/consumers/kafka_consumer.py,sha256=x1nu5cKnq6tjOdUwluEhNMAtMjJfTUyiWUhIOrUbuFA,4325
45
45
  funboost/consumers/kafka_consumer_manually_commit.py,sha256=yOMdLSrHoDUPAvCoxW0eMQApCG4to86Rv4PeKp5wyGM,9584
46
- funboost/consumers/kombu_consumer.py,sha256=8hRlaSj-iHH2T4xbtUg4JyII6YrSD27HuduvzhYcN1E,10271
46
+ funboost/consumers/kombu_consumer.py,sha256=DGineDPCHYVfvSraFqOi3IKIKvsFvMGldA_Pwfr70Nk,10272
47
47
  funboost/consumers/local_python_queue_consumer.py,sha256=jNYohp7IW1d8BT8weHE_6R11fvMFnMOFd8HE7kW8_yg,1305
48
48
  funboost/consumers/memory_deque_consumer.py,sha256=hmd6DaEytYDVHfNaJp0eEBKXARshNiYiOnP55VypfLM,1276
49
49
  funboost/consumers/mongomq_consumer.py,sha256=eXqn3o3FFRwVAGIs-z67R8T616PMgBwgVzCtg2cTUXA,1194
@@ -82,7 +82,7 @@ funboost/core/active_cousumer_info_getter.py,sha256=09fEc-BTEIRfDDfHmOvKnMjLjtOy
82
82
  funboost/core/booster.py,sha256=_s-PRIYaMCZo7sO7vkR1Ijt_BymsIeuZcyQuFafaytI,13238
83
83
  funboost/core/exceptions.py,sha256=oXOEBBCoU8jJv1uyWrcItnGi778Hrx2c_tA5KAbRGy8,1201
84
84
  funboost/core/fabric_deploy_helper.py,sha256=KPjifNy1G1tDOT2eaR0X8hegot0HUk5vF-P1DnhxME4,8941
85
- funboost/core/func_params_model.py,sha256=JNrAAATuitTiA-JhMOLliTfO5m36rvm4qJpNYnzCKFU,17537
85
+ funboost/core/func_params_model.py,sha256=a9HePWb7PIPNbwaEh4HrCQ3SF26_Atx2mccwESVZlcg,17543
86
86
  funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3edPFO4Nde0ILFRReE,1764
87
87
  funboost/core/function_result_status_saver.py,sha256=wjDuRZAtZ92Gt3sIiBN6SDkj-NiNoMfPeEnomga_DPQ,8968
88
88
  funboost/core/helper_funs.py,sha256=SKSMKytJTOFQJsuMKWJ-_mQg6e_Bgpq1ANDzjjBAcio,1192
@@ -126,7 +126,7 @@ funboost/publishers/http_publisher.py,sha256=pS3z_AVqH6h4PAgqB7usihvzLJP5ZzfPKQR
126
126
  funboost/publishers/httpsqs_publisher.py,sha256=PS6h8-mn3wYFfMOsPt4tal8p0yZgYgrYYO9ZnIl9CwU,2737
127
127
  funboost/publishers/huey_publisher.py,sha256=9HBrsqTO61iPB1nI5fYOQNPuOaX4I4Wmb1BRNODAE_0,1118
128
128
  funboost/publishers/kafka_publisher.py,sha256=6yb7eW1zOV7zhvaJJonZN0_k4XLVSJ8-J_mZt2MNfXA,2163
129
- funboost/publishers/kombu_publisher.py,sha256=8Y_cv5uG1COxDvf2whIMKR1GCQgV1AfWg1w7gKJYXkA,5414
129
+ funboost/publishers/kombu_publisher.py,sha256=Z0JKF_-xKJSTc21jqhIwphDUHUPO2X3wVojt-rHhDlM,5415
130
130
  funboost/publishers/local_python_queue_publisher.py,sha256=Do0eE2smI81jNxNiRcMP8lpZcekAfjgwMNMdEagQzVA,3555
131
131
  funboost/publishers/meomory_deque_publisher.py,sha256=0q6WKQ8ohnhlXDgXkxWGsImZCnwB12nFD6kUjldRQiw,1303
132
132
  funboost/publishers/mongomq_publisher.py,sha256=xQr3KMQEKksX4OEvzPlCl8v1VeBHaoZtYw2QujOUyGo,1874
@@ -142,7 +142,7 @@ funboost/publishers/rabbitmq_pika_publisher.py,sha256=QygZv96tYmfJcs8Dukv3J_x134
142
142
  funboost/publishers/rabbitmq_rabbitpy_publisher.py,sha256=GGXPKxE6-mAjqMIKqwvR9d7L-zuJQcQoU9uRsQLNGas,1953
143
143
  funboost/publishers/redis_publisher.py,sha256=EDnQSt73FE2PGq0WHyvsMuaoD_6wp_tuZveWrMF7iLY,3439
144
144
  funboost/publishers/redis_publisher_lpush.py,sha256=xEWuCTtbDcKFLTxGrECrbIVapFfUwqX2-GHenMClu-Q,278
145
- funboost/publishers/redis_publisher_priority.py,sha256=suZLQj3pWA2i9JGOMbh_2c6iXoOcQ4tShNulf934yaM,2203
145
+ funboost/publishers/redis_publisher_priority.py,sha256=7qiGBZN4k-YQ1EML8kAXCYlpcOC8Yl5qNfPUeMgevlw,2205
146
146
  funboost/publishers/redis_publisher_simple.py,sha256=CxUqi2_ykOhKhQFByNJ8nUaFjjchA-YzSE72ng1_OiM,760
147
147
  funboost/publishers/redis_pubsub_publisher.py,sha256=GA3TzN91OT2d-Ei76rp_Sd3Au8IcihFupo36izB8dis,737
148
148
  funboost/publishers/redis_queue_flush_mixin.py,sha256=d-AgJiCuX25mOwP2gMorGbXCaLuFpqWO4jAJXJDBfk0,732
@@ -176,7 +176,7 @@ funboost/utils/monkey_patches.py,sha256=vGmtPuTwNLbS8T3gpufSC_cD8_Vnp85roZrCpJZU
176
176
  funboost/utils/mqtt_util.py,sha256=BfCmyYwI-B8VL9499_IuYlJDCbv6ZhwyWThMf8dANOU,3199
177
177
  funboost/utils/paramiko_util.py,sha256=pu67zkgptqNSV9m2Lznezb3zF1AFYvkWJp_6DVKFSPU,4901
178
178
  funboost/utils/rabbitmq_factory.py,sha256=ifDCn2RxSGL4MccmktJc5FYQhAcboCgHBlEo3WGpq3g,2910
179
- funboost/utils/redis_manager.py,sha256=fTZIzqpV1CTYdBznVYUykosVyMI6z4cc6zN5-Zoc3A0,3655
179
+ funboost/utils/redis_manager.py,sha256=iG3e9k3oedtKcGwDnjKA0hUFsk_MSlvVM2C3m3K97Y4,3657
180
180
  funboost/utils/redis_manager_old.py,sha256=c3RBXN6dM3kjVBqkCdotpZuYmFs4d9emfp5iJgC61Us,5516
181
181
  funboost/utils/resource_monitoring.py,sha256=vf1htYa3a4wlMfQqksvIINMw8laiXwG5N8NXU2Zm3qQ,5532
182
182
  funboost/utils/restart_python.py,sha256=bFbV0_24ajL8hBwVRLxWe9v9kTwiX1fGLhXRroNnmgQ,1418
@@ -259,9 +259,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
259
259
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
260
260
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
261
261
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
262
- funboost-41.6.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
263
- funboost-41.6.dist-info/METADATA,sha256=kwpX0Ed-oRRuTSrPQNm9Pq_e8KFvO20CpfbLyldnbV4,30484
264
- funboost-41.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
265
- funboost-41.6.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
266
- funboost-41.6.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
267
- funboost-41.6.dist-info/RECORD,,
262
+ funboost-41.8.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
263
+ funboost-41.8.dist-info/METADATA,sha256=i1u35cNu1xju2Z_I2vHM9-EyDcYFHOd5ioorS44pgOU,30484
264
+ funboost-41.8.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
265
+ funboost-41.8.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
266
+ funboost-41.8.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
267
+ funboost-41.8.dist-info/RECORD,,