From 98e03a46f229b8048aed09d4b1dabf2d382a8a9e Mon Sep 17 00:00:00 2001 From: Filip Strand Date: Mon, 6 Oct 2025 07:41:14 +0200 Subject: [PATCH] Add Qwen Image support (#269) --- README.md | 12 +- pyproject.toml | 12 +- src/mflux/callbacks/callback_manager.py | 22 +- src/mflux/callbacks/instances/memory_saver.py | 22 +- .../callbacks/instances/stepwise_handler.py | 12 +- .../community/concept_attention/__init__.py | 1 - src/mflux/concept.py | 4 +- src/mflux/concept_from_image.py | 4 +- src/mflux/config/model_config.py | 17 + src/mflux/generate.py | 13 +- src/mflux/generate_controlnet.py | 4 +- src/mflux/generate_depth.py | 4 +- src/mflux/generate_fill.py | 4 +- src/mflux/generate_in_context_catvton.py | 4 +- src/mflux/generate_in_context_dev.py | 6 +- src/mflux/generate_in_context_edit.py | 6 +- src/mflux/generate_kontext.py | 4 +- src/mflux/generate_redux.py | 4 +- src/mflux/latent_creator/latent_creator.py | 6 +- src/mflux/lora_library.py | 2 +- .../{community => models/common}/__init__.py | 0 .../common/lora}/__init__.py | 0 .../common/lora/download}/__init__.py | 0 .../download/lora_huggingface_downloader.py} | 55 +- .../common/lora/layer}/__init__.py | 0 .../lora/layer}/fused_linear_lora_layer.py | 2 +- .../common/lora/layer}/linear_lora_layer.py | 0 .../common/lora/mapping}/__init__.py | 0 .../models/common/lora/mapping/lora_loader.py | 248 ++ .../common/lora/mapping/lora_mapping.py | 17 + src/mflux/models/depth_pro/depth_pro.py | 4 +- .../models/depth_pro/depth_pro_initializer.py | 4 +- .../depth_pro/model}/__init__.py | 0 .../depth_pro/{ => model}/conv_utils.py | 0 .../{ => model}/depth_pro_encoder.py | 6 +- .../depth_pro/{ => model}/depth_pro_model.py | 6 +- .../depth_pro/{ => model}/depth_pro_util.py | 0 .../depth_pro/model/dino_v2}/__init__.py | 0 .../{ => model}/dino_v2/attention.py | 0 .../dino_v2/dino_vision_transformer.py | 4 +- .../{ => model}/dino_v2/layer_scale.py | 0 .../depth_pro/{ => model}/dino_v2/mlp.py | 0 .../{ => model}/dino_v2/patch_embed.py | 0 .../{ => model}/dino_v2/transformer_block.py | 6 +- .../{ => model}/feature_fusion_block_2d.py | 4 +- .../models/depth_pro/{ => model}/fov_head.py | 2 +- .../{ => model}/multires_conv_decoder.py | 4 +- .../depth_pro/{ => model}/residual_block.py | 2 +- .../depth_pro/{ => model}/upsample_block.py | 2 +- .../depth_pro/weights}/__init__.py | 0 .../{ => weights}/weight_handler_depth_pro.py | 4 +- .../state => models/flux}/__init__.py | 0 .../{ => models}/flux/flux_initializer.py | 41 +- .../flux/model}/__init__.py | 0 .../flux/model/flux_text_encoder}/__init__.py | 0 .../clip_encoder}/__init__.py | 0 .../clip_encoder/clip_embeddings.py | 2 +- .../clip_encoder/clip_encoder.py | 2 +- .../clip_encoder/clip_encoder_layer.py | 4 +- .../clip_encoder/clip_mlp.py | 0 .../clip_encoder/clip_sdpa_attention.py | 0 .../clip_encoder/clip_text_model.py | 4 +- .../clip_encoder/encoder_clip.py | 4 +- .../flux_text_encoder}/prompt_encoder.py | 8 +- .../flux_text_encoder/t5_encoder}/__init__.py | 0 .../t5_encoder/t5_attention.py | 6 +- .../flux_text_encoder}/t5_encoder/t5_block.py | 4 +- .../t5_encoder/t5_dense_relu_dense.py | 0 .../t5_encoder/t5_encoder.py | 4 +- .../t5_encoder/t5_feed_forward.py | 6 +- .../t5_encoder/t5_layer_norm.py | 0 .../t5_encoder/t5_self_attention.py | 0 .../flux/model/flux_transformer}/__init__.py | 0 .../ada_layer_norm_continuous.py | 0 .../flux_transformer}/ada_layer_norm_zero.py | 0 .../ada_layer_norm_zero_single.py | 0 .../flux_transformer/common}/__init__.py | 0 .../common/attention_utils.py | 98 + .../model/flux_transformer}/embed_nd.py | 0 .../model/flux_transformer}/feed_forward.py | 0 .../flux_transformer}/guidance_embedder.py | 0 .../flux_transformer}/joint_attention.py | 2 +- .../joint_transformer_block.py | 6 +- .../single_block_attention.py | 2 +- .../single_transformer_block.py | 6 +- .../model/flux_transformer}/text_embedder.py | 0 .../flux_transformer}/time_text_embed.py | 6 +- .../flux_transformer}/timestep_embedder.py | 0 .../model/flux_transformer}/transformer.py | 24 +- .../flux/model/flux_vae}/__init__.py | 0 .../flux/model/flux_vae/common}/__init__.py | 0 .../model/flux_vae}/common/attention.py | 0 .../model/flux_vae}/common/resnet_block_2d.py | 0 .../model/flux_vae}/common/unet_mid_block.py | 4 +- .../model/flux_vae/decoder}/__init__.py | 0 .../model/flux_vae}/decoder/conv_in.py | 0 .../model/flux_vae}/decoder/conv_norm_out.py | 0 .../model/flux_vae}/decoder/conv_out.py | 0 .../model/flux_vae}/decoder/decoder.py | 14 +- .../flux_vae}/decoder/up_block_1_or_2.py | 4 +- .../model/flux_vae}/decoder/up_block_3.py | 4 +- .../model/flux_vae}/decoder/up_block_4.py | 2 +- .../model/flux_vae}/decoder/up_sampler.py | 0 .../model/flux_vae/encoder}/__init__.py | 0 .../model/flux_vae}/encoder/conv_in.py | 0 .../model/flux_vae}/encoder/conv_norm_out.py | 0 .../model/flux_vae}/encoder/conv_out.py | 0 .../model/flux_vae}/encoder/down_block_1.py | 4 +- .../model/flux_vae}/encoder/down_block_2.py | 4 +- .../model/flux_vae}/encoder/down_block_3.py | 4 +- .../model/flux_vae}/encoder/down_block_4.py | 2 +- .../model/flux_vae}/encoder/down_sampler.py | 0 .../model/flux_vae}/encoder/encoder.py | 16 +- .../{vae => flux/model/flux_vae}/vae.py | 4 +- .../model/redux_encoder}/__init__.py | 0 .../model}/redux_encoder/redux_encoder.py | 0 .../siglip_vision_transformer}/__init__.py | 0 .../siglip_encoder.py | 2 +- .../siglip_encoder_layer.py | 4 +- .../siglip_vision_transformer/siglip_mlp.py | 0 ...iglip_multi_head_attention_pooling_head.py | 2 +- .../siglip_sdpa_attention.py | 0 .../siglip_vision_embeddings.py | 0 .../siglip_vision_transformer.py | 6 +- .../tokenizer}/__init__.py | 0 .../flux}/tokenizer/clip_tokenizer.py | 0 .../flux}/tokenizer/t5_tokenizer.py | 0 .../flux}/tokenizer/tokenizer_handler.py | 4 +- .../t5_encoder => flux/variants}/__init__.py | 0 .../variants/concept_attention/__init__.py | 1 + .../concept_attention/attention_data.py | 4 +- .../concept_attention/concept_util.py | 5 +- .../concept_attention/flux_concept.py | 18 +- .../flux_concept_from_image.py | 16 +- .../joint_attention_concept.py | 2 +- .../joint_transformer_block_concept.py | 8 +- .../concept_attention/transformer_concept.py | 26 +- .../variants/controlnet}/__init__.py | 0 .../variants}/controlnet/controlnet_util.py | 2 +- .../variants}/controlnet/flux_controlnet.py | 18 +- .../controlnet/transformer_controlnet.py | 18 +- .../controlnet/weight_handler_controlnet.py | 6 +- .../variants/depth}/__init__.py | 0 .../flux/variants}/depth/depth_util.py | 2 +- .../flux/variants}/depth/flux_depth.py | 14 +- .../variants/dreambooth}/__init__.py | 0 .../dreambooth/_example/images/01.jpeg | Bin .../dreambooth/_example/images/02.jpeg | Bin .../dreambooth/_example/images/03.jpeg | Bin .../dreambooth/_example/images/04.jpeg | Bin .../dreambooth/_example/images/05.jpeg | Bin .../variants}/dreambooth/_example/train.json | 0 .../variants/dreambooth/dataset}/__init__.py | 0 .../variants}/dreambooth/dataset/batch.py | 0 .../variants}/dreambooth/dataset/dataset.py | 8 +- .../dataset/dreambooth_preprocessing.py | 2 +- .../variants}/dreambooth/dataset/iterator.py | 8 +- .../flux/variants}/dreambooth/dreambooth.py | 12 +- .../dreambooth/dreambooth_initializer.py | 16 +- .../dreambooth/lora_layers}/__init__.py | 0 .../dreambooth/lora_layers/lora_layers.py | 20 +- .../dreambooth/optimization}/__init__.py | 0 .../_loss_derivation/dreambooth_loss.pdf | Bin .../_loss_derivation/dreambooth_loss.tex | 0 .../optimization/dreambooth_loss.py | 5 +- .../dreambooth/optimization/optimizer.py | 4 +- .../variants/dreambooth/state}/__init__.py | 0 .../dreambooth/state/training_spec.py | 2 +- .../dreambooth/state/training_state.py | 12 +- .../variants}/dreambooth/state/zip_util.py | 0 .../dreambooth/statistics}/__init__.py | 0 .../dreambooth/statistics/plotter.py | 4 +- .../dreambooth/statistics/statistics.py | 4 +- .../models/flux/variants/fill/__init__.py | 0 .../flux/variants}/fill/flux_fill.py | 14 +- .../flux/variants}/fill/mask_util.py | 2 +- .../flux/variants/in_context/__init__.py | 0 .../in_context/flux_in_context_dev.py | 12 +- .../in_context/flux_in_context_fill.py | 14 +- .../variants/in_context/utils/__init__.py | 0 .../in_context/utils/in_context_loras.py | 5 +- .../in_context/utils/in_context_mask_util.py | 4 +- .../models/flux/variants/kontext/__init__.py | 0 .../flux/variants}/kontext/flux_kontext.py | 14 +- .../flux/variants/kontext/utils/__init__.py | 0 .../variants}/kontext/utils/kontext_util.py | 0 .../models/flux/variants/redux/__init__.py | 0 .../flux/variants}/redux/flux_redux.py | 22 +- .../flux/variants}/redux/redux_util.py | 4 +- .../variants}/redux/weight_handler_redux.py | 4 +- .../models/flux/variants/txt2img/__init__.py | 0 .../flux/variants/txt2img}/flux.py | 15 +- src/mflux/models/flux/weights/__init__.py | 0 .../flux}/weights/lora_converter.py | 0 .../{ => models/flux}/weights/model_saver.py | 0 .../flux}/weights/weight_handler.py | 10 +- .../flux}/weights/weight_handler_lora.py | 8 +- .../{ => models/flux}/weights/weight_util.py | 8 +- src/mflux/models/qwen/__init__.py | 0 src/mflux/models/qwen/model/__init__.py | 0 .../qwen/model/qwen_text_encoder/__init__.py | 1 + .../model/qwen_text_encoder/qwen_attention.py | 143 + .../model/qwen_text_encoder/qwen_encoder.py | 74 + .../qwen_text_encoder/qwen_encoder_layer.py | 54 + .../qwen/model/qwen_text_encoder/qwen_mlp.py | 17 + .../qwen_text_encoder/qwen_prompt_encoder.py | 34 + .../model/qwen_text_encoder/qwen_rms_norm.py | 17 + .../qwen/model/qwen_text_encoder/qwen_rope.py | 36 + .../qwen_text_encoder/qwen_text_encoder.py | 70 + .../qwen/model/qwen_transformer/__init__.py | 0 .../model/qwen_transformer/qwen_attention.py | 150 + .../qwen_transformer/qwen_feed_forward.py | 15 + .../model/qwen_transformer/qwen_layer_norm.py | 21 + .../qwen/model/qwen_transformer/qwen_rope.py | 119 + .../qwen_transformer/qwen_time_text_embed.py | 17 + .../qwen_timestep_embedding.py | 14 + .../model/qwen_transformer/qwen_timesteps.py | 21 + .../qwen_transformer/qwen_transformer.py | 109 + .../qwen_transformer_block.py | 76 + .../models/qwen/model/qwen_vae/__init__.py | 0 .../qwen_vae/qwen_image_attention_block_3d.py | 41 + .../qwen_vae/qwen_image_causal_conv_3d.py | 48 + .../model/qwen_vae/qwen_image_decoder_3d.py | 32 + .../qwen_vae/qwen_image_down_block_3d.py | 26 + .../model/qwen_vae/qwen_image_encoder_3d.py | 71 + .../model/qwen_vae/qwen_image_mid_block_3d.py | 26 + .../model/qwen_vae/qwen_image_res_block_3d.py | 30 + .../model/qwen_vae/qwen_image_resample_3d.py | 50 + .../model/qwen_vae/qwen_image_rms_norm.py | 33 + .../model/qwen_vae/qwen_image_up_block_3d.py | 26 + .../models/qwen/model/qwen_vae/qwen_vae.py | 32 + src/mflux/models/qwen/qwen_initializer.py | 74 + src/mflux/models/qwen/tokenizer/__init__.py | 0 .../models/qwen/tokenizer/qwen_tokenizer.py | 23 + .../qwen/tokenizer/qwen_tokenizer_handler.py | 47 + src/mflux/models/qwen/variants/__init__.py | 0 .../models/qwen/variants/txt2img/__init__.py | 0 .../qwen/variants/txt2img/qwen_image.py | 175 + src/mflux/models/qwen/weights/__init__.py | 0 .../models/qwen/weights/qwen_lora_mapping.py | 164 + .../qwen/weights/qwen_weight_handler.py | 740 +++++ .../models/qwen/weights/qwen_weight_util.py | 62 + .../transformer/common/attention_utils.py | 59 - src/mflux/post_processing/generated_image.py | 5 +- src/mflux/post_processing/image_util.py | 4 +- src/mflux/save.py | 2 +- src/mflux/train.py | 4 +- src/mflux/{ => ui/cli}/completions/README.md | 0 .../{ => ui/cli}/completions/__init__.py | 0 .../{ => ui/cli}/completions/generator.py | 2 +- src/mflux/{ => ui/cli}/completions/install.py | 2 +- src/mflux/ui/cli/parsers.py | 5 +- src/mflux/ui/defaults.py | 3 +- src/mflux/ui/prompt_utils.py | 5 + src/mflux/upscale.py | 4 +- src/mflux/{weights => utils}/download.py | 0 src/mflux/{weights => utils}/lora_library.py | 0 .../{weights => utils}/quantization_util.py | 21 +- .../test_lora_library_integration.py | 2 +- tests/depth/test_depth_pro.py | 12 +- tests/dreambooth/config/train.json | 2 +- .../test_dreambooth_dataset_iterator.py | 6 +- tests/dreambooth/test_resume_training.py | 8 +- .../dreambooth/test_train_and_load_weights.py | 8 +- .../image_generation_concept_test_helper.py | 4 +- ...image_generation_controlnet_test_helper.py | 2 +- .../image_generation_depth_test_helper.py | 2 +- .../image_generation_fill_test_helper.py | 2 +- .../image_generation_ic_edit_test_helper.py | 4 +- ...image_generation_in_context_test_helper.py | 4 +- .../image_generation_kontext_test_helper.py | 2 +- .../image_generation_redux_test_helper.py | 2 +- .../helpers/image_generation_test_helper.py | 64 +- tests/image_generation/test_generate_image.py | 57 + tests/model_config/test_model_config.py | 27 + tests/model_saving/test_model_saving.py | 4 +- tests/model_saving/test_model_saving_lora.py | 2 +- tests/resources/reference_qwen_img2img.png | Bin 0 -> 333111 bytes tests/resources/reference_qwen_lora.png | Bin 0 -> 283115 bytes tests/resources/reference_qwen_txt2img.png | Bin 0 -> 290364 bytes tests/weights/test_lora_library.py | 2 +- uv.lock | 2880 +++++++++-------- 282 files changed, 5249 insertions(+), 1866 deletions(-) delete mode 100644 src/mflux/community/concept_attention/__init__.py rename src/mflux/{community => models/common}/__init__.py (100%) rename src/mflux/{community/in_context => models/common/lora}/__init__.py (100%) rename src/mflux/{community/in_context/utils => models/common/lora/download}/__init__.py (100%) rename src/mflux/{weights/weight_handler_lora_huggingface.py => models/common/lora/download/lora_huggingface_downloader.py} (53%) rename src/mflux/{controlnet => models/common/lora/layer}/__init__.py (100%) rename src/mflux/{dreambooth/lora_layers => models/common/lora/layer}/fused_linear_lora_layer.py (88%) rename src/mflux/{dreambooth/lora_layers => models/common/lora/layer}/linear_lora_layer.py (100%) rename src/mflux/{dreambooth => models/common/lora/mapping}/__init__.py (100%) create mode 100644 src/mflux/models/common/lora/mapping/lora_loader.py create mode 100644 src/mflux/models/common/lora/mapping/lora_mapping.py rename src/mflux/{dreambooth/dataset => models/depth_pro/model}/__init__.py (100%) rename src/mflux/models/depth_pro/{ => model}/conv_utils.py (100%) rename src/mflux/models/depth_pro/{ => model}/depth_pro_encoder.py (95%) rename src/mflux/models/depth_pro/{ => model}/depth_pro_model.py (70%) rename src/mflux/models/depth_pro/{ => model}/depth_pro_util.py (100%) rename src/mflux/{dreambooth/lora_layers => models/depth_pro/model/dino_v2}/__init__.py (100%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/attention.py (100%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/dino_vision_transformer.py (89%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/layer_scale.py (100%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/mlp.py (100%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/patch_embed.py (100%) rename src/mflux/models/depth_pro/{ => model}/dino_v2/transformer_block.py (75%) rename src/mflux/models/depth_pro/{ => model}/feature_fusion_block_2d.py (88%) rename src/mflux/models/depth_pro/{ => model}/fov_head.py (93%) rename src/mflux/models/depth_pro/{ => model}/multires_conv_decoder.py (93%) rename src/mflux/models/depth_pro/{ => model}/residual_block.py (94%) rename src/mflux/models/depth_pro/{ => model}/upsample_block.py (95%) rename src/mflux/{dreambooth/optimization => models/depth_pro/weights}/__init__.py (100%) rename src/mflux/models/depth_pro/{ => weights}/weight_handler_depth_pro.py (97%) rename src/mflux/{dreambooth/state => models/flux}/__init__.py (100%) rename src/mflux/{ => models}/flux/flux_initializer.py (82%) rename src/mflux/{dreambooth/statistics => models/flux/model}/__init__.py (100%) rename src/mflux/{flux => models/flux/model/flux_text_encoder}/__init__.py (100%) rename src/mflux/{flux_tools => models/flux/model/flux_text_encoder/clip_encoder}/__init__.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_embeddings.py (90%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_encoder.py (77%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_encoder_layer.py (81%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_mlp.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_sdpa_attention.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/clip_text_model.py (86%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/clip_encoder/encoder_clip.py (82%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/prompt_encoder.py (74%) rename src/mflux/{flux_tools/depth => models/flux/model/flux_text_encoder/t5_encoder}/__init__.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_attention.py (72%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_block.py (69%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_dense_relu_dense.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_encoder.py (76%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_feed_forward.py (69%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_layer_norm.py (100%) rename src/mflux/models/{text_encoder => flux/model/flux_text_encoder}/t5_encoder/t5_self_attention.py (100%) rename src/mflux/{flux_tools/fill => models/flux/model/flux_transformer}/__init__.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/ada_layer_norm_continuous.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/ada_layer_norm_zero.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/ada_layer_norm_zero_single.py (100%) rename src/mflux/{flux_tools/redux => models/flux/model/flux_transformer/common}/__init__.py (100%) create mode 100644 src/mflux/models/flux/model/flux_transformer/common/attention_utils.py rename src/mflux/models/{transformer => flux/model/flux_transformer}/embed_nd.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/feed_forward.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/guidance_embedder.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/joint_attention.py (96%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/joint_transformer_block.py (92%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/single_block_attention.py (93%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/single_transformer_block.py (89%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/text_embedder.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/time_text_embed.py (85%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/timestep_embedder.py (100%) rename src/mflux/models/{transformer => flux/model/flux_transformer}/transformer.py (91%) rename src/mflux/{kontext => models/flux/model/flux_vae}/__init__.py (100%) rename src/mflux/{kontext/utils => models/flux/model/flux_vae/common}/__init__.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/common/attention.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/common/resnet_block_2d.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/common/unet_mid_block.py (81%) rename src/mflux/models/{depth_pro/dino_v2 => flux/model/flux_vae/decoder}/__init__.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/conv_in.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/conv_norm_out.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/conv_out.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/decoder.py (86%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/up_block_1_or_2.py (85%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/up_block_3.py (86%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/up_block_4.py (90%) rename src/mflux/models/{vae => flux/model/flux_vae}/decoder/up_sampler.py (100%) rename src/mflux/models/{redux_encoder => flux/model/flux_vae/encoder}/__init__.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/conv_in.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/conv_norm_out.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/conv_out.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/down_block_1.py (82%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/down_block_2.py (83%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/down_block_3.py (83%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/down_block_4.py (87%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/down_sampler.py (100%) rename src/mflux/models/{vae => flux/model/flux_vae}/encoder/encoder.py (56%) rename src/mflux/models/{vae => flux/model/flux_vae}/vae.py (81%) rename src/mflux/models/{siglip_vision_transformer => flux/model/redux_encoder}/__init__.py (100%) rename src/mflux/models/{ => flux/model}/redux_encoder/redux_encoder.py (100%) rename src/mflux/models/{text_encoder => flux/model/siglip_vision_transformer}/__init__.py (100%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_encoder.py (79%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_encoder_layer.py (81%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_mlp.py (100%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py (90%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_sdpa_attention.py (100%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_vision_embeddings.py (100%) rename src/mflux/models/{ => flux/model}/siglip_vision_transformer/siglip_vision_transformer.py (69%) rename src/mflux/models/{text_encoder/clip_encoder => flux/tokenizer}/__init__.py (100%) rename src/mflux/{ => models/flux}/tokenizer/clip_tokenizer.py (100%) rename src/mflux/{ => models/flux}/tokenizer/t5_tokenizer.py (100%) rename src/mflux/{ => models/flux}/tokenizer/tokenizer_handler.py (89%) rename src/mflux/models/{text_encoder/t5_encoder => flux/variants}/__init__.py (100%) create mode 100644 src/mflux/models/flux/variants/concept_attention/__init__.py rename src/mflux/{community => models/flux/variants}/concept_attention/attention_data.py (94%) rename src/mflux/{community => models/flux/variants}/concept_attention/concept_util.py (96%) rename src/mflux/{community => models/flux/variants}/concept_attention/flux_concept.py (90%) rename src/mflux/{community => models/flux/variants}/concept_attention/flux_concept_from_image.py (91%) rename src/mflux/{community => models/flux/variants}/concept_attention/joint_attention_concept.py (98%) rename src/mflux/{community => models/flux/variants}/concept_attention/joint_transformer_block_concept.py (91%) rename src/mflux/{community => models/flux/variants}/concept_attention/transformer_concept.py (82%) rename src/mflux/models/{transformer => flux/variants/controlnet}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/controlnet/controlnet_util.py (97%) rename src/mflux/{ => models/flux/variants}/controlnet/flux_controlnet.py (89%) rename src/mflux/{ => models/flux/variants}/controlnet/transformer_controlnet.py (88%) rename src/mflux/{ => models/flux/variants}/controlnet/weight_handler_controlnet.py (93%) rename src/mflux/models/{transformer/common => flux/variants/depth}/__init__.py (100%) rename src/mflux/{flux_tools => models/flux/variants}/depth/depth_util.py (97%) rename src/mflux/{flux_tools => models/flux/variants}/depth/flux_depth.py (90%) rename src/mflux/models/{vae => flux/variants/dreambooth}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/images/01.jpeg (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/images/02.jpeg (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/images/03.jpeg (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/images/04.jpeg (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/images/05.jpeg (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/_example/train.json (100%) rename src/mflux/models/{vae/common => flux/variants/dreambooth/dataset}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/dataset/batch.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/dataset/dataset.py (89%) rename src/mflux/{ => models/flux/variants}/dreambooth/dataset/dreambooth_preprocessing.py (69%) rename src/mflux/{ => models/flux/variants}/dreambooth/dataset/iterator.py (94%) rename src/mflux/{ => models/flux/variants}/dreambooth/dreambooth.py (84%) rename src/mflux/{ => models/flux/variants}/dreambooth/dreambooth_initializer.py (79%) rename src/mflux/models/{vae/decoder => flux/variants/dreambooth/lora_layers}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/lora_layers/lora_layers.py (94%) rename src/mflux/models/{vae/encoder => flux/variants/dreambooth/optimization}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/optimization/_loss_derivation/dreambooth_loss.tex (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/optimization/dreambooth_loss.py (94%) rename src/mflux/{ => models/flux/variants}/dreambooth/optimization/optimizer.py (91%) rename src/mflux/{tokenizer => models/flux/variants/dreambooth/state}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/state/training_spec.py (99%) rename src/mflux/{ => models/flux/variants}/dreambooth/state/training_state.py (93%) rename src/mflux/{ => models/flux/variants}/dreambooth/state/zip_util.py (100%) rename src/mflux/{weights => models/flux/variants/dreambooth/statistics}/__init__.py (100%) rename src/mflux/{ => models/flux/variants}/dreambooth/statistics/plotter.py (96%) rename src/mflux/{ => models/flux/variants}/dreambooth/statistics/statistics.py (90%) create mode 100644 src/mflux/models/flux/variants/fill/__init__.py rename src/mflux/{flux_tools => models/flux/variants}/fill/flux_fill.py (90%) rename src/mflux/{flux_tools => models/flux/variants}/fill/mask_util.py (97%) create mode 100644 src/mflux/models/flux/variants/in_context/__init__.py rename src/mflux/{community => models/flux/variants}/in_context/flux_in_context_dev.py (94%) rename src/mflux/{community => models/flux/variants}/in_context/flux_in_context_fill.py (90%) create mode 100644 src/mflux/models/flux/variants/in_context/utils/__init__.py rename src/mflux/{community => models/flux/variants}/in_context/utils/in_context_loras.py (91%) rename src/mflux/{community => models/flux/variants}/in_context/utils/in_context_mask_util.py (96%) create mode 100644 src/mflux/models/flux/variants/kontext/__init__.py rename src/mflux/{ => models/flux/variants}/kontext/flux_kontext.py (90%) create mode 100644 src/mflux/models/flux/variants/kontext/utils/__init__.py rename src/mflux/{ => models/flux/variants}/kontext/utils/kontext_util.py (100%) create mode 100644 src/mflux/models/flux/variants/redux/__init__.py rename src/mflux/{flux_tools => models/flux/variants}/redux/flux_redux.py (88%) rename src/mflux/{flux_tools => models/flux/variants}/redux/redux_util.py (89%) rename src/mflux/{flux_tools => models/flux/variants}/redux/weight_handler_redux.py (90%) create mode 100644 src/mflux/models/flux/variants/txt2img/__init__.py rename src/mflux/{flux => models/flux/variants/txt2img}/flux.py (90%) create mode 100644 src/mflux/models/flux/weights/__init__.py rename src/mflux/{ => models/flux}/weights/lora_converter.py (100%) rename src/mflux/{ => models/flux}/weights/model_saver.py (100%) rename src/mflux/{ => models/flux}/weights/weight_handler.py (97%) rename src/mflux/{ => models/flux}/weights/weight_handler_lora.py (95%) rename src/mflux/{ => models/flux}/weights/weight_util.py (93%) create mode 100644 src/mflux/models/qwen/__init__.py create mode 100644 src/mflux/models/qwen/model/__init__.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/__init__.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_attention.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder_layer.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_mlp.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_prompt_encoder.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_rms_norm.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_rope.py create mode 100644 src/mflux/models/qwen/model/qwen_text_encoder/qwen_text_encoder.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/__init__.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_attention.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_feed_forward.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_layer_norm.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_rope.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_time_text_embed.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_timestep_embedding.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_timesteps.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_transformer.py create mode 100644 src/mflux/models/qwen/model/qwen_transformer/qwen_transformer_block.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/__init__.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_attention_block_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_causal_conv_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_decoder_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_down_block_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_encoder_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_mid_block_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_res_block_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_resample_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_rms_norm.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_image_up_block_3d.py create mode 100644 src/mflux/models/qwen/model/qwen_vae/qwen_vae.py create mode 100644 src/mflux/models/qwen/qwen_initializer.py create mode 100644 src/mflux/models/qwen/tokenizer/__init__.py create mode 100644 src/mflux/models/qwen/tokenizer/qwen_tokenizer.py create mode 100644 src/mflux/models/qwen/tokenizer/qwen_tokenizer_handler.py create mode 100644 src/mflux/models/qwen/variants/__init__.py create mode 100644 src/mflux/models/qwen/variants/txt2img/__init__.py create mode 100644 src/mflux/models/qwen/variants/txt2img/qwen_image.py create mode 100644 src/mflux/models/qwen/weights/__init__.py create mode 100644 src/mflux/models/qwen/weights/qwen_lora_mapping.py create mode 100644 src/mflux/models/qwen/weights/qwen_weight_handler.py create mode 100644 src/mflux/models/qwen/weights/qwen_weight_util.py delete mode 100644 src/mflux/models/transformer/common/attention_utils.py rename src/mflux/{ => ui/cli}/completions/README.md (100%) rename src/mflux/{ => ui/cli}/completions/__init__.py (100%) rename src/mflux/{ => ui/cli}/completions/generator.py (99%) rename src/mflux/{ => ui/cli}/completions/install.py (98%) rename src/mflux/{weights => utils}/download.py (100%) rename src/mflux/{weights => utils}/lora_library.py (100%) rename src/mflux/{weights => utils}/quantization_util.py (76%) create mode 100644 tests/resources/reference_qwen_img2img.png create mode 100644 tests/resources/reference_qwen_lora.png create mode 100644 tests/resources/reference_qwen_txt2img.png diff --git a/README.md b/README.md index c46036b..cd7cd6a 100644 --- a/README.md +++ b/README.md @@ -1591,16 +1591,16 @@ As of release [v.0.5.0](https://github.com/filipstrand/mflux/releases/tag/v.0.5. #### Training configuration -To describe a training run, you need to provide a [training configuration](src/mflux/dreambooth/_example/train.json) file which specifies the details such as +To describe a training run, you need to provide a [training configuration](src/mflux/models/flux/variants/dreambooth/_example/train.json) file which specifies the details such as what training data to use and various parameters. To try it out, one of the easiest ways is to start from the -provided [example configuration](src/mflux/dreambooth/_example/train.json) and simply use your own dataset and prompts by modifying the `examples` section of the json file. +provided [example configuration](src/mflux/models/flux/variants/dreambooth/_example/train.json) and simply use your own dataset and prompts by modifying the `examples` section of the json file. #### Training example -A complete example ([training configuration](src/mflux/dreambooth/_example/train.json) + [dataset](src/mflux/dreambooth/_example/images)) is provided in this repository. To start a training run, go to the project folder `cd mflux`, and simply run: +A complete example ([training configuration](src/mflux/models/flux/variants/dreambooth/_example/train.json) + [dataset](src/mflux/models/flux/variants/dreambooth/_example/images)) is provided in this repository. To start a training run, go to the project folder `cd mflux`, and simply run: ```sh -mflux-train --train-config src/mflux/dreambooth/_example/train.json +mflux-train --train-config src/mflux/models/flux/variants/dreambooth/_example/train.json ``` By default, this will train an adapter with images of size `512x512` with a batch size of 1 and can take up to several hours to fully complete depending on your machine. @@ -1717,7 +1717,7 @@ To avoid this, consider some of the following strategies to reduce memory requir - Use a smaller batch size, for example `"batch_size": 1` - Make sure your Mac is not busy with other background tasks that holds memory. -Applying some of these strategies, like how [train.json](src/mflux/dreambooth/_example/train.json) is set up by default, +Applying some of these strategies, like how [train.json](src/mflux/models/flux/variants/dreambooth/_example/train.json) is set up by default, will allow a 32GB M1 Pro to perform a successful fine-tuning run. Note, however, that reducing the trainable parameters might lead to worse performance. @@ -1738,7 +1738,7 @@ The aim is to also gradually expand the scope of this feature with alternative t - Loss curve can be a bit misleading/hard to read, sometimes it conveys little improvement over time, but actual image samples show the real progress. - When plotting the loss during training, we label it as "validation loss" but it is actually only the first 10 elements of the training examples for now. Future updates should support user inputs of separate validation images. - Training also works with the original model as quantized! -- [For the curious, a motivation for the loss function can be found here](src/mflux/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf). +- [For the curious, a motivation for the loss function can be found here](src/mflux/models/flux/variants/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf). - Two great resources that heavily inspired this feature are: - The fine-tuning script in [mlx-examples](https://github.com/ml-explore/mlx-examples/tree/main/flux#finetuning) - The original fine-tuning script in [Diffusers](https://huggingface.co/docs/diffusers/v0.11.0/en/training/dreambooth) diff --git a/pyproject.toml b/pyproject.toml index 519c963..e975519 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ source-exclude = [ # documentation assets were 27MB on 2025-07-05 "**/assets/**", # dreambooth examples ~=5MB on 2025-07-05 - "**/dreambooth/_example/images/**", + "**/models/flux/variants/dreambooth/_example/images/**", # loss pdf/tex does not need to be distributed "**/optimization/_loss_derivation/**", ] @@ -26,25 +26,31 @@ maintainers = [{ name = "Filip Strand", email = "strand.filip@gmail.com" }] license = { file = "LICENSE" } requires-python = ">=3.10" dependencies = [ + "accelerate>=0.31.0", + "filelock>=3.18.0", "huggingface-hub>=0.24.5,<1.0", "matplotlib>=3.9.2,<4.0", "mlx>=0.27.0,<0.28.0", "numpy>=2.0.1,<3.0", "opencv-python>=4.10.0,<5.0", "piexif>=1.1.3,<2.0", + "pillow>=10.4.0", "pillow>=10.4.0,<11.0; python_version<'3.13'", "pillow>=11.0,<12.0; python_version>='3.13'", "platformdirs>=4.0,<5.0", + "regex>=2024.11.6", + "requests>=2.32.4", "safetensors>=0.4.4,<1.0", "sentencepiece>=0.2.0,<1.0; python_version<'3.13'", # sentencepiece 0.2.1 is first release with 3.13 and 3.14 wheels: https://pypi.org/project/sentencepiece/0.2.1/ "sentencepiece>=0.2.1,<1.0; python_version>='3.13'", "tokenizers>=0.20.3; python_version>='3.13'", # transformers -> tokenizers "toml>=0.10.2,<1.0", + "torch>=2.7.1", "torch>=2.3.1,<3.0; python_version<'3.13'", "torch>=2.8.0,<3.0; python_version>='3.13'", "tqdm>=4.66.5,<5.0", - "transformers>=4.44.0,<5.0", + "transformers>=4.55.0,<5.0", "twine>=6.1.0,<7.0", ] classifiers = [ @@ -84,7 +90,7 @@ mflux-save-depth = "mflux.save_depth:main" mflux-train = "mflux.train:main" mflux-upscale = "mflux.upscale:main" mflux-lora-library = "mflux.lora_library:main" -mflux-completions = "mflux.completions.install:main" +mflux-completions = "mflux.ui.cli.completions.install:main" [tool.ruff] diff --git a/src/mflux/callbacks/callback_manager.py b/src/mflux/callbacks/callback_manager.py index c00021f..c439260 100644 --- a/src/mflux/callbacks/callback_manager.py +++ b/src/mflux/callbacks/callback_manager.py @@ -12,7 +12,7 @@ class CallbackManager: @staticmethod def register_callbacks( args: Namespace, - flux, + model, enable_canny_saver: bool = False, enable_depth_saver: bool = False, ) -> MemorySaver | None: @@ -20,7 +20,7 @@ class CallbackManager: CallbackManager._register_battery_saver(args) # VAE Tiling (if requested) - CallbackManager._register_vae_tiling(args, flux) + CallbackManager._register_vae_tiling(args, model) # Specialized savers (based on flags) if enable_canny_saver: @@ -30,10 +30,10 @@ class CallbackManager: CallbackManager._register_depth_saver(args) # Stepwise handler (if requested) - CallbackManager._register_stepwise_handler(args, flux) + CallbackManager._register_stepwise_handler(args, model) # Memory saver (if requested) - return CallbackManager._register_memory_saver(args, flux) + return CallbackManager._register_memory_saver(args, model) @staticmethod def _register_battery_saver(args: Namespace) -> None: @@ -41,10 +41,10 @@ class CallbackManager: CallbackRegistry.register_before_loop(battery_saver) @staticmethod - def _register_vae_tiling(args: Namespace, flux) -> None: + def _register_vae_tiling(args: Namespace, model) -> None: if args.vae_tiling: - flux.vae.decoder.enable_tiling = True - flux.vae.decoder.split_direction = args.vae_tiling_split + model.vae.decoder.enable_tiling = True + model.vae.decoder.split_direction = args.vae_tiling_split @staticmethod def _register_canny_saver(args: Namespace) -> None: @@ -59,18 +59,18 @@ class CallbackManager: CallbackRegistry.register_before_loop(depth_image_saver) @staticmethod - def _register_stepwise_handler(args: Namespace, flux) -> None: + def _register_stepwise_handler(args: Namespace, model) -> None: if args.stepwise_image_output_dir: - handler = StepwiseHandler(flux=flux, output_dir=args.stepwise_image_output_dir) + handler = StepwiseHandler(model=model, output_dir=args.stepwise_image_output_dir) CallbackRegistry.register_before_loop(handler) CallbackRegistry.register_in_loop(handler) CallbackRegistry.register_interrupt(handler) @staticmethod - def _register_memory_saver(args: Namespace, flux) -> MemorySaver | None: + def _register_memory_saver(args: Namespace, model) -> MemorySaver | None: memory_saver = None if args.low_ram: - memory_saver = MemorySaver(flux=flux, keep_transformer=len(args.seed) > 1) + memory_saver = MemorySaver(model=model, keep_transformer=len(args.seed) > 1) CallbackRegistry.register_before_loop(memory_saver) CallbackRegistry.register_in_loop(memory_saver) CallbackRegistry.register_after_loop(memory_saver) diff --git a/src/mflux/callbacks/instances/memory_saver.py b/src/mflux/callbacks/instances/memory_saver.py index 537245d..82fbc88 100644 --- a/src/mflux/callbacks/instances/memory_saver.py +++ b/src/mflux/callbacks/instances/memory_saver.py @@ -14,8 +14,8 @@ class MemorySaver(BeforeLoopCallback, InLoopCallback, AfterLoopCallback): components at strategic points in the execution cycle. """ - def __init__(self, flux, keep_transformer: bool = True, cache_limit_bytes: int = 1000**3): - self.flux = flux + def __init__(self, model, keep_transformer: bool = True, cache_limit_bytes: int = 1000**3): + self.model = model self.keep_transformer = keep_transformer self.peak_memory: int = 0 mx.set_cache_limit(cache_limit_bytes) @@ -32,7 +32,7 @@ class MemorySaver(BeforeLoopCallback, InLoopCallback, AfterLoopCallback): depth_image: PIL.Image.Image | None = None, ) -> None: self.peak_memory = mx.get_peak_memory() - self._delete_encoders() + self._delete_text_encoders() def call_in_loop( self, @@ -56,17 +56,21 @@ class MemorySaver(BeforeLoopCallback, InLoopCallback, AfterLoopCallback): if not self.keep_transformer: self._delete_transformer() - def _delete_encoders(self) -> None: + def _delete_text_encoders(self) -> None: # repeated image generation only works with the same prompt (cache) - self.flux.clip_text_encoder = None - self.flux.t5_text_encoder = None + if hasattr(self.model, "clip_image_encoder"): + self.model.clip_image_encoder = None + if hasattr(self.model, "t5_image_encoder"): + self.model.t5_image_encoder = None + if hasattr(self.model, "text_encoder"): + self.model.text_encoder = None gc.collect() mx.clear_cache() def _delete_transformer(self) -> None: - self.flux.transformer = None - if hasattr(self.flux, "transformer_controlnet"): - self.flux.transformer_controlnet = None + self.model.transformer = None + if hasattr(self.model, "transformer_controlnet"): + self.model.transformer_controlnet = None gc.collect() mx.clear_cache() diff --git a/src/mflux/callbacks/instances/stepwise_handler.py b/src/mflux/callbacks/instances/stepwise_handler.py index a590baf..8a6902e 100644 --- a/src/mflux/callbacks/instances/stepwise_handler.py +++ b/src/mflux/callbacks/instances/stepwise_handler.py @@ -13,10 +13,10 @@ from mflux.post_processing.image_util import ImageUtil class StepwiseHandler(BeforeLoopCallback, InLoopCallback, InterruptCallback): def __init__( self, - flux, + model, output_dir: str, ): - self.flux = flux + self.model = model self.output_dir = Path(output_dir) self.step_wise_images = [] @@ -80,16 +80,16 @@ class StepwiseHandler(BeforeLoopCallback, InLoopCallback, InterruptCallback): time_steps: tqdm, ) -> None: unpack_latents = ArrayUtil.unpack_latents(latents=latents, height=config.height, width=config.width) - stepwise_decoded = self.flux.vae.decode(unpack_latents) + stepwise_decoded = self.model.vae.decode(unpack_latents) generation_time = time_steps.format_dict["elapsed"] if time_steps is not None else 0 stepwise_img = ImageUtil.to_image( decoded_latents=stepwise_decoded, config=config, seed=seed, prompt=prompt, - quantization=self.flux.bits, - lora_paths=self.flux.lora_paths, - lora_scales=self.flux.lora_scales, + quantization=self.model.bits, + lora_paths=self.model.lora_paths, + lora_scales=self.model.lora_scales, generation_time=generation_time, ) stepwise_img.save( diff --git a/src/mflux/community/concept_attention/__init__.py b/src/mflux/community/concept_attention/__init__.py deleted file mode 100644 index 397e2bb..0000000 --- a/src/mflux/community/concept_attention/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Concept Attention transformer models diff --git a/src/mflux/concept.py b/src/mflux/concept.py index a62223d..360acee 100644 --- a/src/mflux/concept.py +++ b/src/mflux/concept.py @@ -1,8 +1,8 @@ from mflux.callbacks.callback_manager import CallbackManager -from mflux.community.concept_attention.flux_concept import Flux1Concept from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.concept_attention.flux_concept import Flux1Concept from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -34,7 +34,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/concept_from_image.py b/src/mflux/concept_from_image.py index f7eef50..fa2699b 100644 --- a/src/mflux/concept_from_image.py +++ b/src/mflux/concept_from_image.py @@ -1,8 +1,8 @@ from mflux.callbacks.callback_manager import CallbackManager -from mflux.community.concept_attention.flux_concept_from_image import Flux1ConceptFromImage from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.concept_attention.flux_concept_from_image import Flux1ConceptFromImage from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -34,7 +34,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/config/model_config.py b/src/mflux/config/model_config.py index 8136da3..092122e 100644 --- a/src/mflux/config/model_config.py +++ b/src/mflux/config/model_config.py @@ -84,6 +84,11 @@ class ModelConfig: def krea_dev() -> "ModelConfig": return AVAILABLE_MODELS["krea-dev"] + @staticmethod + @lru_cache + def qwen_image() -> "ModelConfig": + return AVAILABLE_MODELS["qwen-image"] + def x_embedder_input_dim(self) -> int: if "Fill" in self.model_name: return 384 @@ -281,4 +286,16 @@ AVAILABLE_MODELS = { requires_sigma_shift=True, priority=10, ), + "qwen-image": ModelConfig( + aliases=["qwen-image", "qwen"], + model_name="Qwen/Qwen-Image", + base_model=None, + controlnet_model=None, + custom_transformer_model=None, + num_train_steps=None, + max_sequence_length=None, + supports_guidance=None, + requires_sigma_shift=None, + priority=11, + ), } diff --git a/src/mflux/generate.py b/src/mflux/generate.py index f2df4f7..37458db 100644 --- a/src/mflux/generate.py +++ b/src/mflux/generate.py @@ -2,10 +2,11 @@ from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.qwen.variants.txt2img.qwen_image import QwenImage from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser -from mflux.ui.prompt_utils import get_effective_prompt +from mflux.ui.prompt_utils import get_effective_negative_prompt, get_effective_prompt def main(): @@ -24,7 +25,8 @@ def main(): args.guidance = ui_defaults.GUIDANCE_SCALE # 1. Load the model - flux = Flux1( + model_class = QwenImage if "qwen" in args.model.lower() else Flux1 + model = model_class( model_config=ModelConfig.from_name(model_name=args.model, base_model=args.base_model), quantize=args.quantize, local_path=args.path, @@ -33,14 +35,15 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=model) try: for seed in args.seed: # 3. Generate an image for each seed value - image = flux.generate_image( + image = model.generate_image( seed=seed, prompt=get_effective_prompt(args), + negative_prompt=get_effective_negative_prompt(args), config=Config( num_inference_steps=args.steps, height=args.height, diff --git a/src/mflux/generate_controlnet.py b/src/mflux/generate_controlnet.py index d03f0a1..d0872ab 100644 --- a/src/mflux/generate_controlnet.py +++ b/src/mflux/generate_controlnet.py @@ -1,8 +1,8 @@ from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.controlnet.flux_controlnet import Flux1Controlnet from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.controlnet.flux_controlnet import Flux1Controlnet from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -33,7 +33,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux, enable_canny_saver=True) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux, enable_canny_saver=True) try: for seed in args.seed: diff --git a/src/mflux/generate_depth.py b/src/mflux/generate_depth.py index 203ddcf..7890ab5 100644 --- a/src/mflux/generate_depth.py +++ b/src/mflux/generate_depth.py @@ -1,7 +1,7 @@ from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException -from mflux.flux_tools.depth.flux_depth import Flux1Depth +from mflux.models.flux.variants.depth.flux_depth import Flux1Depth from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -31,7 +31,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux, enable_depth_saver=True) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux, enable_depth_saver=True) try: for seed in args.seed: diff --git a/src/mflux/generate_fill.py b/src/mflux/generate_fill.py index ba61d6b..34e9a40 100644 --- a/src/mflux/generate_fill.py +++ b/src/mflux/generate_fill.py @@ -1,7 +1,7 @@ from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException -from mflux.flux_tools.fill.flux_fill import Flux1Fill +from mflux.models.flux.variants.fill.flux_fill import Flux1Fill from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -31,7 +31,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/generate_in_context_catvton.py b/src/mflux/generate_in_context_catvton.py index cf38c23..7e27741 100644 --- a/src/mflux/generate_in_context_catvton.py +++ b/src/mflux/generate_in_context_catvton.py @@ -1,10 +1,10 @@ from pathlib import Path from mflux.callbacks.callback_manager import CallbackManager -from mflux.community.in_context.flux_in_context_fill import Flux1InContextFill from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.in_context.flux_in_context_fill import Flux1InContextFill from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -44,7 +44,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/generate_in_context_dev.py b/src/mflux/generate_in_context_dev.py index 40dfab7..6e1f57f 100644 --- a/src/mflux/generate_in_context_dev.py +++ b/src/mflux/generate_in_context_dev.py @@ -1,11 +1,11 @@ from pathlib import Path from mflux.callbacks.callback_manager import CallbackManager -from mflux.community.in_context.flux_in_context_dev import Flux1InContextDev -from mflux.community.in_context.utils.in_context_loras import LORA_REPO_ID, get_lora_filename from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.in_context.flux_in_context_dev import Flux1InContextDev +from mflux.models.flux.variants.in_context.utils.in_context_loras import LORA_REPO_ID, get_lora_filename from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -42,7 +42,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/generate_in_context_edit.py b/src/mflux/generate_in_context_edit.py index 7ce958e..e1b0db7 100644 --- a/src/mflux/generate_in_context_edit.py +++ b/src/mflux/generate_in_context_edit.py @@ -3,11 +3,11 @@ from pathlib import Path from PIL import Image from mflux.callbacks.callback_manager import CallbackManager -from mflux.community.in_context.flux_in_context_fill import Flux1InContextFill -from mflux.community.in_context.utils.in_context_loras import prepare_ic_edit_loras from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.in_context.flux_in_context_fill import Flux1InContextFill +from mflux.models.flux.variants.in_context.utils.in_context_loras import prepare_ic_edit_loras from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -46,7 +46,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/generate_kontext.py b/src/mflux/generate_kontext.py index ca27ce4..f979df0 100644 --- a/src/mflux/generate_kontext.py +++ b/src/mflux/generate_kontext.py @@ -3,7 +3,7 @@ from pathlib import Path from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException -from mflux.kontext.flux_kontext import Flux1Kontext +from mflux.models.flux.variants.kontext.flux_kontext import Flux1Kontext from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -33,7 +33,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/generate_redux.py b/src/mflux/generate_redux.py index 09c5512..452aaef 100644 --- a/src/mflux/generate_redux.py +++ b/src/mflux/generate_redux.py @@ -4,7 +4,7 @@ from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException -from mflux.flux_tools.redux.flux_redux import Flux1Redux +from mflux.models.flux.variants.redux.flux_redux import Flux1Redux from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -41,7 +41,7 @@ def main(): ) # 2. Register callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: for seed in args.seed: diff --git a/src/mflux/latent_creator/latent_creator.py b/src/mflux/latent_creator/latent_creator.py index b2d277b..9c8672a 100644 --- a/src/mflux/latent_creator/latent_creator.py +++ b/src/mflux/latent_creator/latent_creator.py @@ -1,8 +1,8 @@ from pathlib import Path import mlx.core as mx +from mlx import nn -from mflux.models.vae.vae import VAE from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import ImageUtil @@ -10,7 +10,7 @@ from mflux.post_processing.image_util import ImageUtil class Img2Img: def __init__( self, - vae: VAE, + vae: nn.Module, sigmas: mx.array, init_time_step: int, image_path: str | Path | None, @@ -71,7 +71,7 @@ class LatentCreator: ) @staticmethod - def encode_image(vae: VAE, image_path: str | Path, height: int, width: int): + def encode_image(vae: nn.Module, image_path: str | Path, height: int, width: int): scaled_user_image = ImageUtil.scale_to_dimensions( image=ImageUtil.load_image(image_path).convert("RGB"), target_width=width, diff --git a/src/mflux/lora_library.py b/src/mflux/lora_library.py index 11158c3..81e8ee6 100644 --- a/src/mflux/lora_library.py +++ b/src/mflux/lora_library.py @@ -7,7 +7,7 @@ import sys from collections import defaultdict from pathlib import Path -from mflux.weights.lora_library import _discover_lora_files +from mflux.utils.lora_library import _discover_lora_files def list_loras(paths: list[str] | None = None) -> int: diff --git a/src/mflux/community/__init__.py b/src/mflux/models/common/__init__.py similarity index 100% rename from src/mflux/community/__init__.py rename to src/mflux/models/common/__init__.py diff --git a/src/mflux/community/in_context/__init__.py b/src/mflux/models/common/lora/__init__.py similarity index 100% rename from src/mflux/community/in_context/__init__.py rename to src/mflux/models/common/lora/__init__.py diff --git a/src/mflux/community/in_context/utils/__init__.py b/src/mflux/models/common/lora/download/__init__.py similarity index 100% rename from src/mflux/community/in_context/utils/__init__.py rename to src/mflux/models/common/lora/download/__init__.py diff --git a/src/mflux/weights/weight_handler_lora_huggingface.py b/src/mflux/models/common/lora/download/lora_huggingface_downloader.py similarity index 53% rename from src/mflux/weights/weight_handler_lora_huggingface.py rename to src/mflux/models/common/lora/download/lora_huggingface_downloader.py index baa10d7..502ef69 100644 --- a/src/mflux/weights/weight_handler_lora_huggingface.py +++ b/src/mflux/models/common/lora/download/lora_huggingface_downloader.py @@ -2,28 +2,30 @@ import shutil from pathlib import Path from mflux.ui.defaults import MFLUX_LORA_CACHE_DIR -from mflux.weights.download import snapshot_download +from mflux.utils.download import snapshot_download -class WeightHandlerLoRAHuggingFace: +class LoRAHuggingFaceDownloader: + @staticmethod def download_loras( lora_names: list[str] | None = None, repo_id: str | None = None, cache_dir: Path | str | None = None, + model_name: str = "LoRA", ) -> list[str]: - if repo_id is None: + if not lora_names or not repo_id: return [] lora_paths = [] - if lora_names: - for lora_name in lora_names: - lora_path = WeightHandlerLoRAHuggingFace.download_lora( - repo_id=repo_id, - lora_name=lora_name, - cache_dir=cache_dir, - ) - lora_paths.append(lora_path) + for lora_name in lora_names: + lora_path = LoRAHuggingFaceDownloader.download_lora( + repo_id=repo_id, + lora_name=lora_name, + cache_dir=cache_dir, + model_name=model_name, + ) + lora_paths.append(lora_path) return lora_paths @@ -32,6 +34,7 @@ class WeightHandlerLoRAHuggingFace: repo_id: str, lora_name: str, cache_dir: Path | str | None = None, + model_name: str = "LoRA", # For logging purposes ) -> str: # Ensure cache_dir is a Path object if cache_dir is None: @@ -41,25 +44,25 @@ class WeightHandlerLoRAHuggingFace: cache_path.mkdir(parents=True, exist_ok=True) - # Check if the file already exists in the cache + # Check if already cached cached_file_path = cache_path / lora_name if cached_file_path.exists() and cached_file_path.is_file(): try: # Verify the file is actually readable (catches broken symlinks) with open(cached_file_path, "rb") as f: f.read(1) # Try to read just 1 byte to verify it works - print(f"Using cached LoRA: {cached_file_path}") + print(f"Using cached {model_name} LoRA: {cached_file_path}") return str(cached_file_path) except (OSError, IOError): # File exists but is not readable (broken symlink, permissions, etc.) - print(f"Cached LoRA file is corrupted or inaccessible, re-downloading: {cached_file_path}") + print(f"Cached {model_name} LoRA file is corrupted or inaccessible, re-downloading: {cached_file_path}") try: cached_file_path.unlink() # Remove the broken file/symlink except OSError: pass # Ignore if we can't remove it # Download the LoRA from Hugging Face - print(f"Downloading LoRA '{lora_name}' from {repo_id}...") + print(f"Downloading {model_name} LoRA '{lora_name}' from {repo_id}...") download_path = Path( snapshot_download( repo_id=repo_id, @@ -69,18 +72,30 @@ class WeightHandlerLoRAHuggingFace: ) # Find the downloaded file - for file in download_path.glob(f"**/*{lora_name}*"): + print(f"🔍 Searching for downloaded files in: {download_path}") + found_files = list(download_path.glob(f"**/*{lora_name}*")) + print(f"📁 Found files matching pattern: {found_files}") + + for file in found_files: + print(f"📄 Checking file: {file} (suffix: {file.suffix}, size: {file.stat().st_size} bytes)") if file.is_file() and file.suffix in [".safetensors", ".bin"]: - # Copy or link the file to the cache directory with the expected name - target_path = cache_path / lora_name + # Ensure the target path has the correct extension + if not lora_name.endswith(file.suffix): + target_name = f"{lora_name}{file.suffix}" + else: + target_name = lora_name + + target_path = cache_path / target_name if not target_path.exists(): # Create a symlink or copy the file try: target_path.symlink_to(file) + print(f"🔗 Created symlink: {target_path} -> {file}") except (OSError, AttributeError): shutil.copy2(file, target_path) + print(f"📋 Copied file: {file} -> {target_path}") - print(f"LoRA downloaded to: {target_path}") + print(f"{model_name} LoRA downloaded to: {target_path}") return str(target_path) - raise FileNotFoundError(f"Could not find LoRA file '{lora_name}' in the downloaded repository.") + raise FileNotFoundError(f"Could not find {model_name} LoRA file '{lora_name}' in the downloaded repository.") diff --git a/src/mflux/controlnet/__init__.py b/src/mflux/models/common/lora/layer/__init__.py similarity index 100% rename from src/mflux/controlnet/__init__.py rename to src/mflux/models/common/lora/layer/__init__.py diff --git a/src/mflux/dreambooth/lora_layers/fused_linear_lora_layer.py b/src/mflux/models/common/lora/layer/fused_linear_lora_layer.py similarity index 88% rename from src/mflux/dreambooth/lora_layers/fused_linear_lora_layer.py rename to src/mflux/models/common/lora/layer/fused_linear_lora_layer.py index 9a70e90..b830f11 100644 --- a/src/mflux/dreambooth/lora_layers/fused_linear_lora_layer.py +++ b/src/mflux/models/common/lora/layer/fused_linear_lora_layer.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.dreambooth.lora_layers.linear_lora_layer import LoRALinear +from mflux.models.common.lora.layer.linear_lora_layer import LoRALinear class FusedLoRALinear(nn.Module): diff --git a/src/mflux/dreambooth/lora_layers/linear_lora_layer.py b/src/mflux/models/common/lora/layer/linear_lora_layer.py similarity index 100% rename from src/mflux/dreambooth/lora_layers/linear_lora_layer.py rename to src/mflux/models/common/lora/layer/linear_lora_layer.py diff --git a/src/mflux/dreambooth/__init__.py b/src/mflux/models/common/lora/mapping/__init__.py similarity index 100% rename from src/mflux/dreambooth/__init__.py rename to src/mflux/models/common/lora/mapping/__init__.py diff --git a/src/mflux/models/common/lora/mapping/lora_loader.py b/src/mflux/models/common/lora/mapping/lora_loader.py new file mode 100644 index 0000000..8b7f7d4 --- /dev/null +++ b/src/mflux/models/common/lora/mapping/lora_loader.py @@ -0,0 +1,248 @@ +from pathlib import Path +from typing import Dict, Tuple + +import mlx.core as mx +import mlx.nn as nn + +from mflux.models.common.lora.layer.fused_linear_lora_layer import FusedLoRALinear +from mflux.models.common.lora.layer.linear_lora_layer import LoRALinear +from mflux.models.common.lora.mapping.lora_mapping import LoRATarget + + +class LoRALoader: + + @staticmethod + def load_and_apply_lora( + lora_mapping: list[LoRATarget], + transformer: nn.Module, + lora_files: list[str], + lora_scales: list[float] | None = None, + ) -> None: + if not lora_files: + return + + # Validate scales - handle both None and empty list cases + if lora_scales is None or len(lora_scales) == 0: + lora_scales = [1.0] * len(lora_files) + elif len(lora_scales) != len(lora_files): + raise ValueError( + f"Number of LoRA scales ({len(lora_scales)}) must match number of LoRA files ({len(lora_files)})" + ) + + print(f"📦 Loading {len(lora_files)} LoRA file(s)...") + + for lora_file, scale in zip(lora_files, lora_scales): + LoRALoader._apply_single_lora(transformer, lora_file, scale, lora_mapping) + + print("✅ All LoRA weights applied successfully") + + @staticmethod + def _apply_single_lora( + transformer: nn.Module, + lora_file: str, + scale: float, + lora_mapping: list[LoRATarget] + ) -> None: + # Load the LoRA weights + if not Path(lora_file).exists(): + print(f"❌ LoRA file not found: {lora_file}") + return + + print(f"🔧 Applying LoRA: {Path(lora_file).name} (scale={scale})") + + try: + weights = dict(mx.load(lora_file, return_metadata=True)[0].items()) + mx.eval(weights) + except (FileNotFoundError, ValueError, RuntimeError) as e: + print(f"❌ Failed to load LoRA file: {e}") + return + + print(f"🔍 DEBUG: Found {len(weights)} LoRA weights") + + # Apply LoRA using the provided mapping + flat_mapping = LoRALoader._get_flat_mapping(lora_mapping) + applied_count = LoRALoader._apply_lora_with_mapping(transformer, weights, scale, flat_mapping) + + print(f" ✅ Applied to {applied_count} layers") + + @staticmethod + def _apply_lora_with_mapping( + transformer: nn.Module, + weights: dict, + scale: float, + lora_mappings: Dict[str, Tuple[str, str, bool]] + ) -> int: + applied_count = 0 + lora_data_by_target = {} + + # Group LoRA weights by their target layers + for weight_key, weight_value in weights.items(): + found_mapping = None + block_idx = None + + # Pattern matching logic + for pattern, mapping_info in lora_mappings.items(): + if "{block}" in pattern: + # Extract block number from the weight key + parts = weight_key.split(".") + for i, part in enumerate(parts): + if part.isdigit(): + try: + test_block_idx = int(part) + concrete_pattern = pattern.format(block=test_block_idx) + if weight_key == concrete_pattern: + found_mapping = mapping_info + block_idx = test_block_idx + break + except (ValueError, KeyError): + continue + if found_mapping: + break + else: + if weight_key == pattern: + found_mapping = mapping_info + break + + if found_mapping is None: + continue + + target_path, matrix_name, transpose = found_mapping + + # Handle block substitution in target path + if block_idx is not None and "{block}" in target_path: + target_path = target_path.format(block=block_idx) + + if target_path not in lora_data_by_target: + lora_data_by_target[target_path] = {} + + lora_data_by_target[target_path][matrix_name] = (weight_value, transpose) + + print(f"🔍 DEBUG: Found {len(lora_data_by_target)} LoRA target layers") + + # Apply LoRA to each target + for target_path, lora_data in lora_data_by_target.items(): + if LoRALoader._apply_lora_matrices_to_target(transformer, target_path, lora_data, scale): + applied_count += 1 + + return applied_count + + @staticmethod + def _apply_lora_matrices_to_target( + transformer: nn.Module, + target_path: str, + lora_data: dict, + scale: float + ) -> bool: + # Navigate to the target layer + current_module = transformer + path_parts = target_path.split(".") + + try: + for part in path_parts: + if part.isdigit(): + current_module = current_module[int(part)] + else: + current_module = getattr(current_module, part) + except (AttributeError, IndexError, KeyError): + print(f"❌ Could not find target path: {target_path}") + return False + + # Check if we have the required matrices + if "lora_A" not in lora_data or "lora_B" not in lora_data: + print(f"❌ Missing required LoRA matrices for {target_path}") + return False + + lora_A, transpose_A = lora_data["lora_A"] + lora_B, transpose_B = lora_data["lora_B"] + + # Handle transposition + if transpose_A: + lora_A = lora_A.T + if transpose_B: + lora_B = lora_B.T + + # Handle alpha scaling + alpha_scale = 1.0 + if "alpha" in lora_data: + alpha_value, _ = lora_data["alpha"] + rank = lora_A.shape[1] + alpha_scale = float(alpha_value) / rank + + # Calculate final scale - only use user scale, matching Diffusers approach + effective_scale = scale + + # Create new LoRA layer + if hasattr(current_module, 'weight'): + # Create LoRA layer + lora_layer = LoRALinear.from_linear( + current_module, + r=lora_A.shape[1], + scale=effective_scale + ) + + # Set the LoRA matrices - use the correct dimensions from the LoRA file + lora_layer.lora_A = lora_A + lora_layer.lora_B = lora_B + + # Apply alpha scaling to the matrices if present + if "alpha" in lora_data: + lora_layer.lora_B = lora_layer.lora_B * alpha_scale + + # Handle fusion: if the current module is already a LoRA layer, fuse them + if isinstance(current_module, LoRALinear): + print(f" 🔀 Fusing with existing LoRA at {target_path}") + # Create fused layer with the existing LoRA and the new one + fused_layer = FusedLoRALinear( + base_linear=current_module.linear, + loras=[current_module, lora_layer] + ) + replacement_layer = fused_layer + elif isinstance(current_module, FusedLoRALinear): + print(f" 🔀 Adding to existing fusion at {target_path}") + # Add to existing fusion + fused_layer = FusedLoRALinear( + base_linear=current_module.base_linear, + loras=current_module.loras + [lora_layer] + ) + replacement_layer = fused_layer + else: + # First LoRA on this layer + replacement_layer = lora_layer + + # Replace the layer in the parent module + parent_module = transformer + for part in path_parts[:-1]: + if part.isdigit(): + parent_module = parent_module[int(part)] + else: + parent_module = getattr(parent_module, part) + + final_attr = path_parts[-1] + if final_attr.isdigit(): + parent_module[int(final_attr)] = replacement_layer + else: + setattr(parent_module, final_attr, replacement_layer) + + return True + else: + print(f"❌ Target layer {target_path} is not a linear layer") + return False + + @staticmethod + def _get_flat_mapping(targets: list[LoRATarget]) -> Dict[str, Tuple[str, str, bool]]: + flat_mapping = {} + + for target in targets: + # Add up weight patterns (lora_B, transposed) + for pattern in target.possible_up_patterns: + flat_mapping[pattern] = (target.model_path, "lora_B", True) + + # Add down weight patterns (lora_A, transposed) + for pattern in target.possible_down_patterns: + flat_mapping[pattern] = (target.model_path, "lora_A", True) + + # Add alpha patterns (no transpose) + for pattern in target.possible_alpha_patterns: + flat_mapping[pattern] = (target.model_path, "alpha", False) + + return flat_mapping diff --git a/src/mflux/models/common/lora/mapping/lora_mapping.py b/src/mflux/models/common/lora/mapping/lora_mapping.py new file mode 100644 index 0000000..8dde37d --- /dev/null +++ b/src/mflux/models/common/lora/mapping/lora_mapping.py @@ -0,0 +1,17 @@ +from dataclasses import dataclass +from typing import List, Protocol + + +@dataclass +class LoRATarget: + model_path: str + possible_up_patterns: List[str] + possible_down_patterns: List[str] + possible_alpha_patterns: List[str] + + +class LoRAMapping(Protocol): + + @staticmethod + def get_mapping() -> List[LoRATarget]: + return diff --git a/src/mflux/models/depth_pro/depth_pro.py b/src/mflux/models/depth_pro/depth_pro.py index f8e6030..bb3f2bf 100644 --- a/src/mflux/models/depth_pro/depth_pro.py +++ b/src/mflux/models/depth_pro/depth_pro.py @@ -7,8 +7,8 @@ import numpy as np from PIL import Image from mflux.models.depth_pro.depth_pro_initializer import DepthProInitializer -from mflux.models.depth_pro.depth_pro_model import DepthProModel -from mflux.models.depth_pro.depth_pro_util import DepthProUtil +from mflux.models.depth_pro.model.depth_pro_model import DepthProModel +from mflux.models.depth_pro.model.depth_pro_util import DepthProUtil from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/depth_pro/depth_pro_initializer.py b/src/mflux/models/depth_pro/depth_pro_initializer.py index 6888fa4..d3edb92 100644 --- a/src/mflux/models/depth_pro/depth_pro_initializer.py +++ b/src/mflux/models/depth_pro/depth_pro_initializer.py @@ -1,7 +1,7 @@ import mlx.nn as nn -from mflux.models.depth_pro.depth_pro_model import DepthProModel -from mflux.models.depth_pro.weight_handler_depth_pro import WeightHandlerDepthPro +from mflux.models.depth_pro.model.depth_pro_model import DepthProModel +from mflux.models.depth_pro.weights.weight_handler_depth_pro import WeightHandlerDepthPro class DepthProInitializer: diff --git a/src/mflux/dreambooth/dataset/__init__.py b/src/mflux/models/depth_pro/model/__init__.py similarity index 100% rename from src/mflux/dreambooth/dataset/__init__.py rename to src/mflux/models/depth_pro/model/__init__.py diff --git a/src/mflux/models/depth_pro/conv_utils.py b/src/mflux/models/depth_pro/model/conv_utils.py similarity index 100% rename from src/mflux/models/depth_pro/conv_utils.py rename to src/mflux/models/depth_pro/model/conv_utils.py diff --git a/src/mflux/models/depth_pro/depth_pro_encoder.py b/src/mflux/models/depth_pro/model/depth_pro_encoder.py similarity index 95% rename from src/mflux/models/depth_pro/depth_pro_encoder.py rename to src/mflux/models/depth_pro/model/depth_pro_encoder.py index 5186d1b..fb0439d 100644 --- a/src/mflux/models/depth_pro/depth_pro_encoder.py +++ b/src/mflux/models/depth_pro/model/depth_pro_encoder.py @@ -3,9 +3,9 @@ import math import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils -from mflux.models.depth_pro.dino_v2.dino_vision_transformer import DinoVisionTransformer -from mflux.models.depth_pro.upsample_block import UpSampleBlock +from mflux.models.depth_pro.model.conv_utils import ConvUtils +from mflux.models.depth_pro.model.dino_v2.dino_vision_transformer import DinoVisionTransformer +from mflux.models.depth_pro.model.upsample_block import UpSampleBlock class DepthProEncoder(nn.Module): diff --git a/src/mflux/models/depth_pro/depth_pro_model.py b/src/mflux/models/depth_pro/model/depth_pro_model.py similarity index 70% rename from src/mflux/models/depth_pro/depth_pro_model.py rename to src/mflux/models/depth_pro/model/depth_pro_model.py index a751c13..d3bb45c 100644 --- a/src/mflux/models/depth_pro/depth_pro_model.py +++ b/src/mflux/models/depth_pro/model/depth_pro_model.py @@ -1,9 +1,9 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.depth_pro_encoder import DepthProEncoder -from mflux.models.depth_pro.fov_head import FOVHead -from mflux.models.depth_pro.multires_conv_decoder import MultiresConvDecoder +from mflux.models.depth_pro.model.depth_pro_encoder import DepthProEncoder +from mflux.models.depth_pro.model.fov_head import FOVHead +from mflux.models.depth_pro.model.multires_conv_decoder import MultiresConvDecoder class DepthProModel(nn.Module): diff --git a/src/mflux/models/depth_pro/depth_pro_util.py b/src/mflux/models/depth_pro/model/depth_pro_util.py similarity index 100% rename from src/mflux/models/depth_pro/depth_pro_util.py rename to src/mflux/models/depth_pro/model/depth_pro_util.py diff --git a/src/mflux/dreambooth/lora_layers/__init__.py b/src/mflux/models/depth_pro/model/dino_v2/__init__.py similarity index 100% rename from src/mflux/dreambooth/lora_layers/__init__.py rename to src/mflux/models/depth_pro/model/dino_v2/__init__.py diff --git a/src/mflux/models/depth_pro/dino_v2/attention.py b/src/mflux/models/depth_pro/model/dino_v2/attention.py similarity index 100% rename from src/mflux/models/depth_pro/dino_v2/attention.py rename to src/mflux/models/depth_pro/model/dino_v2/attention.py diff --git a/src/mflux/models/depth_pro/dino_v2/dino_vision_transformer.py b/src/mflux/models/depth_pro/model/dino_v2/dino_vision_transformer.py similarity index 89% rename from src/mflux/models/depth_pro/dino_v2/dino_vision_transformer.py rename to src/mflux/models/depth_pro/model/dino_v2/dino_vision_transformer.py index e179698..737295f 100644 --- a/src/mflux/models/depth_pro/dino_v2/dino_vision_transformer.py +++ b/src/mflux/models/depth_pro/model/dino_v2/dino_vision_transformer.py @@ -1,8 +1,8 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.dino_v2.patch_embed import PatchEmbed -from mflux.models.depth_pro.dino_v2.transformer_block import TransformerBlock +from mflux.models.depth_pro.model.dino_v2.patch_embed import PatchEmbed +from mflux.models.depth_pro.model.dino_v2.transformer_block import TransformerBlock class DinoVisionTransformer(nn.Module): diff --git a/src/mflux/models/depth_pro/dino_v2/layer_scale.py b/src/mflux/models/depth_pro/model/dino_v2/layer_scale.py similarity index 100% rename from src/mflux/models/depth_pro/dino_v2/layer_scale.py rename to src/mflux/models/depth_pro/model/dino_v2/layer_scale.py diff --git a/src/mflux/models/depth_pro/dino_v2/mlp.py b/src/mflux/models/depth_pro/model/dino_v2/mlp.py similarity index 100% rename from src/mflux/models/depth_pro/dino_v2/mlp.py rename to src/mflux/models/depth_pro/model/dino_v2/mlp.py diff --git a/src/mflux/models/depth_pro/dino_v2/patch_embed.py b/src/mflux/models/depth_pro/model/dino_v2/patch_embed.py similarity index 100% rename from src/mflux/models/depth_pro/dino_v2/patch_embed.py rename to src/mflux/models/depth_pro/model/dino_v2/patch_embed.py diff --git a/src/mflux/models/depth_pro/dino_v2/transformer_block.py b/src/mflux/models/depth_pro/model/dino_v2/transformer_block.py similarity index 75% rename from src/mflux/models/depth_pro/dino_v2/transformer_block.py rename to src/mflux/models/depth_pro/model/dino_v2/transformer_block.py index a60039a..40db168 100644 --- a/src/mflux/models/depth_pro/dino_v2/transformer_block.py +++ b/src/mflux/models/depth_pro/model/dino_v2/transformer_block.py @@ -1,9 +1,9 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.dino_v2.attention import Attention -from mflux.models.depth_pro.dino_v2.layer_scale import LayerScale -from mflux.models.depth_pro.dino_v2.mlp import MLP +from mflux.models.depth_pro.model.dino_v2.attention import Attention +from mflux.models.depth_pro.model.dino_v2.layer_scale import LayerScale +from mflux.models.depth_pro.model.dino_v2.mlp import MLP class TransformerBlock(nn.Module): diff --git a/src/mflux/models/depth_pro/feature_fusion_block_2d.py b/src/mflux/models/depth_pro/model/feature_fusion_block_2d.py similarity index 88% rename from src/mflux/models/depth_pro/feature_fusion_block_2d.py rename to src/mflux/models/depth_pro/model/feature_fusion_block_2d.py index db500d3..5dba7d9 100644 --- a/src/mflux/models/depth_pro/feature_fusion_block_2d.py +++ b/src/mflux/models/depth_pro/model/feature_fusion_block_2d.py @@ -1,8 +1,8 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils -from mflux.models.depth_pro.residual_block import ResidualBlock +from mflux.models.depth_pro.model.conv_utils import ConvUtils +from mflux.models.depth_pro.model.residual_block import ResidualBlock class FeatureFusionBlock2d(nn.Module): diff --git a/src/mflux/models/depth_pro/fov_head.py b/src/mflux/models/depth_pro/model/fov_head.py similarity index 93% rename from src/mflux/models/depth_pro/fov_head.py rename to src/mflux/models/depth_pro/model/fov_head.py index cb8b6a8..1d94074 100644 --- a/src/mflux/models/depth_pro/fov_head.py +++ b/src/mflux/models/depth_pro/model/fov_head.py @@ -1,7 +1,7 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils +from mflux.models.depth_pro.model.conv_utils import ConvUtils class FOVHead(nn.Module): diff --git a/src/mflux/models/depth_pro/multires_conv_decoder.py b/src/mflux/models/depth_pro/model/multires_conv_decoder.py similarity index 93% rename from src/mflux/models/depth_pro/multires_conv_decoder.py rename to src/mflux/models/depth_pro/model/multires_conv_decoder.py index 7551ba3..655650b 100644 --- a/src/mflux/models/depth_pro/multires_conv_decoder.py +++ b/src/mflux/models/depth_pro/model/multires_conv_decoder.py @@ -1,8 +1,8 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils -from mflux.models.depth_pro.feature_fusion_block_2d import FeatureFusionBlock2d +from mflux.models.depth_pro.model.conv_utils import ConvUtils +from mflux.models.depth_pro.model.feature_fusion_block_2d import FeatureFusionBlock2d class MultiresConvDecoder(nn.Module): diff --git a/src/mflux/models/depth_pro/residual_block.py b/src/mflux/models/depth_pro/model/residual_block.py similarity index 94% rename from src/mflux/models/depth_pro/residual_block.py rename to src/mflux/models/depth_pro/model/residual_block.py index ef1dc7e..9f4ca42 100644 --- a/src/mflux/models/depth_pro/residual_block.py +++ b/src/mflux/models/depth_pro/model/residual_block.py @@ -1,7 +1,7 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils +from mflux.models.depth_pro.model.conv_utils import ConvUtils class ResidualBlock(nn.Module): diff --git a/src/mflux/models/depth_pro/upsample_block.py b/src/mflux/models/depth_pro/model/upsample_block.py similarity index 95% rename from src/mflux/models/depth_pro/upsample_block.py rename to src/mflux/models/depth_pro/model/upsample_block.py index ae647cd..3a31621 100644 --- a/src/mflux/models/depth_pro/upsample_block.py +++ b/src/mflux/models/depth_pro/model/upsample_block.py @@ -1,7 +1,7 @@ import mlx.core as mx import mlx.nn as nn -from mflux.models.depth_pro.conv_utils import ConvUtils +from mflux.models.depth_pro.model.conv_utils import ConvUtils class UpSampleBlock(nn.Module): diff --git a/src/mflux/dreambooth/optimization/__init__.py b/src/mflux/models/depth_pro/weights/__init__.py similarity index 100% rename from src/mflux/dreambooth/optimization/__init__.py rename to src/mflux/models/depth_pro/weights/__init__.py diff --git a/src/mflux/models/depth_pro/weight_handler_depth_pro.py b/src/mflux/models/depth_pro/weights/weight_handler_depth_pro.py similarity index 97% rename from src/mflux/models/depth_pro/weight_handler_depth_pro.py rename to src/mflux/models/depth_pro/weights/weight_handler_depth_pro.py index ddabbf4..244c853 100644 --- a/src/mflux/models/depth_pro/weight_handler_depth_pro.py +++ b/src/mflux/models/depth_pro/weights/weight_handler_depth_pro.py @@ -6,9 +6,9 @@ import mlx.core as mx import torch from mlx.utils import tree_unflatten +from mflux.models.flux.weights.weight_handler import MetaData +from mflux.models.flux.weights.weight_util import WeightUtil from mflux.ui.defaults import MFLUX_CACHE_DIR -from mflux.weights.weight_handler import MetaData -from mflux.weights.weight_util import WeightUtil logger = logging.getLogger(__name__) diff --git a/src/mflux/dreambooth/state/__init__.py b/src/mflux/models/flux/__init__.py similarity index 100% rename from src/mflux/dreambooth/state/__init__.py rename to src/mflux/models/flux/__init__.py diff --git a/src/mflux/flux/flux_initializer.py b/src/mflux/models/flux/flux_initializer.py similarity index 82% rename from src/mflux/flux/flux_initializer.py rename to src/mflux/models/flux/flux_initializer.py index 7746b34..4db5cd3 100644 --- a/src/mflux/flux/flux_initializer.py +++ b/src/mflux/models/flux/flux_initializer.py @@ -1,21 +1,21 @@ from mflux.config.model_config import ModelConfig -from mflux.controlnet.transformer_controlnet import TransformerControlnet -from mflux.controlnet.weight_handler_controlnet import WeightHandlerControlnet -from mflux.flux_tools.redux.weight_handler_redux import WeightHandlerRedux from mflux.models.depth_pro.depth_pro import DepthPro -from mflux.models.redux_encoder.redux_encoder import ReduxEncoder -from mflux.models.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE -from mflux.tokenizer.clip_tokenizer import TokenizerCLIP -from mflux.tokenizer.t5_tokenizer import TokenizerT5 -from mflux.tokenizer.tokenizer_handler import TokenizerHandler -from mflux.weights.weight_handler import WeightHandler -from mflux.weights.weight_handler_lora import WeightHandlerLoRA -from mflux.weights.weight_handler_lora_huggingface import WeightHandlerLoRAHuggingFace -from mflux.weights.weight_util import WeightUtil +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.model.redux_encoder.redux_encoder import ReduxEncoder +from mflux.models.flux.model.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer +from mflux.models.flux.tokenizer.clip_tokenizer import TokenizerCLIP +from mflux.models.flux.tokenizer.t5_tokenizer import TokenizerT5 +from mflux.models.flux.tokenizer.tokenizer_handler import TokenizerHandler +from mflux.models.flux.variants.controlnet.transformer_controlnet import TransformerControlnet +from mflux.models.flux.variants.controlnet.weight_handler_controlnet import WeightHandlerControlnet +from mflux.models.flux.variants.redux.weight_handler_redux import WeightHandlerRedux +from mflux.models.common.lora.download.lora_huggingface_downloader import LoRAHuggingFaceDownloader +from mflux.models.flux.weights.weight_handler import WeightHandler +from mflux.models.flux.weights.weight_handler_lora import WeightHandlerLoRA +from mflux.models.flux.weights.weight_util import WeightUtil class FluxInitializer: @@ -81,9 +81,10 @@ class FluxInitializer: ) # 5. Set LoRA weights - hf_lora_paths = WeightHandlerLoRAHuggingFace.download_loras( + hf_lora_paths = LoRAHuggingFaceDownloader.download_loras( lora_names=lora_names, repo_id=lora_repo_id, + model_name="Flux", ) flux_model.lora_paths = lora_paths + hf_lora_paths flux_model.lora_scales = (lora_scales or []) + [1.0] * len(hf_lora_paths) @@ -206,9 +207,9 @@ class FluxInitializer: lora_repo_id: str | None = None, ): # Import here to avoid circular dependency - from mflux.community.concept_attention.transformer_concept import TransformerConcept + from mflux.models.flux.variants.concept_attention.transformer_concept import TransformerConcept - # 1. Load weights first to get transformer dimensions + # 1. Load weights first to get flux_transformer dimensions weights = WeightHandler.load_regular_weights( repo_id=model_config.model_name, local_path=local_path, @@ -221,7 +222,7 @@ class FluxInitializer: num_single_transformer_blocks=weights.num_single_transformer_blocks(), ) - # 3. Use the improved FluxInitializer with custom transformer + # 3. Use the improved FluxInitializer with custom flux_transformer FluxInitializer.init( flux_model=flux_model, model_config=model_config, diff --git a/src/mflux/dreambooth/statistics/__init__.py b/src/mflux/models/flux/model/__init__.py similarity index 100% rename from src/mflux/dreambooth/statistics/__init__.py rename to src/mflux/models/flux/model/__init__.py diff --git a/src/mflux/flux/__init__.py b/src/mflux/models/flux/model/flux_text_encoder/__init__.py similarity index 100% rename from src/mflux/flux/__init__.py rename to src/mflux/models/flux/model/flux_text_encoder/__init__.py diff --git a/src/mflux/flux_tools/__init__.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/__init__.py similarity index 100% rename from src/mflux/flux_tools/__init__.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/__init__.py diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_embeddings.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_embeddings.py similarity index 90% rename from src/mflux/models/text_encoder/clip_encoder/clip_embeddings.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_embeddings.py index 0410e13..cc6c553 100644 --- a/src/mflux/models/text_encoder/clip_encoder/clip_embeddings.py +++ b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_embeddings.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.tokenizer.clip_tokenizer import TokenizerCLIP +from mflux.models.flux.tokenizer.clip_tokenizer import TokenizerCLIP class CLIPEmbeddings(nn.Module): diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_encoder.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder.py similarity index 77% rename from src/mflux/models/text_encoder/clip_encoder/clip_encoder.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder.py index 9b641e3..24eb6c6 100644 --- a/src/mflux/models/text_encoder/clip_encoder/clip_encoder.py +++ b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.clip_encoder.clip_text_model import CLIPTextModel +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_text_model import CLIPTextModel class CLIPEncoder(nn.Module): diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_encoder_layer.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder_layer.py similarity index 81% rename from src/mflux/models/text_encoder/clip_encoder/clip_encoder_layer.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder_layer.py index 55e2a3f..fbb0521 100644 --- a/src/mflux/models/text_encoder/clip_encoder/clip_encoder_layer.py +++ b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_encoder_layer.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.clip_encoder.clip_mlp import CLIPMLP -from mflux.models.text_encoder.clip_encoder.clip_sdpa_attention import CLIPSdpaAttention +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_mlp import CLIPMLP +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_sdpa_attention import CLIPSdpaAttention class CLIPEncoderLayer(nn.Module): diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_mlp.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_mlp.py similarity index 100% rename from src/mflux/models/text_encoder/clip_encoder/clip_mlp.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_mlp.py diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_sdpa_attention.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_sdpa_attention.py similarity index 100% rename from src/mflux/models/text_encoder/clip_encoder/clip_sdpa_attention.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_sdpa_attention.py diff --git a/src/mflux/models/text_encoder/clip_encoder/clip_text_model.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_text_model.py similarity index 86% rename from src/mflux/models/text_encoder/clip_encoder/clip_text_model.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_text_model.py index 2851073..c782776 100644 --- a/src/mflux/models/text_encoder/clip_encoder/clip_text_model.py +++ b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/clip_text_model.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.clip_encoder.clip_embeddings import CLIPEmbeddings -from mflux.models.text_encoder.clip_encoder.encoder_clip import EncoderCLIP +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_embeddings import CLIPEmbeddings +from mflux.models.flux.model.flux_text_encoder.clip_encoder.encoder_clip import EncoderCLIP class CLIPTextModel(nn.Module): diff --git a/src/mflux/models/text_encoder/clip_encoder/encoder_clip.py b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/encoder_clip.py similarity index 82% rename from src/mflux/models/text_encoder/clip_encoder/encoder_clip.py rename to src/mflux/models/flux/model/flux_text_encoder/clip_encoder/encoder_clip.py index 2199732..ca33e47 100644 --- a/src/mflux/models/text_encoder/clip_encoder/encoder_clip.py +++ b/src/mflux/models/flux/model/flux_text_encoder/clip_encoder/encoder_clip.py @@ -1,9 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.clip_encoder.clip_encoder_layer import ( - CLIPEncoderLayer, -) +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder_layer import CLIPEncoderLayer class EncoderCLIP(nn.Module): diff --git a/src/mflux/models/text_encoder/prompt_encoder.py b/src/mflux/models/flux/model/flux_text_encoder/prompt_encoder.py similarity index 74% rename from src/mflux/models/text_encoder/prompt_encoder.py rename to src/mflux/models/flux/model/flux_text_encoder/prompt_encoder.py index 812f67f..5b702d6 100644 --- a/src/mflux/models/text_encoder/prompt_encoder.py +++ b/src/mflux/models/flux/model/flux_text_encoder/prompt_encoder.py @@ -1,9 +1,9 @@ import mlx.core as mx -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.tokenizer.clip_tokenizer import TokenizerCLIP -from mflux.tokenizer.t5_tokenizer import TokenizerT5 +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.tokenizer.clip_tokenizer import TokenizerCLIP +from mflux.models.flux.tokenizer.t5_tokenizer import TokenizerT5 class PromptEncoder: diff --git a/src/mflux/flux_tools/depth/__init__.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/__init__.py similarity index 100% rename from src/mflux/flux_tools/depth/__init__.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/__init__.py diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_attention.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_attention.py similarity index 72% rename from src/mflux/models/text_encoder/t5_encoder/t5_attention.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_attention.py index 9280da5..23b2702 100644 --- a/src/mflux/models/text_encoder/t5_encoder/t5_attention.py +++ b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_attention.py @@ -1,10 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm -from mflux.models.text_encoder.t5_encoder.t5_self_attention import ( - T5SelfAttention, -) +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_self_attention import T5SelfAttention class T5Attention(nn.Module): diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_block.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_block.py similarity index 69% rename from src/mflux/models/text_encoder/t5_encoder/t5_block.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_block.py index 64c789a..9483fbd 100644 --- a/src/mflux/models/text_encoder/t5_encoder/t5_block.py +++ b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_block.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.t5_encoder.t5_attention import T5Attention -from mflux.models.text_encoder.t5_encoder.t5_feed_forward import T5FeedForward +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_attention import T5Attention +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_feed_forward import T5FeedForward class T5Block(nn.Module): diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_dense_relu_dense.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_dense_relu_dense.py similarity index 100% rename from src/mflux/models/text_encoder/t5_encoder/t5_dense_relu_dense.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_dense_relu_dense.py diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_encoder.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_encoder.py similarity index 76% rename from src/mflux/models/text_encoder/t5_encoder/t5_encoder.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_encoder.py index b053fc1..5e9fa02 100644 --- a/src/mflux/models/text_encoder/t5_encoder/t5_encoder.py +++ b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_encoder.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.t5_encoder.t5_block import T5Block -from mflux.models.text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_block import T5Block +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm class T5Encoder(nn.Module): diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_feed_forward.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_feed_forward.py similarity index 69% rename from src/mflux/models/text_encoder/t5_encoder/t5_feed_forward.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_feed_forward.py index 03d6f5b..9760199 100644 --- a/src/mflux/models/text_encoder/t5_encoder/t5_feed_forward.py +++ b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_feed_forward.py @@ -1,10 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.text_encoder.t5_encoder.t5_dense_relu_dense import ( - T5DenseReluDense, -) -from mflux.models.text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_dense_relu_dense import T5DenseReluDense +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_layer_norm import T5LayerNorm class T5FeedForward(nn.Module): diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_layer_norm.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_layer_norm.py similarity index 100% rename from src/mflux/models/text_encoder/t5_encoder/t5_layer_norm.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_layer_norm.py diff --git a/src/mflux/models/text_encoder/t5_encoder/t5_self_attention.py b/src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_self_attention.py similarity index 100% rename from src/mflux/models/text_encoder/t5_encoder/t5_self_attention.py rename to src/mflux/models/flux/model/flux_text_encoder/t5_encoder/t5_self_attention.py diff --git a/src/mflux/flux_tools/fill/__init__.py b/src/mflux/models/flux/model/flux_transformer/__init__.py similarity index 100% rename from src/mflux/flux_tools/fill/__init__.py rename to src/mflux/models/flux/model/flux_transformer/__init__.py diff --git a/src/mflux/models/transformer/ada_layer_norm_continuous.py b/src/mflux/models/flux/model/flux_transformer/ada_layer_norm_continuous.py similarity index 100% rename from src/mflux/models/transformer/ada_layer_norm_continuous.py rename to src/mflux/models/flux/model/flux_transformer/ada_layer_norm_continuous.py diff --git a/src/mflux/models/transformer/ada_layer_norm_zero.py b/src/mflux/models/flux/model/flux_transformer/ada_layer_norm_zero.py similarity index 100% rename from src/mflux/models/transformer/ada_layer_norm_zero.py rename to src/mflux/models/flux/model/flux_transformer/ada_layer_norm_zero.py diff --git a/src/mflux/models/transformer/ada_layer_norm_zero_single.py b/src/mflux/models/flux/model/flux_transformer/ada_layer_norm_zero_single.py similarity index 100% rename from src/mflux/models/transformer/ada_layer_norm_zero_single.py rename to src/mflux/models/flux/model/flux_transformer/ada_layer_norm_zero_single.py diff --git a/src/mflux/flux_tools/redux/__init__.py b/src/mflux/models/flux/model/flux_transformer/common/__init__.py similarity index 100% rename from src/mflux/flux_tools/redux/__init__.py rename to src/mflux/models/flux/model/flux_transformer/common/__init__.py diff --git a/src/mflux/models/flux/model/flux_transformer/common/attention_utils.py b/src/mflux/models/flux/model/flux_transformer/common/attention_utils.py new file mode 100644 index 0000000..40241c8 --- /dev/null +++ b/src/mflux/models/flux/model/flux_transformer/common/attention_utils.py @@ -0,0 +1,98 @@ +import mlx.core as mx +from mlx import nn +from mlx.core.fast import scaled_dot_product_attention + + +class AttentionUtils: + @staticmethod + def process_qkv( + hidden_states: mx.array, + to_q: nn.Linear, + to_k: nn.Linear, + to_v: nn.Linear, + norm_q: nn.RMSNorm, + norm_k: nn.RMSNorm, + num_heads: int, + head_dim: int, + ): + batch_size = hidden_states.shape[0] + seq_len = hidden_states.shape[1] + + query = to_q(hidden_states) + key = to_k(hidden_states) + value = to_v(hidden_states) + + # Reshape [B, S, H*D] -> [B, H, S, D] + query = mx.transpose(mx.reshape(query, (batch_size, seq_len, num_heads, head_dim)), (0, 2, 1, 3)) + key = mx.transpose(mx.reshape(key, (batch_size, seq_len, num_heads, head_dim)), (0, 2, 1, 3)) + value = mx.transpose(mx.reshape(value, (batch_size, seq_len, num_heads, head_dim)), (0, 2, 1, 3)) + + # Apply normalization in float32 for stability, then cast back (like working version) + q_dtype = query.dtype + k_dtype = key.dtype + query = norm_q(query.astype(mx.float32)).astype(q_dtype) + key = norm_k(key.astype(mx.float32)).astype(k_dtype) + + return query, key, value + + @staticmethod + def compute_attention( + query: mx.array, + key: mx.array, + value: mx.array, + batch_size: int, + num_heads: int, + head_dim: int, + mask: mx.array | None = None, + ) -> mx.array: + scale = 1 / mx.sqrt(query.shape[-1]) + hidden_states = scaled_dot_product_attention(query, key, value, scale=scale, mask=mask) + hidden_states = mx.transpose(hidden_states, (0, 2, 1, 3)) + hidden_states = mx.reshape(hidden_states, (batch_size, -1, num_heads * head_dim)) + return hidden_states + + @staticmethod + def convert_key_padding_mask_to_additive_mask( + mask: mx.array | None, + joint_seq_len: int, + txt_seq_len: int, + ) -> mx.array | None: + if mask is None: + return None + + bsz = mask.shape[0] + img_seq_len = joint_seq_len - txt_seq_len + + # Create joint mask: [text_mask, image_ones] + ones_img = mx.ones((bsz, img_seq_len), dtype=mx.float32) + joint_mask = mx.concatenate([mask.astype(mx.float32), ones_img], axis=1) + + # Convert to additive mask for scaled_dot_product_attention + additive = (1.0 - joint_mask) * (-1e9) + return additive.reshape((additive.shape[0], 1, 1, additive.shape[1])) + + @staticmethod + def apply_rope(xq: mx.array, xk: mx.array, freqs_cis: mx.array): + xq_ = xq.astype(mx.float32).reshape(*xq.shape[:-1], -1, 1, 2) + xk_ = xk.astype(mx.float32).reshape(*xk.shape[:-1], -1, 1, 2) + xq_out = freqs_cis[..., 0] * xq_[..., 0] + freqs_cis[..., 1] * xq_[..., 1] + xk_out = freqs_cis[..., 0] * xk_[..., 0] + freqs_cis[..., 1] * xk_[..., 1] + return xq_out.reshape(*xq.shape).astype(mx.float32), xk_out.reshape(*xk.shape).astype(mx.float32) + + @staticmethod + def apply_rope_bshd(xq: mx.array, xk: mx.array, cos: mx.array, sin: mx.array): + xq_f = xq.astype(mx.float32) + xk_f = xk.astype(mx.float32) + cos_b = cos.reshape(1, cos.shape[0], 1, cos.shape[1]) + sin_b = sin.reshape(1, sin.shape[0], 1, sin.shape[1]) + + def mix(x: mx.array) -> mx.array: + x2 = x.reshape(*x.shape[:-1], -1, 2) + real = x2[..., 0] + imag = x2[..., 1] + out0 = real * cos_b + (-imag) * sin_b + out1 = imag * cos_b + (real) * sin_b + out2 = mx.stack([out0, out1], axis=-1) + return out2.reshape(*x.shape) + + return mix(xq_f).astype(mx.float32), mix(xk_f).astype(mx.float32) diff --git a/src/mflux/models/transformer/embed_nd.py b/src/mflux/models/flux/model/flux_transformer/embed_nd.py similarity index 100% rename from src/mflux/models/transformer/embed_nd.py rename to src/mflux/models/flux/model/flux_transformer/embed_nd.py diff --git a/src/mflux/models/transformer/feed_forward.py b/src/mflux/models/flux/model/flux_transformer/feed_forward.py similarity index 100% rename from src/mflux/models/transformer/feed_forward.py rename to src/mflux/models/flux/model/flux_transformer/feed_forward.py diff --git a/src/mflux/models/transformer/guidance_embedder.py b/src/mflux/models/flux/model/flux_transformer/guidance_embedder.py similarity index 100% rename from src/mflux/models/transformer/guidance_embedder.py rename to src/mflux/models/flux/model/flux_transformer/guidance_embedder.py diff --git a/src/mflux/models/transformer/joint_attention.py b/src/mflux/models/flux/model/flux_transformer/joint_attention.py similarity index 96% rename from src/mflux/models/transformer/joint_attention.py rename to src/mflux/models/flux/model/flux_transformer/joint_attention.py index a179d04..3472fe7 100644 --- a/src/mflux/models/transformer/joint_attention.py +++ b/src/mflux/models/flux/model/flux_transformer/joint_attention.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.transformer.common.attention_utils import AttentionUtils +from mflux.models.flux.model.flux_transformer.common.attention_utils import AttentionUtils class JointAttention(nn.Module): diff --git a/src/mflux/models/transformer/joint_transformer_block.py b/src/mflux/models/flux/model/flux_transformer/joint_transformer_block.py similarity index 92% rename from src/mflux/models/transformer/joint_transformer_block.py rename to src/mflux/models/flux/model/flux_transformer/joint_transformer_block.py index f7b9836..789f1ae 100644 --- a/src/mflux/models/transformer/joint_transformer_block.py +++ b/src/mflux/models/flux/model/flux_transformer/joint_transformer_block.py @@ -1,9 +1,9 @@ import mlx.core as mx from mlx import nn -from mflux.models.transformer.ada_layer_norm_zero import AdaLayerNormZero -from mflux.models.transformer.feed_forward import FeedForward -from mflux.models.transformer.joint_attention import JointAttention +from mflux.models.flux.model.flux_transformer.ada_layer_norm_zero import AdaLayerNormZero +from mflux.models.flux.model.flux_transformer.feed_forward import FeedForward +from mflux.models.flux.model.flux_transformer.joint_attention import JointAttention class JointTransformerBlock(nn.Module): diff --git a/src/mflux/models/transformer/single_block_attention.py b/src/mflux/models/flux/model/flux_transformer/single_block_attention.py similarity index 93% rename from src/mflux/models/transformer/single_block_attention.py rename to src/mflux/models/flux/model/flux_transformer/single_block_attention.py index a666850..a35beb3 100644 --- a/src/mflux/models/transformer/single_block_attention.py +++ b/src/mflux/models/flux/model/flux_transformer/single_block_attention.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.transformer.common.attention_utils import AttentionUtils +from mflux.models.flux.model.flux_transformer.common.attention_utils import AttentionUtils class SingleBlockAttention(nn.Module): diff --git a/src/mflux/models/transformer/single_transformer_block.py b/src/mflux/models/flux/model/flux_transformer/single_transformer_block.py similarity index 89% rename from src/mflux/models/transformer/single_transformer_block.py rename to src/mflux/models/flux/model/flux_transformer/single_transformer_block.py index 2193a0e..c5f00e8 100644 --- a/src/mflux/models/transformer/single_transformer_block.py +++ b/src/mflux/models/flux/model/flux_transformer/single_transformer_block.py @@ -1,10 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.transformer.ada_layer_norm_zero_single import ( - AdaLayerNormZeroSingle, -) -from mflux.models.transformer.single_block_attention import SingleBlockAttention +from mflux.models.flux.model.flux_transformer.ada_layer_norm_zero_single import AdaLayerNormZeroSingle +from mflux.models.flux.model.flux_transformer.single_block_attention import SingleBlockAttention class SingleTransformerBlock(nn.Module): diff --git a/src/mflux/models/transformer/text_embedder.py b/src/mflux/models/flux/model/flux_transformer/text_embedder.py similarity index 100% rename from src/mflux/models/transformer/text_embedder.py rename to src/mflux/models/flux/model/flux_transformer/text_embedder.py diff --git a/src/mflux/models/transformer/time_text_embed.py b/src/mflux/models/flux/model/flux_transformer/time_text_embed.py similarity index 85% rename from src/mflux/models/transformer/time_text_embed.py rename to src/mflux/models/flux/model/flux_transformer/time_text_embed.py index eb6f24f..a979fd6 100644 --- a/src/mflux/models/transformer/time_text_embed.py +++ b/src/mflux/models/flux/model/flux_transformer/time_text_embed.py @@ -5,9 +5,9 @@ from mlx import nn from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.models.transformer.guidance_embedder import GuidanceEmbedder -from mflux.models.transformer.text_embedder import TextEmbedder -from mflux.models.transformer.timestep_embedder import TimestepEmbedder +from mflux.models.flux.model.flux_transformer.guidance_embedder import GuidanceEmbedder +from mflux.models.flux.model.flux_transformer.text_embedder import TextEmbedder +from mflux.models.flux.model.flux_transformer.timestep_embedder import TimestepEmbedder class TimeTextEmbed(nn.Module): diff --git a/src/mflux/models/transformer/timestep_embedder.py b/src/mflux/models/flux/model/flux_transformer/timestep_embedder.py similarity index 100% rename from src/mflux/models/transformer/timestep_embedder.py rename to src/mflux/models/flux/model/flux_transformer/timestep_embedder.py diff --git a/src/mflux/models/transformer/transformer.py b/src/mflux/models/flux/model/flux_transformer/transformer.py similarity index 91% rename from src/mflux/models/transformer/transformer.py rename to src/mflux/models/flux/model/flux_transformer/transformer.py index 0581647..bbb14d4 100644 --- a/src/mflux/models/transformer/transformer.py +++ b/src/mflux/models/flux/model/flux_transformer/transformer.py @@ -5,17 +5,11 @@ from mlx import nn from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig -from mflux.models.transformer.ada_layer_norm_continuous import ( - AdaLayerNormContinuous, -) -from mflux.models.transformer.embed_nd import EmbedND -from mflux.models.transformer.joint_transformer_block import ( - JointTransformerBlock, -) -from mflux.models.transformer.single_transformer_block import ( - SingleTransformerBlock, -) -from mflux.models.transformer.time_text_embed import TimeTextEmbed +from mflux.models.flux.model.flux_transformer.ada_layer_norm_continuous import AdaLayerNormContinuous +from mflux.models.flux.model.flux_transformer.embed_nd import EmbedND +from mflux.models.flux.model.flux_transformer.joint_transformer_block import JointTransformerBlock +from mflux.models.flux.model.flux_transformer.single_transformer_block import SingleTransformerBlock +from mflux.models.flux.model.flux_transformer.time_text_embed import TimeTextEmbed class Transformer(nn.Module): @@ -52,7 +46,7 @@ class Transformer(nn.Module): text_embeddings = Transformer.compute_text_embeddings(t, pooled_prompt_embeds, self.time_text_embed, config) image_rotary_embeddings = Transformer.compute_rotary_embeddings(prompt_embeds, self.pos_embed, config, kontext_image_ids) # fmt: off - # 2. Run the joint transformer blocks + # 2. Run the joint flux_transformer blocks for idx, block in enumerate(self.transformer_blocks): encoder_hidden_states, hidden_states = self._apply_joint_transformer_block( idx=idx, @@ -67,7 +61,7 @@ class Transformer(nn.Module): # 3. Concat the hidden states hidden_states = mx.concatenate([encoder_hidden_states, hidden_states], axis=1) - # 4. Run the single transformer blocks + # 4. Run the single flux_transformer blocks for idx, block in enumerate(self.single_transformer_blocks): hidden_states = self._apply_single_transformer_block( idx=idx, @@ -95,7 +89,7 @@ class Transformer(nn.Module): image_rotary_embeddings: mx.array, controlnet_single_block_samples: list[mx.array], ) -> mx.array: - # 1. Apply single transformer block + # 1. Apply single flux_transformer block hidden_states = block( hidden_states=hidden_states, text_embeddings=text_embeddings, @@ -118,7 +112,7 @@ class Transformer(nn.Module): image_rotary_embeddings: mx.array, controlnet_block_samples: list[mx.array], ) -> mx.array: - # 1. Apply joint transformer block + # 1. Apply joint flux_transformer block encoder_hidden_states, hidden_states = block( hidden_states=hidden_states, encoder_hidden_states=encoder_hidden_states, diff --git a/src/mflux/kontext/__init__.py b/src/mflux/models/flux/model/flux_vae/__init__.py similarity index 100% rename from src/mflux/kontext/__init__.py rename to src/mflux/models/flux/model/flux_vae/__init__.py diff --git a/src/mflux/kontext/utils/__init__.py b/src/mflux/models/flux/model/flux_vae/common/__init__.py similarity index 100% rename from src/mflux/kontext/utils/__init__.py rename to src/mflux/models/flux/model/flux_vae/common/__init__.py diff --git a/src/mflux/models/vae/common/attention.py b/src/mflux/models/flux/model/flux_vae/common/attention.py similarity index 100% rename from src/mflux/models/vae/common/attention.py rename to src/mflux/models/flux/model/flux_vae/common/attention.py diff --git a/src/mflux/models/vae/common/resnet_block_2d.py b/src/mflux/models/flux/model/flux_vae/common/resnet_block_2d.py similarity index 100% rename from src/mflux/models/vae/common/resnet_block_2d.py rename to src/mflux/models/flux/model/flux_vae/common/resnet_block_2d.py diff --git a/src/mflux/models/vae/common/unet_mid_block.py b/src/mflux/models/flux/model/flux_vae/common/unet_mid_block.py similarity index 81% rename from src/mflux/models/vae/common/unet_mid_block.py rename to src/mflux/models/flux/model/flux_vae/common/unet_mid_block.py index f6af721..f0ffb9a 100644 --- a/src/mflux/models/vae/common/unet_mid_block.py +++ b/src/mflux/models/flux/model/flux_vae/common/unet_mid_block.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.attention import Attention -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.common.attention import Attention +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D class UnetMidBlock(nn.Module): diff --git a/src/mflux/models/depth_pro/dino_v2/__init__.py b/src/mflux/models/flux/model/flux_vae/decoder/__init__.py similarity index 100% rename from src/mflux/models/depth_pro/dino_v2/__init__.py rename to src/mflux/models/flux/model/flux_vae/decoder/__init__.py diff --git a/src/mflux/models/vae/decoder/conv_in.py b/src/mflux/models/flux/model/flux_vae/decoder/conv_in.py similarity index 100% rename from src/mflux/models/vae/decoder/conv_in.py rename to src/mflux/models/flux/model/flux_vae/decoder/conv_in.py diff --git a/src/mflux/models/vae/decoder/conv_norm_out.py b/src/mflux/models/flux/model/flux_vae/decoder/conv_norm_out.py similarity index 100% rename from src/mflux/models/vae/decoder/conv_norm_out.py rename to src/mflux/models/flux/model/flux_vae/decoder/conv_norm_out.py diff --git a/src/mflux/models/vae/decoder/conv_out.py b/src/mflux/models/flux/model/flux_vae/decoder/conv_out.py similarity index 100% rename from src/mflux/models/vae/decoder/conv_out.py rename to src/mflux/models/flux/model/flux_vae/decoder/conv_out.py diff --git a/src/mflux/models/vae/decoder/decoder.py b/src/mflux/models/flux/model/flux_vae/decoder/decoder.py similarity index 86% rename from src/mflux/models/vae/decoder/decoder.py rename to src/mflux/models/flux/model/flux_vae/decoder/decoder.py index 87e8bef..e06a83f 100644 --- a/src/mflux/models/vae/decoder/decoder.py +++ b/src/mflux/models/flux/model/flux_vae/decoder/decoder.py @@ -1,13 +1,13 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.unet_mid_block import UnetMidBlock -from mflux.models.vae.decoder.conv_in import ConvIn -from mflux.models.vae.decoder.conv_norm_out import ConvNormOut -from mflux.models.vae.decoder.conv_out import ConvOut -from mflux.models.vae.decoder.up_block_1_or_2 import UpBlock1Or2 -from mflux.models.vae.decoder.up_block_3 import UpBlock3 -from mflux.models.vae.decoder.up_block_4 import UpBlock4 +from mflux.models.flux.model.flux_vae.common.unet_mid_block import UnetMidBlock +from mflux.models.flux.model.flux_vae.decoder.conv_in import ConvIn +from mflux.models.flux.model.flux_vae.decoder.conv_norm_out import ConvNormOut +from mflux.models.flux.model.flux_vae.decoder.conv_out import ConvOut +from mflux.models.flux.model.flux_vae.decoder.up_block_1_or_2 import UpBlock1Or2 +from mflux.models.flux.model.flux_vae.decoder.up_block_3 import UpBlock3 +from mflux.models.flux.model.flux_vae.decoder.up_block_4 import UpBlock4 class Decoder(nn.Module): diff --git a/src/mflux/models/vae/decoder/up_block_1_or_2.py b/src/mflux/models/flux/model/flux_vae/decoder/up_block_1_or_2.py similarity index 85% rename from src/mflux/models/vae/decoder/up_block_1_or_2.py rename to src/mflux/models/flux/model/flux_vae/decoder/up_block_1_or_2.py index 9de27af..e2f4aa3 100644 --- a/src/mflux/models/vae/decoder/up_block_1_or_2.py +++ b/src/mflux/models/flux/model/flux_vae/decoder/up_block_1_or_2.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D -from mflux.models.vae.decoder.up_sampler import UpSampler +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.decoder.up_sampler import UpSampler class UpBlock1Or2(nn.Module): diff --git a/src/mflux/models/vae/decoder/up_block_3.py b/src/mflux/models/flux/model/flux_vae/decoder/up_block_3.py similarity index 86% rename from src/mflux/models/vae/decoder/up_block_3.py rename to src/mflux/models/flux/model/flux_vae/decoder/up_block_3.py index b7c45ff..364c5b9 100644 --- a/src/mflux/models/vae/decoder/up_block_3.py +++ b/src/mflux/models/flux/model/flux_vae/decoder/up_block_3.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D -from mflux.models.vae.decoder.up_sampler import UpSampler +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.decoder.up_sampler import UpSampler class UpBlock3(nn.Module): diff --git a/src/mflux/models/vae/decoder/up_block_4.py b/src/mflux/models/flux/model/flux_vae/decoder/up_block_4.py similarity index 90% rename from src/mflux/models/vae/decoder/up_block_4.py rename to src/mflux/models/flux/model/flux_vae/decoder/up_block_4.py index 4d9b6a9..4c52736 100644 --- a/src/mflux/models/vae/decoder/up_block_4.py +++ b/src/mflux/models/flux/model/flux_vae/decoder/up_block_4.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D class UpBlock4(nn.Module): diff --git a/src/mflux/models/vae/decoder/up_sampler.py b/src/mflux/models/flux/model/flux_vae/decoder/up_sampler.py similarity index 100% rename from src/mflux/models/vae/decoder/up_sampler.py rename to src/mflux/models/flux/model/flux_vae/decoder/up_sampler.py diff --git a/src/mflux/models/redux_encoder/__init__.py b/src/mflux/models/flux/model/flux_vae/encoder/__init__.py similarity index 100% rename from src/mflux/models/redux_encoder/__init__.py rename to src/mflux/models/flux/model/flux_vae/encoder/__init__.py diff --git a/src/mflux/models/vae/encoder/conv_in.py b/src/mflux/models/flux/model/flux_vae/encoder/conv_in.py similarity index 100% rename from src/mflux/models/vae/encoder/conv_in.py rename to src/mflux/models/flux/model/flux_vae/encoder/conv_in.py diff --git a/src/mflux/models/vae/encoder/conv_norm_out.py b/src/mflux/models/flux/model/flux_vae/encoder/conv_norm_out.py similarity index 100% rename from src/mflux/models/vae/encoder/conv_norm_out.py rename to src/mflux/models/flux/model/flux_vae/encoder/conv_norm_out.py diff --git a/src/mflux/models/vae/encoder/conv_out.py b/src/mflux/models/flux/model/flux_vae/encoder/conv_out.py similarity index 100% rename from src/mflux/models/vae/encoder/conv_out.py rename to src/mflux/models/flux/model/flux_vae/encoder/conv_out.py diff --git a/src/mflux/models/vae/encoder/down_block_1.py b/src/mflux/models/flux/model/flux_vae/encoder/down_block_1.py similarity index 82% rename from src/mflux/models/vae/encoder/down_block_1.py rename to src/mflux/models/flux/model/flux_vae/encoder/down_block_1.py index 2abd5a8..0b9faa0 100644 --- a/src/mflux/models/vae/encoder/down_block_1.py +++ b/src/mflux/models/flux/model/flux_vae/encoder/down_block_1.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D -from mflux.models.vae.encoder.down_sampler import DownSampler +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.encoder.down_sampler import DownSampler class DownBlock1(nn.Module): diff --git a/src/mflux/models/vae/encoder/down_block_2.py b/src/mflux/models/flux/model/flux_vae/encoder/down_block_2.py similarity index 83% rename from src/mflux/models/vae/encoder/down_block_2.py rename to src/mflux/models/flux/model/flux_vae/encoder/down_block_2.py index 88beddc..8d2d93c 100644 --- a/src/mflux/models/vae/encoder/down_block_2.py +++ b/src/mflux/models/flux/model/flux_vae/encoder/down_block_2.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D -from mflux.models.vae.encoder.down_sampler import DownSampler +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.encoder.down_sampler import DownSampler class DownBlock2(nn.Module): diff --git a/src/mflux/models/vae/encoder/down_block_3.py b/src/mflux/models/flux/model/flux_vae/encoder/down_block_3.py similarity index 83% rename from src/mflux/models/vae/encoder/down_block_3.py rename to src/mflux/models/flux/model/flux_vae/encoder/down_block_3.py index 80cca20..452fbc5 100644 --- a/src/mflux/models/vae/encoder/down_block_3.py +++ b/src/mflux/models/flux/model/flux_vae/encoder/down_block_3.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D -from mflux.models.vae.encoder.down_sampler import DownSampler +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.encoder.down_sampler import DownSampler class DownBlock3(nn.Module): diff --git a/src/mflux/models/vae/encoder/down_block_4.py b/src/mflux/models/flux/model/flux_vae/encoder/down_block_4.py similarity index 87% rename from src/mflux/models/vae/encoder/down_block_4.py rename to src/mflux/models/flux/model/flux_vae/encoder/down_block_4.py index 95c9bf5..6eee6f5 100644 --- a/src/mflux/models/vae/encoder/down_block_4.py +++ b/src/mflux/models/flux/model/flux_vae/encoder/down_block_4.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.resnet_block_2d import ResnetBlock2D +from mflux.models.flux.model.flux_vae.common.resnet_block_2d import ResnetBlock2D class DownBlock4(nn.Module): diff --git a/src/mflux/models/vae/encoder/down_sampler.py b/src/mflux/models/flux/model/flux_vae/encoder/down_sampler.py similarity index 100% rename from src/mflux/models/vae/encoder/down_sampler.py rename to src/mflux/models/flux/model/flux_vae/encoder/down_sampler.py diff --git a/src/mflux/models/vae/encoder/encoder.py b/src/mflux/models/flux/model/flux_vae/encoder/encoder.py similarity index 56% rename from src/mflux/models/vae/encoder/encoder.py rename to src/mflux/models/flux/model/flux_vae/encoder/encoder.py index c3b3859..d55c638 100644 --- a/src/mflux/models/vae/encoder/encoder.py +++ b/src/mflux/models/flux/model/flux_vae/encoder/encoder.py @@ -1,14 +1,14 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.common.unet_mid_block import UnetMidBlock -from mflux.models.vae.encoder.conv_in import ConvIn -from mflux.models.vae.encoder.conv_norm_out import ConvNormOut -from mflux.models.vae.encoder.conv_out import ConvOut -from mflux.models.vae.encoder.down_block_1 import DownBlock1 -from mflux.models.vae.encoder.down_block_2 import DownBlock2 -from mflux.models.vae.encoder.down_block_3 import DownBlock3 -from mflux.models.vae.encoder.down_block_4 import DownBlock4 +from mflux.models.flux.model.flux_vae.common.unet_mid_block import UnetMidBlock +from mflux.models.flux.model.flux_vae.encoder.conv_in import ConvIn +from mflux.models.flux.model.flux_vae.encoder.conv_norm_out import ConvNormOut +from mflux.models.flux.model.flux_vae.encoder.conv_out import ConvOut +from mflux.models.flux.model.flux_vae.encoder.down_block_1 import DownBlock1 +from mflux.models.flux.model.flux_vae.encoder.down_block_2 import DownBlock2 +from mflux.models.flux.model.flux_vae.encoder.down_block_3 import DownBlock3 +from mflux.models.flux.model.flux_vae.encoder.down_block_4 import DownBlock4 class Encoder(nn.Module): diff --git a/src/mflux/models/vae/vae.py b/src/mflux/models/flux/model/flux_vae/vae.py similarity index 81% rename from src/mflux/models/vae/vae.py rename to src/mflux/models/flux/model/flux_vae/vae.py index 9ac7af5..7d8d833 100644 --- a/src/mflux/models/vae/vae.py +++ b/src/mflux/models/flux/model/flux_vae/vae.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.vae.decoder.decoder import Decoder -from mflux.models.vae.encoder.encoder import Encoder +from mflux.models.flux.model.flux_vae.decoder.decoder import Decoder +from mflux.models.flux.model.flux_vae.encoder.encoder import Encoder class VAE(nn.Module): diff --git a/src/mflux/models/siglip_vision_transformer/__init__.py b/src/mflux/models/flux/model/redux_encoder/__init__.py similarity index 100% rename from src/mflux/models/siglip_vision_transformer/__init__.py rename to src/mflux/models/flux/model/redux_encoder/__init__.py diff --git a/src/mflux/models/redux_encoder/redux_encoder.py b/src/mflux/models/flux/model/redux_encoder/redux_encoder.py similarity index 100% rename from src/mflux/models/redux_encoder/redux_encoder.py rename to src/mflux/models/flux/model/redux_encoder/redux_encoder.py diff --git a/src/mflux/models/text_encoder/__init__.py b/src/mflux/models/flux/model/siglip_vision_transformer/__init__.py similarity index 100% rename from src/mflux/models/text_encoder/__init__.py rename to src/mflux/models/flux/model/siglip_vision_transformer/__init__.py diff --git a/src/mflux/models/siglip_vision_transformer/siglip_encoder.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder.py similarity index 79% rename from src/mflux/models/siglip_vision_transformer/siglip_encoder.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder.py index 34059ae..fb4e3c5 100644 --- a/src/mflux/models/siglip_vision_transformer/siglip_encoder.py +++ b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.siglip_vision_transformer.siglip_encoder_layer import SiglipEncoderLayer +from mflux.models.flux.model.siglip_vision_transformer.siglip_encoder_layer import SiglipEncoderLayer class SiglipEncoder(nn.Module): diff --git a/src/mflux/models/siglip_vision_transformer/siglip_encoder_layer.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder_layer.py similarity index 81% rename from src/mflux/models/siglip_vision_transformer/siglip_encoder_layer.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder_layer.py index c47a78c..de95f5f 100644 --- a/src/mflux/models/siglip_vision_transformer/siglip_encoder_layer.py +++ b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_encoder_layer.py @@ -1,8 +1,8 @@ import mlx.core as mx from mlx import nn -from mflux.models.siglip_vision_transformer.siglip_mlp import SiglipMLP -from mflux.models.siglip_vision_transformer.siglip_sdpa_attention import SiglipSdpaAttention +from mflux.models.flux.model.siglip_vision_transformer.siglip_mlp import SiglipMLP +from mflux.models.flux.model.siglip_vision_transformer.siglip_sdpa_attention import SiglipSdpaAttention class SiglipEncoderLayer(nn.Module): diff --git a/src/mflux/models/siglip_vision_transformer/siglip_mlp.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_mlp.py similarity index 100% rename from src/mflux/models/siglip_vision_transformer/siglip_mlp.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_mlp.py diff --git a/src/mflux/models/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py similarity index 90% rename from src/mflux/models/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py index dfb1da2..cc1929a 100644 --- a/src/mflux/models/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py +++ b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_multi_head_attention_pooling_head.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.siglip_vision_transformer.siglip_mlp import SiglipMLP +from mflux.models.flux.model.siglip_vision_transformer.siglip_mlp import SiglipMLP class SiglipMultiHeadAttentionPoolingHead(nn.Module): diff --git a/src/mflux/models/siglip_vision_transformer/siglip_sdpa_attention.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_sdpa_attention.py similarity index 100% rename from src/mflux/models/siglip_vision_transformer/siglip_sdpa_attention.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_sdpa_attention.py diff --git a/src/mflux/models/siglip_vision_transformer/siglip_vision_embeddings.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_vision_embeddings.py similarity index 100% rename from src/mflux/models/siglip_vision_transformer/siglip_vision_embeddings.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_vision_embeddings.py diff --git a/src/mflux/models/siglip_vision_transformer/siglip_vision_transformer.py b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_vision_transformer.py similarity index 69% rename from src/mflux/models/siglip_vision_transformer/siglip_vision_transformer.py rename to src/mflux/models/flux/model/siglip_vision_transformer/siglip_vision_transformer.py index a7d9e88..abbcbea 100644 --- a/src/mflux/models/siglip_vision_transformer/siglip_vision_transformer.py +++ b/src/mflux/models/flux/model/siglip_vision_transformer/siglip_vision_transformer.py @@ -1,11 +1,11 @@ import mlx.core as mx from mlx import nn -from mflux.models.siglip_vision_transformer.siglip_encoder import SiglipEncoder -from mflux.models.siglip_vision_transformer.siglip_multi_head_attention_pooling_head import ( +from mflux.models.flux.model.siglip_vision_transformer.siglip_encoder import SiglipEncoder +from mflux.models.flux.model.siglip_vision_transformer.siglip_multi_head_attention_pooling_head import ( SiglipMultiHeadAttentionPoolingHead, ) -from mflux.models.siglip_vision_transformer.siglip_vision_embeddings import SiglipVisionEmbeddings +from mflux.models.flux.model.siglip_vision_transformer.siglip_vision_embeddings import SiglipVisionEmbeddings class SiglipVisionTransformer(nn.Module): diff --git a/src/mflux/models/text_encoder/clip_encoder/__init__.py b/src/mflux/models/flux/tokenizer/__init__.py similarity index 100% rename from src/mflux/models/text_encoder/clip_encoder/__init__.py rename to src/mflux/models/flux/tokenizer/__init__.py diff --git a/src/mflux/tokenizer/clip_tokenizer.py b/src/mflux/models/flux/tokenizer/clip_tokenizer.py similarity index 100% rename from src/mflux/tokenizer/clip_tokenizer.py rename to src/mflux/models/flux/tokenizer/clip_tokenizer.py diff --git a/src/mflux/tokenizer/t5_tokenizer.py b/src/mflux/models/flux/tokenizer/t5_tokenizer.py similarity index 100% rename from src/mflux/tokenizer/t5_tokenizer.py rename to src/mflux/models/flux/tokenizer/t5_tokenizer.py diff --git a/src/mflux/tokenizer/tokenizer_handler.py b/src/mflux/models/flux/tokenizer/tokenizer_handler.py similarity index 89% rename from src/mflux/tokenizer/tokenizer_handler.py rename to src/mflux/models/flux/tokenizer/tokenizer_handler.py index d90accd..e144025 100644 --- a/src/mflux/tokenizer/tokenizer_handler.py +++ b/src/mflux/models/flux/tokenizer/tokenizer_handler.py @@ -2,8 +2,8 @@ from pathlib import Path import transformers -from mflux.tokenizer.clip_tokenizer import TokenizerCLIP -from mflux.weights.download import snapshot_download +from mflux.models.flux.tokenizer.clip_tokenizer import TokenizerCLIP +from mflux.utils.download import snapshot_download class TokenizerHandler: diff --git a/src/mflux/models/text_encoder/t5_encoder/__init__.py b/src/mflux/models/flux/variants/__init__.py similarity index 100% rename from src/mflux/models/text_encoder/t5_encoder/__init__.py rename to src/mflux/models/flux/variants/__init__.py diff --git a/src/mflux/models/flux/variants/concept_attention/__init__.py b/src/mflux/models/flux/variants/concept_attention/__init__.py new file mode 100644 index 0000000..f2779a2 --- /dev/null +++ b/src/mflux/models/flux/variants/concept_attention/__init__.py @@ -0,0 +1 @@ +# Concept Attention flux_transformer models diff --git a/src/mflux/community/concept_attention/attention_data.py b/src/mflux/models/flux/variants/concept_attention/attention_data.py similarity index 94% rename from src/mflux/community/concept_attention/attention_data.py rename to src/mflux/models/flux/variants/concept_attention/attention_data.py index 13697fa..0c46e35 100644 --- a/src/mflux/community/concept_attention/attention_data.py +++ b/src/mflux/models/flux/variants/concept_attention/attention_data.py @@ -5,9 +5,7 @@ from typing import List import mlx.core as mx import PIL.Image -from mflux.community.concept_attention.joint_transformer_block_concept import ( - LayerAttentionData, -) +from mflux.models.flux.variants.concept_attention.joint_transformer_block_concept import LayerAttentionData @dataclass diff --git a/src/mflux/community/concept_attention/concept_util.py b/src/mflux/models/flux/variants/concept_attention/concept_util.py similarity index 96% rename from src/mflux/community/concept_attention/concept_util.py rename to src/mflux/models/flux/variants/concept_attention/concept_util.py index d5c1e6b..3896b48 100644 --- a/src/mflux/community/concept_attention/concept_util.py +++ b/src/mflux/models/flux/variants/concept_attention/concept_util.py @@ -3,10 +3,7 @@ import mlx.core as mx import numpy as np import PIL.Image -from mflux.community.concept_attention.attention_data import ( - ConceptHeatmap, - GenerationAttentionData, -) +from mflux.models.flux.variants.concept_attention.attention_data import ConceptHeatmap, GenerationAttentionData class ConceptUtil: diff --git a/src/mflux/community/concept_attention/flux_concept.py b/src/mflux/models/flux/variants/concept_attention/flux_concept.py similarity index 90% rename from src/mflux/community/concept_attention/flux_concept.py rename to src/mflux/models/flux/variants/concept_attention/flux_concept.py index 6fd1171..7f985b8 100644 --- a/src/mflux/community/concept_attention/flux_concept.py +++ b/src/mflux/models/flux/variants/concept_attention/flux_concept.py @@ -3,21 +3,19 @@ from mlx import nn from tqdm import tqdm from mflux.callbacks.callbacks import Callbacks -from mflux.community.concept_attention.attention_data import ( - GenerationAttentionData, -) -from mflux.community.concept_attention.concept_util import ConceptUtil -from mflux.community.concept_attention.transformer_concept import TransformerConcept from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import Img2Img, LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.concept_attention.attention_data import GenerationAttentionData +from mflux.models.flux.variants.concept_attention.concept_util import ConceptUtil +from mflux.models.flux.variants.concept_attention.transformer_concept import TransformerConcept from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/community/concept_attention/flux_concept_from_image.py b/src/mflux/models/flux/variants/concept_attention/flux_concept_from_image.py similarity index 91% rename from src/mflux/community/concept_attention/flux_concept_from_image.py rename to src/mflux/models/flux/variants/concept_attention/flux_concept_from_image.py index 23cb35c..410be6e 100644 --- a/src/mflux/community/concept_attention/flux_concept_from_image.py +++ b/src/mflux/models/flux/variants/concept_attention/flux_concept_from_image.py @@ -3,19 +3,19 @@ from mlx import nn from tqdm import tqdm from mflux.callbacks.callbacks import Callbacks -from mflux.community.concept_attention.attention_data import GenerationAttentionData -from mflux.community.concept_attention.concept_util import ConceptUtil -from mflux.community.concept_attention.transformer_concept import TransformerConcept from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.concept_attention.attention_data import GenerationAttentionData +from mflux.models.flux.variants.concept_attention.concept_util import ConceptUtil +from mflux.models.flux.variants.concept_attention.transformer_concept import TransformerConcept from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/community/concept_attention/joint_attention_concept.py b/src/mflux/models/flux/variants/concept_attention/joint_attention_concept.py similarity index 98% rename from src/mflux/community/concept_attention/joint_attention_concept.py rename to src/mflux/models/flux/variants/concept_attention/joint_attention_concept.py index 4cc1696..47ce17c 100644 --- a/src/mflux/community/concept_attention/joint_attention_concept.py +++ b/src/mflux/models/flux/variants/concept_attention/joint_attention_concept.py @@ -1,7 +1,7 @@ import mlx.core as mx from mlx import nn -from mflux.models.transformer.common.attention_utils import AttentionUtils +from mflux.models.flux.model.flux_transformer.common.attention_utils import AttentionUtils class JointAttentionConcept(nn.Module): diff --git a/src/mflux/community/concept_attention/joint_transformer_block_concept.py b/src/mflux/models/flux/variants/concept_attention/joint_transformer_block_concept.py similarity index 91% rename from src/mflux/community/concept_attention/joint_transformer_block_concept.py rename to src/mflux/models/flux/variants/concept_attention/joint_transformer_block_concept.py index a51f61f..71e31d0 100644 --- a/src/mflux/community/concept_attention/joint_transformer_block_concept.py +++ b/src/mflux/models/flux/variants/concept_attention/joint_transformer_block_concept.py @@ -3,10 +3,10 @@ from dataclasses import dataclass import mlx.core as mx from mlx import nn -from mflux.community.concept_attention.joint_attention_concept import JointAttentionConcept -from mflux.models.transformer.ada_layer_norm_zero import AdaLayerNormZero -from mflux.models.transformer.feed_forward import FeedForward -from mflux.models.transformer.joint_transformer_block import JointTransformerBlock +from mflux.models.flux.model.flux_transformer.ada_layer_norm_zero import AdaLayerNormZero +from mflux.models.flux.model.flux_transformer.feed_forward import FeedForward +from mflux.models.flux.model.flux_transformer.joint_transformer_block import JointTransformerBlock +from mflux.models.flux.variants.concept_attention.joint_attention_concept import JointAttentionConcept @dataclass diff --git a/src/mflux/community/concept_attention/transformer_concept.py b/src/mflux/models/flux/variants/concept_attention/transformer_concept.py similarity index 82% rename from src/mflux/community/concept_attention/transformer_concept.py rename to src/mflux/models/flux/variants/concept_attention/transformer_concept.py index 6b0bfa5..6e452c1 100644 --- a/src/mflux/community/concept_attention/transformer_concept.py +++ b/src/mflux/models/flux/variants/concept_attention/transformer_concept.py @@ -1,23 +1,15 @@ import mlx.core as mx from mlx import nn -from mflux.community.concept_attention.attention_data import ( - TimestepAttentionData, -) -from mflux.community.concept_attention.joint_transformer_block_concept import ( - JointTransformerBlockConcept, -) from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig -from mflux.models.transformer.ada_layer_norm_continuous import ( - AdaLayerNormContinuous, -) -from mflux.models.transformer.embed_nd import EmbedND -from mflux.models.transformer.single_transformer_block import ( - SingleTransformerBlock, -) -from mflux.models.transformer.time_text_embed import TimeTextEmbed -from mflux.models.transformer.transformer import Transformer +from mflux.models.flux.model.flux_transformer.ada_layer_norm_continuous import AdaLayerNormContinuous +from mflux.models.flux.model.flux_transformer.embed_nd import EmbedND +from mflux.models.flux.model.flux_transformer.single_transformer_block import SingleTransformerBlock +from mflux.models.flux.model.flux_transformer.time_text_embed import TimeTextEmbed +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.variants.concept_attention.attention_data import TimestepAttentionData +from mflux.models.flux.variants.concept_attention.joint_transformer_block_concept import JointTransformerBlockConcept class TransformerConcept(nn.Module): @@ -56,7 +48,7 @@ class TransformerConcept(nn.Module): image_rotary_embeddings = Transformer.compute_rotary_embeddings(prompt_embeds, self.pos_embed, config, None) # fmt: off image_rotary_embeddings_concept = Transformer.compute_rotary_embeddings(prompt_embeds_concept, self.pos_embed, config, None) # fmt: off - # 2. Run the joint transformer blocks + # 2. Run the joint flux_transformer blocks attention_information = [] for idx, block in enumerate(self.transformer_blocks): encoder_hidden_states, hidden_states, encoder_hidden_states_concept, attn = block( @@ -74,7 +66,7 @@ class TransformerConcept(nn.Module): # 3. Concat the hidden states hidden_states = mx.concatenate([encoder_hidden_states, hidden_states], axis=1) - # 4. Run the single transformer blocks + # 4. Run the single flux_transformer blocks for idx, block in enumerate(self.single_transformer_blocks): hidden_states = block( hidden_states=hidden_states, diff --git a/src/mflux/models/transformer/__init__.py b/src/mflux/models/flux/variants/controlnet/__init__.py similarity index 100% rename from src/mflux/models/transformer/__init__.py rename to src/mflux/models/flux/variants/controlnet/__init__.py diff --git a/src/mflux/controlnet/controlnet_util.py b/src/mflux/models/flux/variants/controlnet/controlnet_util.py similarity index 97% rename from src/mflux/controlnet/controlnet_util.py rename to src/mflux/models/flux/variants/controlnet/controlnet_util.py index da38d70..964dcf3 100644 --- a/src/mflux/controlnet/controlnet_util.py +++ b/src/mflux/models/flux/variants/controlnet/controlnet_util.py @@ -5,7 +5,7 @@ import mlx.core as mx import numpy as np import PIL.Image -from mflux.models.vae.vae import VAE +from mflux.models.flux.model.flux_vae.vae import VAE from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import StrOrBytesPath diff --git a/src/mflux/controlnet/flux_controlnet.py b/src/mflux/models/flux/variants/controlnet/flux_controlnet.py similarity index 89% rename from src/mflux/controlnet/flux_controlnet.py rename to src/mflux/models/flux/variants/controlnet/flux_controlnet.py index 3a29d02..678a7cd 100644 --- a/src/mflux/controlnet/flux_controlnet.py +++ b/src/mflux/models/flux/variants/controlnet/flux_controlnet.py @@ -6,20 +6,20 @@ from mflux.callbacks.callbacks import Callbacks from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig -from mflux.controlnet.controlnet_util import ControlnetUtil -from mflux.controlnet.transformer_controlnet import TransformerControlnet from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.controlnet.controlnet_util import ControlnetUtil +from mflux.models.flux.variants.controlnet.transformer_controlnet import TransformerControlnet +from mflux.models.flux.weights.model_saver import ModelSaver from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil, StrOrBytesPath -from mflux.weights.model_saver import ModelSaver class Flux1Controlnet(nn.Module): diff --git a/src/mflux/controlnet/transformer_controlnet.py b/src/mflux/models/flux/variants/controlnet/transformer_controlnet.py similarity index 88% rename from src/mflux/controlnet/transformer_controlnet.py rename to src/mflux/models/flux/variants/controlnet/transformer_controlnet.py index 9b0e3ec..39da5a0 100644 --- a/src/mflux/controlnet/transformer_controlnet.py +++ b/src/mflux/models/flux/variants/controlnet/transformer_controlnet.py @@ -3,11 +3,11 @@ from mlx import nn from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig -from mflux.models.transformer.embed_nd import EmbedND -from mflux.models.transformer.joint_transformer_block import JointTransformerBlock -from mflux.models.transformer.single_transformer_block import SingleTransformerBlock -from mflux.models.transformer.time_text_embed import TimeTextEmbed -from mflux.models.transformer.transformer import Transformer +from mflux.models.flux.model.flux_transformer.embed_nd import EmbedND +from mflux.models.flux.model.flux_transformer.joint_transformer_block import JointTransformerBlock +from mflux.models.flux.model.flux_transformer.single_transformer_block import SingleTransformerBlock +from mflux.models.flux.model.flux_transformer.time_text_embed import TimeTextEmbed +from mflux.models.flux.model.flux_transformer.transformer import Transformer class TransformerControlnet(nn.Module): @@ -44,7 +44,7 @@ class TransformerControlnet(nn.Module): text_embeddings = Transformer.compute_text_embeddings(t, pooled_prompt_embeds, self.time_text_embed, config) image_rotary_embeddings = Transformer.compute_rotary_embeddings(prompt_embeds, self.pos_embed, config, None) - # 2. Run the joint transformer blocks + # 2. Run the joint flux_transformer blocks controlnet_block_samples = [] for idx, block in enumerate(self.transformer_blocks): encoder_hidden_states, hidden_states = self._apply_joint_transformer_block( @@ -61,7 +61,7 @@ class TransformerControlnet(nn.Module): # 3. Concat the hidden states hidden_states = mx.concatenate([encoder_hidden_states, hidden_states], axis=1) - # 4. Run the single transformer blocks + # 4. Run the single flux_transformer blocks controlnet_single_block_samples = [] for idx, block in enumerate(self.single_transformer_blocks): hidden_states = self._apply_single_transformer_block( @@ -88,7 +88,7 @@ class TransformerControlnet(nn.Module): image_rotary_embeddings: mx.array, controlnet_single_block_samples: list[mx.array], ) -> mx.array: - # 1. Apply single transformer block + # 1. Apply single flux_transformer block hidden_states = block( hidden_states=hidden_states, text_embeddings=text_embeddings, @@ -114,7 +114,7 @@ class TransformerControlnet(nn.Module): image_rotary_embeddings: mx.array, controlnet_block_samples: list[mx.array], ) -> tuple[mx.array, mx.array]: - # 1. Apply joint transformer block + # 1. Apply joint flux_transformer block encoder_hidden_states, hidden_states = block( hidden_states=hidden_states, encoder_hidden_states=encoder_hidden_states, diff --git a/src/mflux/controlnet/weight_handler_controlnet.py b/src/mflux/models/flux/variants/controlnet/weight_handler_controlnet.py similarity index 93% rename from src/mflux/controlnet/weight_handler_controlnet.py rename to src/mflux/models/flux/variants/controlnet/weight_handler_controlnet.py index e4ab354..59a3bc3 100644 --- a/src/mflux/controlnet/weight_handler_controlnet.py +++ b/src/mflux/models/flux/variants/controlnet/weight_handler_controlnet.py @@ -4,9 +4,9 @@ from pathlib import Path import mlx.core as mx from mlx.utils import tree_unflatten -from mflux.weights.download import snapshot_download -from mflux.weights.weight_handler import MetaData -from mflux.weights.weight_util import WeightUtil +from mflux.models.flux.weights.weight_handler import MetaData +from mflux.models.flux.weights.weight_util import WeightUtil +from mflux.utils.download import snapshot_download class WeightHandlerControlnet: diff --git a/src/mflux/models/transformer/common/__init__.py b/src/mflux/models/flux/variants/depth/__init__.py similarity index 100% rename from src/mflux/models/transformer/common/__init__.py rename to src/mflux/models/flux/variants/depth/__init__.py diff --git a/src/mflux/flux_tools/depth/depth_util.py b/src/mflux/models/flux/variants/depth/depth_util.py similarity index 97% rename from src/mflux/flux_tools/depth/depth_util.py rename to src/mflux/models/flux/variants/depth/depth_util.py index 89fa96c..8149af5 100644 --- a/src/mflux/flux_tools/depth/depth_util.py +++ b/src/mflux/models/flux/variants/depth/depth_util.py @@ -7,7 +7,7 @@ import PIL.Image from mflux.config.runtime_config import RuntimeConfig from mflux.models.depth_pro.depth_pro import DepthPro -from mflux.models.vae.vae import VAE +from mflux.models.flux.model.flux_vae.vae import VAE from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/flux_tools/depth/flux_depth.py b/src/mflux/models/flux/variants/depth/flux_depth.py similarity index 90% rename from src/mflux/flux_tools/depth/flux_depth.py rename to src/mflux/models/flux/variants/depth/flux_depth.py index 1af8415..4279560 100644 --- a/src/mflux/flux_tools/depth/flux_depth.py +++ b/src/mflux/models/flux/variants/depth/flux_depth.py @@ -7,15 +7,15 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer -from mflux.flux_tools.depth.depth_util import DepthUtil from mflux.latent_creator.latent_creator import LatentCreator from mflux.models.depth_pro.depth_pro import DepthPro -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.depth.depth_util import DepthUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/vae/__init__.py b/src/mflux/models/flux/variants/dreambooth/__init__.py similarity index 100% rename from src/mflux/models/vae/__init__.py rename to src/mflux/models/flux/variants/dreambooth/__init__.py diff --git a/src/mflux/dreambooth/_example/images/01.jpeg b/src/mflux/models/flux/variants/dreambooth/_example/images/01.jpeg similarity index 100% rename from src/mflux/dreambooth/_example/images/01.jpeg rename to src/mflux/models/flux/variants/dreambooth/_example/images/01.jpeg diff --git a/src/mflux/dreambooth/_example/images/02.jpeg b/src/mflux/models/flux/variants/dreambooth/_example/images/02.jpeg similarity index 100% rename from src/mflux/dreambooth/_example/images/02.jpeg rename to src/mflux/models/flux/variants/dreambooth/_example/images/02.jpeg diff --git a/src/mflux/dreambooth/_example/images/03.jpeg b/src/mflux/models/flux/variants/dreambooth/_example/images/03.jpeg similarity index 100% rename from src/mflux/dreambooth/_example/images/03.jpeg rename to src/mflux/models/flux/variants/dreambooth/_example/images/03.jpeg diff --git a/src/mflux/dreambooth/_example/images/04.jpeg b/src/mflux/models/flux/variants/dreambooth/_example/images/04.jpeg similarity index 100% rename from src/mflux/dreambooth/_example/images/04.jpeg rename to src/mflux/models/flux/variants/dreambooth/_example/images/04.jpeg diff --git a/src/mflux/dreambooth/_example/images/05.jpeg b/src/mflux/models/flux/variants/dreambooth/_example/images/05.jpeg similarity index 100% rename from src/mflux/dreambooth/_example/images/05.jpeg rename to src/mflux/models/flux/variants/dreambooth/_example/images/05.jpeg diff --git a/src/mflux/dreambooth/_example/train.json b/src/mflux/models/flux/variants/dreambooth/_example/train.json similarity index 100% rename from src/mflux/dreambooth/_example/train.json rename to src/mflux/models/flux/variants/dreambooth/_example/train.json diff --git a/src/mflux/models/vae/common/__init__.py b/src/mflux/models/flux/variants/dreambooth/dataset/__init__.py similarity index 100% rename from src/mflux/models/vae/common/__init__.py rename to src/mflux/models/flux/variants/dreambooth/dataset/__init__.py diff --git a/src/mflux/dreambooth/dataset/batch.py b/src/mflux/models/flux/variants/dreambooth/dataset/batch.py similarity index 100% rename from src/mflux/dreambooth/dataset/batch.py rename to src/mflux/models/flux/variants/dreambooth/dataset/batch.py diff --git a/src/mflux/dreambooth/dataset/dataset.py b/src/mflux/models/flux/variants/dreambooth/dataset/dataset.py similarity index 89% rename from src/mflux/dreambooth/dataset/dataset.py rename to src/mflux/models/flux/variants/dreambooth/dataset/dataset.py index 82d3bf4..14c7630 100644 --- a/src/mflux/dreambooth/dataset/dataset.py +++ b/src/mflux/models/flux/variants/dreambooth/dataset/dataset.py @@ -5,10 +5,10 @@ import PIL.Image from mlx import nn from tqdm import tqdm -from mflux.dreambooth.dataset.batch import Example -from mflux.dreambooth.dataset.dreambooth_preprocessing import DreamBoothPreProcessing -from mflux.dreambooth.state.training_spec import ExampleSpec -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.dreambooth.dataset.batch import Example +from mflux.models.flux.variants.dreambooth.dataset.dreambooth_preprocessing import DreamBoothPreProcessing +from mflux.models.flux.variants.dreambooth.state.training_spec import ExampleSpec +from mflux.models.flux.variants.txt2img.flux import Flux1 from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/dreambooth/dataset/dreambooth_preprocessing.py b/src/mflux/models/flux/variants/dreambooth/dataset/dreambooth_preprocessing.py similarity index 69% rename from src/mflux/dreambooth/dataset/dreambooth_preprocessing.py rename to src/mflux/models/flux/variants/dreambooth/dataset/dreambooth_preprocessing.py index 30f62bd..1ceb6c6 100644 --- a/src/mflux/dreambooth/dataset/dreambooth_preprocessing.py +++ b/src/mflux/models/flux/variants/dreambooth/dataset/dreambooth_preprocessing.py @@ -1,4 +1,4 @@ -from mflux.dreambooth.dataset.batch import Example +from mflux.models.flux.variants.dreambooth.dataset.batch import Example class DreamBoothPreProcessing: diff --git a/src/mflux/dreambooth/dataset/iterator.py b/src/mflux/models/flux/variants/dreambooth/dataset/iterator.py similarity index 94% rename from src/mflux/dreambooth/dataset/iterator.py rename to src/mflux/models/flux/variants/dreambooth/dataset/iterator.py index c058d5b..c605ba3 100644 --- a/src/mflux/dreambooth/dataset/iterator.py +++ b/src/mflux/models/flux/variants/dreambooth/dataset/iterator.py @@ -4,10 +4,10 @@ import random from pathlib import Path from typing import Any -from mflux.dreambooth.dataset.batch import Batch -from mflux.dreambooth.dataset.dataset import Dataset -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.dreambooth.dataset.batch import Batch +from mflux.models.flux.variants.dreambooth.dataset.dataset import Dataset +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil class Iterator: diff --git a/src/mflux/dreambooth/dreambooth.py b/src/mflux/models/flux/variants/dreambooth/dreambooth.py similarity index 84% rename from src/mflux/dreambooth/dreambooth.py rename to src/mflux/models/flux/variants/dreambooth/dreambooth.py index 16bf853..7ba51a3 100644 --- a/src/mflux/dreambooth/dreambooth.py +++ b/src/mflux/models/flux/variants/dreambooth/dreambooth.py @@ -2,12 +2,12 @@ from mlx import nn from tqdm import tqdm from mflux.config.runtime_config import RuntimeConfig -from mflux.dreambooth.optimization.dreambooth_loss import DreamBoothLoss -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.training_state import TrainingState -from mflux.dreambooth.statistics.plotter import Plotter -from mflux.flux.flux import Flux1 -from mflux.weights.weight_handler_lora import WeightHandlerLoRA +from mflux.models.flux.variants.dreambooth.optimization.dreambooth_loss import DreamBoothLoss +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.training_state import TrainingState +from mflux.models.flux.variants.dreambooth.statistics.plotter import Plotter +from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.flux.weights.weight_handler_lora import WeightHandlerLoRA class DreamBooth: diff --git a/src/mflux/dreambooth/dreambooth_initializer.py b/src/mflux/models/flux/variants/dreambooth/dreambooth_initializer.py similarity index 79% rename from src/mflux/dreambooth/dreambooth_initializer.py rename to src/mflux/models/flux/variants/dreambooth/dreambooth_initializer.py index 629a969..d8c1e5f 100644 --- a/src/mflux/dreambooth/dreambooth_initializer.py +++ b/src/mflux/models/flux/variants/dreambooth/dreambooth_initializer.py @@ -3,14 +3,14 @@ import mlx.core.random as random from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig -from mflux.dreambooth.dataset.dataset import Dataset -from mflux.dreambooth.dataset.iterator import Iterator -from mflux.dreambooth.lora_layers.lora_layers import LoRALayers -from mflux.dreambooth.optimization.optimizer import Optimizer -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.training_state import TrainingState -from mflux.dreambooth.statistics.statistics import Statistics -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.dreambooth.dataset.dataset import Dataset +from mflux.models.flux.variants.dreambooth.dataset.iterator import Iterator +from mflux.models.flux.variants.dreambooth.lora_layers.lora_layers import LoRALayers +from mflux.models.flux.variants.dreambooth.optimization.optimizer import Optimizer +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.training_state import TrainingState +from mflux.models.flux.variants.dreambooth.statistics.statistics import Statistics +from mflux.models.flux.variants.txt2img.flux import Flux1 class DreamBoothInitializer: diff --git a/src/mflux/models/vae/decoder/__init__.py b/src/mflux/models/flux/variants/dreambooth/lora_layers/__init__.py similarity index 100% rename from src/mflux/models/vae/decoder/__init__.py rename to src/mflux/models/flux/variants/dreambooth/lora_layers/__init__.py diff --git a/src/mflux/dreambooth/lora_layers/lora_layers.py b/src/mflux/models/flux/variants/dreambooth/lora_layers/lora_layers.py similarity index 94% rename from src/mflux/dreambooth/lora_layers/lora_layers.py rename to src/mflux/models/flux/variants/dreambooth/lora_layers/lora_layers.py index 493110f..6628f93 100644 --- a/src/mflux/dreambooth/lora_layers/lora_layers.py +++ b/src/mflux/models/flux/variants/dreambooth/lora_layers/lora_layers.py @@ -6,16 +6,20 @@ import mlx.core as mx from mlx import nn from mlx.utils import tree_flatten -from mflux.dreambooth.lora_layers.linear_lora_layer import LoRALinear -from mflux.dreambooth.state.training_spec import SingleTransformerBlocks, TrainingSpec, TransformerBlocks -from mflux.dreambooth.state.zip_util import ZipUtil -from mflux.models.transformer.joint_transformer_block import JointTransformerBlock -from mflux.models.transformer.single_transformer_block import SingleTransformerBlock +from mflux.models.common.lora.layer.linear_lora_layer import LoRALinear +from mflux.models.flux.model.flux_transformer.joint_transformer_block import JointTransformerBlock +from mflux.models.flux.model.flux_transformer.single_transformer_block import SingleTransformerBlock +from mflux.models.flux.variants.dreambooth.state.training_spec import ( + SingleTransformerBlocks, + TrainingSpec, + TransformerBlocks, +) +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.weights.weight_handler import MetaData, WeightHandler from mflux.utils.version_util import VersionUtil -from mflux.weights.weight_handler import MetaData, WeightHandler if TYPE_CHECKING: - from mflux.flux.flux import Flux1 + from mflux.models.flux.variants.txt2img.flux import Flux1 class LoRALayers: @@ -26,7 +30,7 @@ class LoRALayers: def from_spec(flux: "Flux1", training_spec: TrainingSpec) -> "LoRALayers": if training_spec.lora_layers.state_path is not None: # Load from state if present in the spec - from mflux.weights.weight_handler_lora import WeightHandlerLoRA + from mflux.models.flux.weights.weight_handler_lora import WeightHandlerLoRA weights = ZipUtil.unzip( zip_path=training_spec.checkpoint_path, diff --git a/src/mflux/models/vae/encoder/__init__.py b/src/mflux/models/flux/variants/dreambooth/optimization/__init__.py similarity index 100% rename from src/mflux/models/vae/encoder/__init__.py rename to src/mflux/models/flux/variants/dreambooth/optimization/__init__.py diff --git a/src/mflux/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf b/src/mflux/models/flux/variants/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf similarity index 100% rename from src/mflux/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf rename to src/mflux/models/flux/variants/dreambooth/optimization/_loss_derivation/dreambooth_loss.pdf diff --git a/src/mflux/dreambooth/optimization/_loss_derivation/dreambooth_loss.tex b/src/mflux/models/flux/variants/dreambooth/optimization/_loss_derivation/dreambooth_loss.tex similarity index 100% rename from src/mflux/dreambooth/optimization/_loss_derivation/dreambooth_loss.tex rename to src/mflux/models/flux/variants/dreambooth/optimization/_loss_derivation/dreambooth_loss.tex diff --git a/src/mflux/dreambooth/optimization/dreambooth_loss.py b/src/mflux/models/flux/variants/dreambooth/optimization/dreambooth_loss.py similarity index 94% rename from src/mflux/dreambooth/optimization/dreambooth_loss.py rename to src/mflux/models/flux/variants/dreambooth/optimization/dreambooth_loss.py index 6014ae3..7a3fac3 100644 --- a/src/mflux/dreambooth/optimization/dreambooth_loss.py +++ b/src/mflux/models/flux/variants/dreambooth/optimization/dreambooth_loss.py @@ -4,10 +4,9 @@ import mlx.core as mx from mflux.config.config import Config from mflux.config.runtime_config import RuntimeConfig -from mflux.dreambooth.dataset.batch import Batch -from mflux.dreambooth.dataset.dataset import Example -from mflux.flux.flux import Flux1 from mflux.latent_creator.latent_creator import LatentCreator +from mflux.models.flux.variants.dreambooth.dataset.batch import Batch, Example +from mflux.models.flux.variants.txt2img.flux import Flux1 class DreamBoothLoss: diff --git a/src/mflux/dreambooth/optimization/optimizer.py b/src/mflux/models/flux/variants/dreambooth/optimization/optimizer.py similarity index 91% rename from src/mflux/dreambooth/optimization/optimizer.py rename to src/mflux/models/flux/variants/dreambooth/optimization/optimizer.py index 5cddeea..e45a541 100644 --- a/src/mflux/dreambooth/optimization/optimizer.py +++ b/src/mflux/models/flux/variants/dreambooth/optimization/optimizer.py @@ -6,8 +6,8 @@ import mlx.optimizers import mlx.optimizers as optim from mlx.utils import tree_flatten, tree_unflatten -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil class Optimizers(Enum): diff --git a/src/mflux/tokenizer/__init__.py b/src/mflux/models/flux/variants/dreambooth/state/__init__.py similarity index 100% rename from src/mflux/tokenizer/__init__.py rename to src/mflux/models/flux/variants/dreambooth/state/__init__.py diff --git a/src/mflux/dreambooth/state/training_spec.py b/src/mflux/models/flux/variants/dreambooth/state/training_spec.py similarity index 99% rename from src/mflux/dreambooth/state/training_spec.py rename to src/mflux/models/flux/variants/dreambooth/state/training_spec.py index a98e996..e241b14 100644 --- a/src/mflux/dreambooth/state/training_spec.py +++ b/src/mflux/models/flux/variants/dreambooth/state/training_spec.py @@ -5,7 +5,7 @@ from dataclasses import asdict, dataclass from pathlib import Path from typing import List -from mflux.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil @dataclass diff --git a/src/mflux/dreambooth/state/training_state.py b/src/mflux/models/flux/variants/dreambooth/state/training_state.py similarity index 93% rename from src/mflux/dreambooth/state/training_state.py rename to src/mflux/models/flux/variants/dreambooth/state/training_state.py index 2d3a0f5..824a298 100644 --- a/src/mflux/dreambooth/state/training_state.py +++ b/src/mflux/models/flux/variants/dreambooth/state/training_state.py @@ -4,12 +4,12 @@ import tempfile import zipfile from pathlib import Path -from mflux.dreambooth.dataset.iterator import Iterator -from mflux.dreambooth.lora_layers.lora_layers import LoRALayers -from mflux.dreambooth.optimization.optimizer import Optimizer -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.zip_util import ZipUtil -from mflux.dreambooth.statistics.statistics import Statistics +from mflux.models.flux.variants.dreambooth.dataset.iterator import Iterator +from mflux.models.flux.variants.dreambooth.lora_layers.lora_layers import LoRALayers +from mflux.models.flux.variants.dreambooth.optimization.optimizer import Optimizer +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.dreambooth.statistics.statistics import Statistics DREAMBOOTH_PATH_CHECKPOINTS = "_checkpoints" DREAMBOOTH_FILE_NAME_CHECKPOINT = "checkpoint" diff --git a/src/mflux/dreambooth/state/zip_util.py b/src/mflux/models/flux/variants/dreambooth/state/zip_util.py similarity index 100% rename from src/mflux/dreambooth/state/zip_util.py rename to src/mflux/models/flux/variants/dreambooth/state/zip_util.py diff --git a/src/mflux/weights/__init__.py b/src/mflux/models/flux/variants/dreambooth/statistics/__init__.py similarity index 100% rename from src/mflux/weights/__init__.py rename to src/mflux/models/flux/variants/dreambooth/statistics/__init__.py diff --git a/src/mflux/dreambooth/statistics/plotter.py b/src/mflux/models/flux/variants/dreambooth/statistics/plotter.py similarity index 96% rename from src/mflux/dreambooth/statistics/plotter.py rename to src/mflux/models/flux/variants/dreambooth/statistics/plotter.py index 1bb4929..3b799bc 100644 --- a/src/mflux/dreambooth/statistics/plotter.py +++ b/src/mflux/models/flux/variants/dreambooth/statistics/plotter.py @@ -1,7 +1,7 @@ import matplotlib.pyplot as plt -from mflux.dreambooth.state.training_spec import TrainingSpec -from mflux.dreambooth.state.training_state import TrainingState +from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec +from mflux.models.flux.variants.dreambooth.state.training_state import TrainingState class Plotter: diff --git a/src/mflux/dreambooth/statistics/statistics.py b/src/mflux/models/flux/variants/dreambooth/statistics/statistics.py similarity index 90% rename from src/mflux/dreambooth/statistics/statistics.py rename to src/mflux/models/flux/variants/dreambooth/statistics/statistics.py index 9cfbce2..d17d6c6 100644 --- a/src/mflux/dreambooth/statistics/statistics.py +++ b/src/mflux/models/flux/variants/dreambooth/statistics/statistics.py @@ -3,10 +3,10 @@ import json from pathlib import Path from typing import TYPE_CHECKING -from mflux.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil if TYPE_CHECKING: - from mflux.dreambooth.state.training_spec import TrainingSpec + from mflux.models.flux.variants.dreambooth.state.training_spec import TrainingSpec class Statistics: diff --git a/src/mflux/models/flux/variants/fill/__init__.py b/src/mflux/models/flux/variants/fill/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/flux_tools/fill/flux_fill.py b/src/mflux/models/flux/variants/fill/flux_fill.py similarity index 90% rename from src/mflux/flux_tools/fill/flux_fill.py rename to src/mflux/models/flux/variants/fill/flux_fill.py index 92336c3..c9b8f78 100644 --- a/src/mflux/flux_tools/fill/flux_fill.py +++ b/src/mflux/models/flux/variants/fill/flux_fill.py @@ -7,14 +7,14 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer -from mflux.flux_tools.fill.mask_util import MaskUtil from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.fill.mask_util import MaskUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/flux_tools/fill/mask_util.py b/src/mflux/models/flux/variants/fill/mask_util.py similarity index 97% rename from src/mflux/flux_tools/fill/mask_util.py rename to src/mflux/models/flux/variants/fill/mask_util.py index 37e747d..13818b1 100644 --- a/src/mflux/flux_tools/fill/mask_util.py +++ b/src/mflux/models/flux/variants/fill/mask_util.py @@ -2,7 +2,7 @@ from pathlib import Path import mlx.core as mx -from mflux.models.vae.vae import VAE +from mflux.models.flux.model.flux_vae.vae import VAE from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/flux/variants/in_context/__init__.py b/src/mflux/models/flux/variants/in_context/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/community/in_context/flux_in_context_dev.py b/src/mflux/models/flux/variants/in_context/flux_in_context_dev.py similarity index 94% rename from src/mflux/community/in_context/flux_in_context_dev.py rename to src/mflux/models/flux/variants/in_context/flux_in_context_dev.py index 07f2564..c15f977 100644 --- a/src/mflux/community/in_context/flux_in_context_dev.py +++ b/src/mflux/models/flux/variants/in_context/flux_in_context_dev.py @@ -7,13 +7,13 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/community/in_context/flux_in_context_fill.py b/src/mflux/models/flux/variants/in_context/flux_in_context_fill.py similarity index 90% rename from src/mflux/community/in_context/flux_in_context_fill.py rename to src/mflux/models/flux/variants/in_context/flux_in_context_fill.py index 627364a..d9da0f8 100644 --- a/src/mflux/community/in_context/flux_in_context_fill.py +++ b/src/mflux/models/flux/variants/in_context/flux_in_context_fill.py @@ -3,18 +3,18 @@ from mlx import nn from tqdm import tqdm from mflux.callbacks.callbacks import Callbacks -from mflux.community.in_context.utils.in_context_mask_util import InContextMaskUtil from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.in_context.utils.in_context_mask_util import InContextMaskUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/flux/variants/in_context/utils/__init__.py b/src/mflux/models/flux/variants/in_context/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/community/in_context/utils/in_context_loras.py b/src/mflux/models/flux/variants/in_context/utils/in_context_loras.py similarity index 91% rename from src/mflux/community/in_context/utils/in_context_loras.py rename to src/mflux/models/flux/variants/in_context/utils/in_context_loras.py index ec620c7..f82351b 100644 --- a/src/mflux/community/in_context/utils/in_context_loras.py +++ b/src/mflux/models/flux/variants/in_context/utils/in_context_loras.py @@ -1,6 +1,5 @@ """Configuration for In-Context LoRAs from Hugging Face.""" - -from mflux.weights.weight_handler_lora_huggingface import WeightHandlerLoRAHuggingFace +from mflux.models.common.lora.download.lora_huggingface_downloader import LoRAHuggingFaceDownloader # Default Hugging Face repository for In-Context LoRAs LORA_REPO_ID = "ali-vilab/In-Context-LoRA" @@ -36,7 +35,7 @@ def prepare_ic_edit_loras(additional_lora_paths: list[str] | None = None) -> lis print(f"🔍 Downloading IC-Edit LoRA from {IC_EDIT_LORA_REPO_ID}") # Download the required IC-Edit LoRA - ic_edit_lora_path = WeightHandlerLoRAHuggingFace.download_lora( + ic_edit_lora_path = LoRAHuggingFaceDownloader.download_lora( repo_id=IC_EDIT_LORA_REPO_ID, lora_name=IC_EDIT_LORA_FILENAME, ) diff --git a/src/mflux/community/in_context/utils/in_context_mask_util.py b/src/mflux/models/flux/variants/in_context/utils/in_context_mask_util.py similarity index 96% rename from src/mflux/community/in_context/utils/in_context_mask_util.py rename to src/mflux/models/flux/variants/in_context/utils/in_context_mask_util.py index 33aff52..97b56b5 100644 --- a/src/mflux/community/in_context/utils/in_context_mask_util.py +++ b/src/mflux/models/flux/variants/in_context/utils/in_context_mask_util.py @@ -1,7 +1,7 @@ import mlx.core as mx -from mflux.flux_tools.fill.mask_util import MaskUtil -from mflux.models.vae.vae import VAE +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.fill.mask_util import MaskUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/flux/variants/kontext/__init__.py b/src/mflux/models/flux/variants/kontext/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/kontext/flux_kontext.py b/src/mflux/models/flux/variants/kontext/flux_kontext.py similarity index 90% rename from src/mflux/kontext/flux_kontext.py rename to src/mflux/models/flux/variants/kontext/flux_kontext.py index 73f9b56..ae0ec09 100644 --- a/src/mflux/kontext/flux_kontext.py +++ b/src/mflux/models/flux/variants/kontext/flux_kontext.py @@ -7,14 +7,14 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer -from mflux.kontext.utils.kontext_util import KontextUtil from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.variants.kontext.utils.kontext_util import KontextUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/models/flux/variants/kontext/utils/__init__.py b/src/mflux/models/flux/variants/kontext/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/kontext/utils/kontext_util.py b/src/mflux/models/flux/variants/kontext/utils/kontext_util.py similarity index 100% rename from src/mflux/kontext/utils/kontext_util.py rename to src/mflux/models/flux/variants/kontext/utils/kontext_util.py diff --git a/src/mflux/models/flux/variants/redux/__init__.py b/src/mflux/models/flux/variants/redux/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/flux_tools/redux/flux_redux.py b/src/mflux/models/flux/variants/redux/flux_redux.py similarity index 88% rename from src/mflux/flux_tools/redux/flux_redux.py rename to src/mflux/models/flux/variants/redux/flux_redux.py index ded162b..08f233c 100644 --- a/src/mflux/flux_tools/redux/flux_redux.py +++ b/src/mflux/models/flux/variants/redux/flux_redux.py @@ -9,21 +9,21 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer -from mflux.flux_tools.redux.redux_util import ReduxUtil from mflux.latent_creator.latent_creator import LatentCreator -from mflux.models.redux_encoder.redux_encoder import ReduxEncoder -from mflux.models.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.model.redux_encoder.redux_encoder import ReduxEncoder +from mflux.models.flux.model.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer +from mflux.models.flux.tokenizer.clip_tokenizer import TokenizerCLIP +from mflux.models.flux.tokenizer.t5_tokenizer import TokenizerT5 +from mflux.models.flux.variants.redux.redux_util import ReduxUtil from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil -from mflux.tokenizer.clip_tokenizer import TokenizerCLIP -from mflux.tokenizer.t5_tokenizer import TokenizerT5 class Flux1Redux(nn.Module): diff --git a/src/mflux/flux_tools/redux/redux_util.py b/src/mflux/models/flux/variants/redux/redux_util.py similarity index 89% rename from src/mflux/flux_tools/redux/redux_util.py rename to src/mflux/models/flux/variants/redux/redux_util.py index 0d3e27b..1c38696 100644 --- a/src/mflux/flux_tools/redux/redux_util.py +++ b/src/mflux/models/flux/variants/redux/redux_util.py @@ -2,8 +2,8 @@ from pathlib import Path import mlx.core as mx -from mflux.models.redux_encoder.redux_encoder import ReduxEncoder -from mflux.models.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer +from mflux.models.flux.model.redux_encoder.redux_encoder import ReduxEncoder +from mflux.models.flux.model.siglip_vision_transformer.siglip_vision_transformer import SiglipVisionTransformer from mflux.post_processing.image_util import ImageUtil diff --git a/src/mflux/flux_tools/redux/weight_handler_redux.py b/src/mflux/models/flux/variants/redux/weight_handler_redux.py similarity index 90% rename from src/mflux/flux_tools/redux/weight_handler_redux.py rename to src/mflux/models/flux/variants/redux/weight_handler_redux.py index 05e3ca5..aee798b 100644 --- a/src/mflux/flux_tools/redux/weight_handler_redux.py +++ b/src/mflux/models/flux/variants/redux/weight_handler_redux.py @@ -1,8 +1,8 @@ from pathlib import Path from mflux.config.model_config import ModelConfig -from mflux.weights.download import snapshot_download -from mflux.weights.weight_handler import MetaData, WeightHandler +from mflux.models.flux.weights.weight_handler import MetaData, WeightHandler +from mflux.utils.download import snapshot_download class WeightHandlerRedux: diff --git a/src/mflux/models/flux/variants/txt2img/__init__.py b/src/mflux/models/flux/variants/txt2img/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/flux/flux.py b/src/mflux/models/flux/variants/txt2img/flux.py similarity index 90% rename from src/mflux/flux/flux.py rename to src/mflux/models/flux/variants/txt2img/flux.py index 7e8838b..8df2686 100644 --- a/src/mflux/flux/flux.py +++ b/src/mflux/models/flux/variants/txt2img/flux.py @@ -7,17 +7,17 @@ from mflux.config.config import Config from mflux.config.model_config import ModelConfig from mflux.config.runtime_config import RuntimeConfig from mflux.error.exceptions import StopImageGenerationException -from mflux.flux.flux_initializer import FluxInitializer from mflux.latent_creator.latent_creator import Img2Img, LatentCreator -from mflux.models.text_encoder.clip_encoder.clip_encoder import CLIPEncoder -from mflux.models.text_encoder.prompt_encoder import PromptEncoder -from mflux.models.text_encoder.t5_encoder.t5_encoder import T5Encoder -from mflux.models.transformer.transformer import Transformer -from mflux.models.vae.vae import VAE +from mflux.models.flux.flux_initializer import FluxInitializer +from mflux.models.flux.model.flux_text_encoder.clip_encoder.clip_encoder import CLIPEncoder +from mflux.models.flux.model.flux_text_encoder.prompt_encoder import PromptEncoder +from mflux.models.flux.model.flux_text_encoder.t5_encoder.t5_encoder import T5Encoder +from mflux.models.flux.model.flux_transformer.transformer import Transformer +from mflux.models.flux.model.flux_vae.vae import VAE +from mflux.models.flux.weights.model_saver import ModelSaver from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil -from mflux.weights.model_saver import ModelSaver class Flux1(nn.Module): @@ -49,6 +49,7 @@ class Flux1(nn.Module): seed: int, prompt: str, config: Config, + negative_prompt: str | None = None, ) -> GeneratedImage: # 0. Create a new runtime config based on the model type and input parameters config = RuntimeConfig(config, self.model_config) diff --git a/src/mflux/models/flux/weights/__init__.py b/src/mflux/models/flux/weights/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/weights/lora_converter.py b/src/mflux/models/flux/weights/lora_converter.py similarity index 100% rename from src/mflux/weights/lora_converter.py rename to src/mflux/models/flux/weights/lora_converter.py diff --git a/src/mflux/weights/model_saver.py b/src/mflux/models/flux/weights/model_saver.py similarity index 100% rename from src/mflux/weights/model_saver.py rename to src/mflux/models/flux/weights/model_saver.py diff --git a/src/mflux/weights/weight_handler.py b/src/mflux/models/flux/weights/weight_handler.py similarity index 97% rename from src/mflux/weights/weight_handler.py rename to src/mflux/models/flux/weights/weight_handler.py index bc4de4d..d796b28 100644 --- a/src/mflux/weights/weight_handler.py +++ b/src/mflux/models/flux/weights/weight_handler.py @@ -4,9 +4,9 @@ from pathlib import Path import mlx.core as mx from mlx.utils import tree_unflatten -from mflux.weights.download import snapshot_download -from mflux.weights.lora_converter import LoRAConverter -from mflux.weights.weight_util import WeightUtil +from mflux.models.flux.weights.lora_converter import LoRAConverter +from mflux.models.flux.weights.weight_util import WeightUtil +from mflux.utils.download import snapshot_download @dataclass @@ -39,7 +39,7 @@ class WeightHandler: transformer_repo_id: str | None = None, ) -> "WeightHandler": # Load the weights from disk, huggingface cache, or download from huggingface - root_path = Path(local_path) if local_path else WeightHandler._download_or_get_cached_weights(repo_id) + root_path = Path(local_path) if local_path else WeightHandler.download_or_get_cached_weights(repo_id) # Some custom models might have a different specific transformer setup if transformer_repo_id: @@ -211,7 +211,7 @@ class WeightHandler: return unflatten, quantization_level, mflux_version @staticmethod - def _download_or_get_cached_weights(repo_id: str) -> Path: + def download_or_get_cached_weights(repo_id: str) -> Path: return Path( snapshot_download( repo_id=repo_id, diff --git a/src/mflux/weights/weight_handler_lora.py b/src/mflux/models/flux/weights/weight_handler_lora.py similarity index 95% rename from src/mflux/weights/weight_handler_lora.py rename to src/mflux/models/flux/weights/weight_handler_lora.py index 0c8f830..eb13432 100644 --- a/src/mflux/weights/weight_handler_lora.py +++ b/src/mflux/models/flux/weights/weight_handler_lora.py @@ -2,10 +2,10 @@ import mlx.core as mx import mlx.nn as nn from mlx.utils import tree_flatten, tree_unflatten -from mflux.dreambooth.lora_layers.fused_linear_lora_layer import FusedLoRALinear -from mflux.dreambooth.lora_layers.linear_lora_layer import LoRALinear -from mflux.dreambooth.lora_layers.lora_layers import LoRALayers -from mflux.weights.weight_handler import MetaData, WeightHandler +from mflux.models.common.lora.layer.fused_linear_lora_layer import FusedLoRALinear +from mflux.models.common.lora.layer.linear_lora_layer import LoRALinear +from mflux.models.flux.variants.dreambooth.lora_layers.lora_layers import LoRALayers +from mflux.models.flux.weights.weight_handler import MetaData, WeightHandler class WeightHandlerLoRA: diff --git a/src/mflux/weights/weight_util.py b/src/mflux/models/flux/weights/weight_util.py similarity index 93% rename from src/mflux/weights/weight_util.py rename to src/mflux/models/flux/weights/weight_util.py index 5745c47..7c9c902 100644 --- a/src/mflux/weights/weight_util.py +++ b/src/mflux/models/flux/weights/weight_util.py @@ -3,12 +3,12 @@ from typing import TYPE_CHECKING import mlx.nn as nn from mflux.config.config import Config -from mflux.weights.quantization_util import QuantizationUtil +from mflux.utils.quantization_util import QuantizationUtil if TYPE_CHECKING: - from mflux.controlnet.weight_handler_controlnet import WeightHandlerControlnet - from mflux.flux_tools.redux.weight_handler_redux import WeightHandlerRedux - from mflux.weights.weight_handler import WeightHandler + from mflux.models.flux.variants.controlnet.weight_handler_controlnet import WeightHandlerControlnet + from mflux.models.flux.variants.redux.weight_handler_redux import WeightHandlerRedux + from mflux.models.flux.weights.weight_handler import WeightHandler class WeightUtil: diff --git a/src/mflux/models/qwen/__init__.py b/src/mflux/models/qwen/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/model/__init__.py b/src/mflux/models/qwen/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/__init__.py b/src/mflux/models/qwen/model/qwen_text_encoder/__init__.py new file mode 100644 index 0000000..cc7bab9 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/__init__.py @@ -0,0 +1 @@ +# Qwen Text Encoder components diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_attention.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_attention.py new file mode 100644 index 0000000..8ce5ea2 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_attention.py @@ -0,0 +1,143 @@ +import math + +import mlx.core as mx +from mlx import nn + +from .qwen_rope import QwenRotaryEmbedding + + +class QwenAttention(nn.Module): + def __init__( + self, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int = None, + max_position_embeddings: int = 128000, + rope_theta: float = 1000000.0, + rope_scaling: dict = None, + ): + super().__init__() + self.hidden_size = hidden_size + self.num_attention_heads = num_attention_heads + self.num_key_value_heads = num_key_value_heads or num_attention_heads + self.head_dim = hidden_size // num_attention_heads + self.num_key_value_groups = num_attention_heads // self.num_key_value_heads + self.scaling = 1.0 / math.sqrt(self.head_dim) + self.q_proj = nn.Linear(hidden_size, num_attention_heads * self.head_dim, bias=True) + self.k_proj = nn.Linear(hidden_size, self.num_key_value_heads * self.head_dim, bias=True) + self.v_proj = nn.Linear(hidden_size, self.num_key_value_heads * self.head_dim, bias=True) + self.o_proj = nn.Linear(num_attention_heads * self.head_dim, hidden_size, bias=False) + self.rotary_emb = QwenRotaryEmbedding( + dim=self.head_dim, + max_position_embeddings=max_position_embeddings, + base=rope_theta, + rope_type="default", + ) + self.rope_scaling = rope_scaling or {"mrope_section": [16, 24, 24]} + + def __call__( + self, + hidden_states: mx.array, + attention_mask: mx.array | None = None, + position_embeddings: tuple[mx.array, mx.array] | None = None, + ) -> mx.array: + bsz, q_len, _ = hidden_states.shape + + # Q, K, V projections + query_states = self.q_proj(hidden_states) + key_states = self.k_proj(hidden_states) + value_states = self.v_proj(hidden_states) + + # Reshape and transpose + query_states = query_states.reshape(bsz, q_len, self.num_attention_heads, self.head_dim).transpose(0, 2, 1, 3) + key_states = key_states.reshape(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(0, 2, 1, 3) + value_states = value_states.reshape(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(0, 2, 1, 3) + + # Apply RoPE + query_states, key_states = QwenAttention._apply_multimodal_rotary_pos_emb( + q=query_states, + k=key_states, + position_embeddings=position_embeddings, + mrope_section=self.rope_scaling["mrope_section"], + ) + + # GQA expansion using repeat_interleave semantics + if self.num_key_value_heads != self.num_attention_heads: + key_states = QwenAttention._repeat_kv(key_states, self.num_key_value_groups) + value_states = QwenAttention._repeat_kv(value_states, self.num_key_value_groups) + + # Attention computation + attn_weights = mx.matmul(query_states, key_states.transpose(0, 1, 3, 2)) * self.scaling + + # Apply attention mask + if attention_mask is not None: + causal_mask = attention_mask[:, :, :, : key_states.shape[-2]] + attn_weights = attn_weights + causal_mask + + # Softmax and output + attn_weights = mx.softmax(attn_weights.astype(mx.float32), axis=-1).astype(query_states.dtype) + attn_output = mx.matmul(attn_weights, value_states) + attn_output = attn_output.transpose(0, 2, 1, 3).reshape(bsz, q_len, self.hidden_size) + attn_output = self.o_proj(attn_output) + return attn_output + + @staticmethod + def _repeat_kv(hidden_states: mx.array, n_rep: int) -> mx.array: + batch, num_key_value_heads, slen, head_dim = hidden_states.shape + if n_rep == 1: + return hidden_states + hidden_states = mx.expand_dims(hidden_states, axis=2) + hidden_states = mx.broadcast_to(hidden_states, (batch, num_key_value_heads, n_rep, slen, head_dim)) + return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim) + + @staticmethod + def _apply_multimodal_rotary_pos_emb( + q: mx.array, + k: mx.array, + position_embeddings: tuple[mx.array, mx.array], + mrope_section: list[int], + unsqueeze_dim: int = 1, + ) -> tuple[mx.array, mx.array]: + mrope_section_doubled = [s * 2 for s in mrope_section] + + cos_chunks = [] + sin_chunks = [] + start_idx = 0 + + cos, sin = position_embeddings + for section_size in mrope_section_doubled: + end_idx = start_idx + section_size + cos_chunk = cos[..., start_idx:end_idx] + sin_chunk = sin[..., start_idx:end_idx] + cos_chunks.append(cos_chunk) + sin_chunks.append(sin_chunk) + start_idx = end_idx + + # For each chunk position, select the corresponding modality + # chunk 0 -> modality 0, chunk 1 -> modality 1, chunk 2 -> modality 2, etc. + cos_selected = [chunk[i % 3] for i, chunk in enumerate(cos_chunks)] + sin_selected = [chunk[i % 3] for i, chunk in enumerate(sin_chunks)] + + # Concatenate back together + cos_combined = mx.concatenate(cos_selected, axis=-1) + sin_combined = mx.concatenate(sin_selected, axis=-1) + + # Add head dimension if needed + if unsqueeze_dim == 1: + cos_combined = mx.expand_dims(cos_combined, axis=1) + sin_combined = mx.expand_dims(sin_combined, axis=1) + elif unsqueeze_dim == 2: + cos_combined = mx.expand_dims(cos_combined, axis=2) + sin_combined = mx.expand_dims(sin_combined, axis=2) + + # Apply rotary embedding with properly processed cos/sin + q_embed = (q * cos_combined) + (QwenAttention._rotate_half(q) * sin_combined) + k_embed = (k * cos_combined) + (QwenAttention._rotate_half(k) * sin_combined) + + return q_embed, k_embed + + @staticmethod + def _rotate_half(x: mx.array) -> mx.array: + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return mx.concatenate([-x2, x1], axis=-1) diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder.py new file mode 100644 index 0000000..b93afa1 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder.py @@ -0,0 +1,74 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_text_encoder.qwen_encoder_layer import QwenEncoderLayer +from mflux.models.qwen.model.qwen_text_encoder.qwen_rms_norm import QwenRMSNorm +from mflux.models.qwen.model.qwen_text_encoder.qwen_rope import QwenRotaryEmbedding + + +class QwenEncoder(nn.Module): + def __init__( + self, + vocab_size: int = 152064, + hidden_size: int = 3584, + num_hidden_layers: int = 28, + max_position_embeddings: int = 128000, + rope_theta: float = 1000000.0, + ): + super().__init__() + self.vocab_size = vocab_size + self.hidden_size = hidden_size + self.num_hidden_layers = num_hidden_layers + self.embed_tokens = nn.Embedding(vocab_size, hidden_size) + self.layers = [QwenEncoderLayer() for i in range(num_hidden_layers)] + self.norm = QwenRMSNorm(hidden_size, eps=1e-6) + self.rotary_emb = QwenRotaryEmbedding( + dim=hidden_size // 28, + max_position_embeddings=max_position_embeddings, + base=rope_theta, + rope_type="default", + ) + + def __call__( + self, + input_ids: mx.array, + attention_mask: mx.array | None = None, + ) -> mx.array: + batch_size, seq_len = input_ids.shape + inputs_embeds = self.embed_tokens(input_ids) + cache_position = mx.arange(seq_len, dtype=mx.int32) + position_ids = mx.expand_dims(mx.expand_dims(cache_position, axis=0), axis=0) + position_ids = mx.broadcast_to(position_ids, (3, batch_size, seq_len)) + if attention_mask is not None: + padding_mask = mx.where( + attention_mask == 1, + mx.zeros_like(attention_mask).astype(mx.float32), + mx.ones_like(attention_mask).astype(mx.float32) * (-float("inf")), + ) + padding_mask = mx.expand_dims(mx.expand_dims(padding_mask, axis=1), axis=1) + else: + padding_mask = None + + # Create causal triangular mask + idx = mx.arange(seq_len, dtype=mx.int32) + j = mx.expand_dims(idx, axis=0) + i = mx.expand_dims(idx, axis=1) + tri_bool = j > i + zeros_2d = mx.zeros((seq_len, seq_len)).astype(mx.float32) + neginf_2d = mx.ones((seq_len, seq_len)).astype(mx.float32) * (-float("inf")) + causal_tri_mask = mx.where(tri_bool, neginf_2d, zeros_2d) + causal_tri_mask = mx.expand_dims(mx.expand_dims(causal_tri_mask, axis=0), axis=0) # [1,1,S,S] + causal_tri_mask = mx.broadcast_to(causal_tri_mask, (batch_size, 1, seq_len, seq_len)) + + # Final attention mask: causal triangle + padding mask + if padding_mask is not None: + attention_mask_4d = causal_tri_mask + padding_mask + else: + attention_mask_4d = causal_tri_mask + + hidden_states = inputs_embeds + position_embeddings = self.rotary_emb(hidden_states, position_ids) + for layer in self.layers: + hidden_states = layer(hidden_states, attention_mask_4d, position_embeddings) + hidden_states = self.norm(hidden_states) + return hidden_states diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder_layer.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder_layer.py new file mode 100644 index 0000000..686ec02 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_encoder_layer.py @@ -0,0 +1,54 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_text_encoder.qwen_attention import QwenAttention +from mflux.models.qwen.model.qwen_text_encoder.qwen_mlp import QwenMLP +from mflux.models.qwen.model.qwen_text_encoder.qwen_rms_norm import QwenRMSNorm + + +class QwenEncoderLayer(nn.Module): + def __init__( + self, + hidden_size: int = 3584, + num_attention_heads: int = 28, + num_key_value_heads: int = 4, + intermediate_size: int = 18944, + rms_norm_eps: float = 1e-6, + max_position_embeddings: int = 128000, + rope_theta: float = 1000000.0, + ): + super().__init__() + self.input_layernorm = QwenRMSNorm(hidden_size, eps=rms_norm_eps) + self.self_attn = QwenAttention( + hidden_size=hidden_size, + num_attention_heads=num_attention_heads, + num_key_value_heads=num_key_value_heads, + max_position_embeddings=max_position_embeddings, + rope_theta=rope_theta, + rope_scaling={"mrope_section": [16, 24, 24]}, + ) + self.post_attention_layernorm = QwenRMSNorm(hidden_size, eps=rms_norm_eps) + self.mlp = QwenMLP( + hidden_size=hidden_size, + intermediate_size=intermediate_size, + ) + + def __call__( + self, + hidden_states: mx.array, + attention_mask: mx.array | None = None, + position_embeddings: tuple[mx.array, mx.array] | None = None, + ) -> mx.array: + residual = hidden_states + hidden_states = self.input_layernorm(hidden_states) + hidden_states = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_embeddings=position_embeddings, + ) + hidden_states = residual + hidden_states + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + hidden_states = residual + hidden_states + return hidden_states diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_mlp.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_mlp.py new file mode 100644 index 0000000..e12a931 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_mlp.py @@ -0,0 +1,17 @@ +import mlx.core as mx +from mlx import nn + + +class QwenMLP(nn.Module): + def __init__(self, hidden_size: int, intermediate_size: int): + super().__init__() + self.gate_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.up_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.down_proj = nn.Linear(intermediate_size, hidden_size, bias=False) + + def __call__(self, hidden_states: mx.array) -> mx.array: + gate_output = nn.silu(self.gate_proj(hidden_states)) + up_output = self.up_proj(hidden_states) + intermediate_output = gate_output * up_output + output = self.down_proj(intermediate_output) + return output diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_prompt_encoder.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_prompt_encoder.py new file mode 100644 index 0000000..5eb92cd --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_prompt_encoder.py @@ -0,0 +1,34 @@ +import mlx.core as mx + +from mflux.models.qwen.model.qwen_text_encoder.qwen_text_encoder import QwenTextEncoder +from mflux.models.qwen.tokenizer.qwen_tokenizer import TokenizerQwen + + +class QwenPromptEncoder: + @staticmethod + def encode_prompt( + prompt: str, + negative_prompt: str, + prompt_cache: dict[str, tuple[mx.array, mx.array, mx.array, mx.array]], + qwen_tokenizer: TokenizerQwen, + qwen_text_encoder: QwenTextEncoder, + ) -> tuple[mx.array, mx.array, mx.array, mx.array]: + # 0. Create a cache key that combines both prompts + cache_key = f"{prompt}|NEG|{negative_prompt}" + + # 1. Return prompt encodings if already cached + if cache_key in prompt_cache: + return prompt_cache[cache_key] + + # 2. Encode the positive prompt + input_ids, attention_mask = qwen_tokenizer.tokenize(prompt) + neg_input_ids, neg_attention_mask = qwen_tokenizer.tokenize(negative_prompt) + prompt_embeds, prompt_mask = qwen_text_encoder(input_ids=input_ids, attention_mask=attention_mask) + neg_prompt_embeds, neg_prompt_mask = qwen_text_encoder( + input_ids=neg_input_ids, attention_mask=neg_attention_mask + ) + + # 3. Cache the result (all 4 values) + result = (prompt_embeds, prompt_mask, neg_prompt_embeds, neg_prompt_mask) + prompt_cache[cache_key] = result + return result diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rms_norm.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rms_norm.py new file mode 100644 index 0000000..238767a --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rms_norm.py @@ -0,0 +1,17 @@ +import mlx.core as mx +from mlx import nn + + +class QwenRMSNorm(nn.Module): + def __init__(self, hidden_size: int, eps: float = 1e-6): + super().__init__() + self.weight = mx.ones((hidden_size,)) + self.eps = eps + + def __call__(self, hidden_states: mx.array) -> mx.array: + input_dtype = hidden_states.dtype + hidden_states = hidden_states.astype(mx.float32) + variance = mx.mean(mx.square(hidden_states), axis=-1, keepdims=True) + hidden_states = hidden_states * mx.rsqrt(variance + self.eps) + result = self.weight.astype(mx.float32) * hidden_states + return result.astype(input_dtype) diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rope.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rope.py new file mode 100644 index 0000000..c4d1400 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_rope.py @@ -0,0 +1,36 @@ +import mlx.core as mx +from mlx import nn + + +class QwenRotaryEmbedding(nn.Module): + def __init__( + self, + dim: int, + max_position_embeddings: int = 128000, + base: float = 1000000.0, + device: str = None, + scaling_factor: float = 1.0, + rope_type: str = "default", + config=None, + ): + super().__init__() + self.inv_freq = 1.0 / (base ** (mx.arange(0, dim, 2, dtype=mx.float32) / dim)) + self.attention_scaling = scaling_factor + + def __call__(self, x: mx.array, position_ids: mx.array) -> tuple[mx.array, mx.array]: + if len(position_ids.shape) == 2: + batch_size, seq_len = position_ids.shape + position_ids = mx.broadcast_to(mx.expand_dims(position_ids, axis=0), (3, batch_size, seq_len)) + + inv_freq_expanded = mx.expand_dims(mx.expand_dims(self.inv_freq, axis=0), axis=0) + inv_freq_expanded = mx.expand_dims(inv_freq_expanded, axis=-1) + inv_freq_expanded = mx.broadcast_to(inv_freq_expanded, (3, position_ids.shape[1], self.inv_freq.shape[0], 1)) + inv_freq_expanded = inv_freq_expanded.astype(mx.float32) + position_ids_expanded = mx.expand_dims(position_ids, axis=2) + position_ids_expanded = position_ids_expanded.astype(mx.float32) + freqs = mx.matmul(inv_freq_expanded, position_ids_expanded) + freqs = mx.transpose(freqs, (0, 1, 3, 2)) + emb = mx.concatenate([freqs, freqs], axis=-1) + cos = mx.cos(emb) * self.attention_scaling + sin = mx.sin(emb) * self.attention_scaling + return cos.astype(x.dtype), sin.astype(x.dtype) diff --git a/src/mflux/models/qwen/model/qwen_text_encoder/qwen_text_encoder.py b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_text_encoder.py new file mode 100644 index 0000000..fc468fb --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_text_encoder/qwen_text_encoder.py @@ -0,0 +1,70 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_text_encoder.qwen_encoder import QwenEncoder + + +class QwenTextEncoder(nn.Module): + def __init__(self): + super().__init__() + self.encoder = QwenEncoder() + + def __call__( + self, + input_ids: mx.array, + attention_mask: mx.array | None = None, + ) -> tuple[mx.array, mx.array]: + hidden_states = self.encoder(input_ids, attention_mask) + prompt_embeds, encoder_attention_mask = QwenTextEncoder._process_text_embeddings_mlx( + hidden_states=hidden_states, + attention_mask=attention_mask, + drop_idx=34, + dtype=mx.bfloat16, + ) + return prompt_embeds, encoder_attention_mask + + @staticmethod + def _process_text_embeddings_mlx(hidden_states, attention_mask, drop_idx=1, dtype=mx.float32): + split_hidden_states = QwenTextEncoder._extract_masked_hidden(hidden_states, attention_mask) + split_hidden_states = [e[drop_idx:] for e in split_hidden_states] + attn_mask_list = [mx.ones(e.shape[0], dtype=mx.int32) for e in split_hidden_states] + max_seq_len = max([e.shape[0] for e in split_hidden_states]) + + padded_embeds = [] + for u in split_hidden_states: + current_len = u.shape[0] + hidden_dim = u.shape[1] + if current_len < max_seq_len: + padding = mx.zeros((max_seq_len - current_len, hidden_dim), dtype=u.dtype) + padded = mx.concatenate([u, padding], axis=0) + else: + padded = u + padded_embeds.append(padded) + + prompt_embeds = mx.stack(padded_embeds, axis=0) + + padded_masks = [] + for mask in attn_mask_list: + current_len = mask.shape[0] + if current_len < max_seq_len: + padding = mx.zeros(max_seq_len - current_len, dtype=mask.dtype) + padded = mx.concatenate([mask, padding], axis=0) + else: + padded = mask + padded_masks.append(padded) + + encoder_attention_mask = mx.stack(padded_masks, axis=0) + prompt_embeds = prompt_embeds.astype(dtype) + return prompt_embeds, encoder_attention_mask + + @staticmethod + def _extract_masked_hidden(hidden_states, attention_mask): + batch_size = hidden_states.shape[0] + split_hidden_states = [] + for i in range(batch_size): + mask = attention_mask[i] + valid_length = mx.sum(mask).item() + valid_length = int(valid_length) + valid_hidden = hidden_states[i, :valid_length, :] + split_hidden_states.append(valid_hidden) + return split_hidden_states diff --git a/src/mflux/models/qwen/model/qwen_transformer/__init__.py b/src/mflux/models/qwen/model/qwen_transformer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_attention.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_attention.py new file mode 100644 index 0000000..11a638c --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_attention.py @@ -0,0 +1,150 @@ +from __future__ import annotations + +import mlx.core as mx +from mlx import nn + +from mflux.models.flux.model.flux_transformer.common.attention_utils import AttentionUtils + + +class QwenAttention(nn.Module): + def __init__(self, dim: int = 3072, num_heads: int = 24, head_dim: int = 128): + super().__init__() + self.dim = dim + self.num_heads = num_heads + self.head_dim = head_dim + + # Attention projections for image stream + self.to_q = nn.Linear(dim, dim) + self.to_k = nn.Linear(dim, dim) + self.to_v = nn.Linear(dim, dim) + + # Attention projections for text stream + self.add_q_proj = nn.Linear(dim, dim) + self.add_k_proj = nn.Linear(dim, dim) + self.add_v_proj = nn.Linear(dim, dim) + + # Query/Key normalization + self.norm_q = nn.RMSNorm(self.head_dim, eps=1e-6) + self.norm_k = nn.RMSNorm(self.head_dim, eps=1e-6) + self.norm_added_q = nn.RMSNorm(self.head_dim, eps=1e-6) + self.norm_added_k = nn.RMSNorm(self.head_dim, eps=1e-6) + + # Output projections + self.attn_to_out = [nn.Linear(dim, dim)] + self.to_add_out = nn.Linear(dim, dim) + + def __call__( + self, + img_modulated: mx.array, + txt_modulated: mx.array, + encoder_hidden_states_mask: mx.array | None, + image_rotary_emb: tuple[mx.array, mx.array], + ) -> tuple[mx.array, mx.array]: + # 1a. Compute Q,K,V for image stream (hidden_states) + img_q, img_k, img_v = AttentionUtils.process_qkv( + hidden_states=img_modulated, + to_q=self.to_q, + to_k=self.to_k, + to_v=self.to_v, + norm_q=self.norm_q, + norm_k=self.norm_k, + num_heads=self.num_heads, + head_dim=self.head_dim, + ) + + # 1b. Compute Q,K,V for text stream (encoder_hidden_states) + txt_q, txt_k, txt_v = AttentionUtils.process_qkv( + hidden_states=txt_modulated, + to_q=self.add_q_proj, + to_k=self.add_k_proj, + to_v=self.add_v_proj, + norm_q=self.norm_added_q, + norm_k=self.norm_added_k, + num_heads=self.num_heads, + head_dim=self.head_dim, + ) + + # 1c. Concatenate results [text, image] like Flux + joint_q = mx.concatenate([txt_q, img_q], axis=2) + joint_k = mx.concatenate([txt_k, img_k], axis=2) + joint_v = mx.concatenate([txt_v, img_v], axis=2) + + # 1d. Apply RoPE to concatenated Q,K + joint_q, joint_k = QwenAttention._apply_rotary_embeddings_joint( + joint_q=joint_q, + joint_k=joint_k, + txt_seq_len=txt_q.shape[2], + image_rotary_emb=image_rotary_emb, + ) + + # 2. Compute attention with optional masking + mask = AttentionUtils.convert_key_padding_mask_to_additive_mask( + mask=encoder_hidden_states_mask, + joint_seq_len=joint_q.shape[2], + txt_seq_len=txt_q.shape[2], + ) + + # 3. Compute attention + hidden_states = AttentionUtils.compute_attention( + query=joint_q, + key=joint_k, + value=joint_v, + batch_size=1, + num_heads=self.num_heads, + head_dim=self.head_dim, + mask=mask, + ) + + # 4. Separate the results + txt_seq_len = txt_modulated.shape[1] + txt_attn_output = hidden_states[:, :txt_seq_len] + img_attn_output = hidden_states[:, txt_seq_len:] + + # 5. Project the output (Flux-style) + img_attn_output = self.attn_to_out[0](img_attn_output.astype(mx.float32)).astype(img_modulated.dtype) + txt_attn_output = self.to_add_out(txt_attn_output.astype(mx.float32)).astype(txt_modulated.dtype) + + return img_attn_output, txt_attn_output + + @staticmethod + def _apply_rotary_embeddings_joint( + joint_q: mx.array, + joint_k: mx.array, + txt_seq_len: int, + image_rotary_emb: tuple[mx.array, mx.array], + ) -> tuple[mx.array, mx.array]: + img_rot, txt_rot = image_rotary_emb + + # Extract separate parts + txt_q = joint_q[:, :, :txt_seq_len, :] + img_q = joint_q[:, :, txt_seq_len:, :] + txt_k = joint_k[:, :, :txt_seq_len, :] + img_k = joint_k[:, :, txt_seq_len:, :] + + # Prepare cos/sin for text and image + img_cos = img_rot[..., 0, 0].reshape(img_rot.shape[2], img_rot.shape[3]) + img_sin = img_rot[..., 1, 0].reshape(img_rot.shape[2], img_rot.shape[3]) + txt_cos = txt_rot[..., 0, 0].reshape(txt_rot.shape[2], txt_rot.shape[3]) + txt_sin = txt_rot[..., 1, 0].reshape(txt_rot.shape[2], txt_rot.shape[3]) + + # Transpose [B,H,S,D] -> [B,S,H,D] for RoPE application + img_q_bshd = mx.transpose(img_q, (0, 2, 1, 3)) + img_k_bshd = mx.transpose(img_k, (0, 2, 1, 3)) + txt_q_bshd = mx.transpose(txt_q, (0, 2, 1, 3)) + txt_k_bshd = mx.transpose(txt_k, (0, 2, 1, 3)) + + # Apply RoPE + img_q_bshd, img_k_bshd = AttentionUtils.apply_rope_bshd(img_q_bshd, img_k_bshd, img_cos, img_sin) + txt_q_bshd, txt_k_bshd = AttentionUtils.apply_rope_bshd(txt_q_bshd, txt_k_bshd, txt_cos, txt_sin) + + # Back to [B,H,S,D] + img_q = mx.transpose(img_q_bshd, (0, 2, 1, 3)) + img_k = mx.transpose(img_k_bshd, (0, 2, 1, 3)) + txt_q = mx.transpose(txt_q_bshd, (0, 2, 1, 3)) + txt_k = mx.transpose(txt_k_bshd, (0, 2, 1, 3)) + + # Concatenate back [text, image] + joint_q = mx.concatenate([txt_q, img_q], axis=2) + joint_k = mx.concatenate([txt_k, img_k], axis=2) + + return joint_q, joint_k diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_feed_forward.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_feed_forward.py new file mode 100644 index 0000000..02a906b --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_feed_forward.py @@ -0,0 +1,15 @@ +import mlx.core as mx +from mlx import nn + + +class QwenFeedForward(nn.Module): + def __init__(self, dim: int = 3072): + super().__init__() + self.mlp_in = nn.Linear(dim, 4 * dim) + self.mlp_out = nn.Linear(4 * dim, dim) + + def __call__(self, hidden_states: mx.array) -> mx.array: + hidden_states = self.mlp_in(hidden_states.astype(mx.float32)) + hidden_states = nn.gelu_approx(hidden_states) + hidden_states = self.mlp_out(hidden_states) + return hidden_states diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_layer_norm.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_layer_norm.py new file mode 100644 index 0000000..d3d81ab --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_layer_norm.py @@ -0,0 +1,21 @@ +import mlx.core as mx +from mlx import nn + + +class QwenLayerNorm(nn.Module): + def __init__(self, dim: int = 3072): + super().__init__() + self.mod_linear = nn.Linear(dim, 6 * dim) + self.norm1 = nn.LayerNorm(dims=dim, eps=1e-6, affine=False) + + def __call__(self, hidden_states: mx.array, text_embeddings: mx.array) -> tuple[mx.array, mx.array, mx.array]: + # Compute modulation parameters from text embeddings + mod_params = self.mod_linear(nn.silu(text_embeddings)) + mod1, mod2 = mx.split(mod_params, 2, axis=-1) + + # Stage 1: Apply normalization and modulation for attention + normed1 = self.norm1(hidden_states) + shift1, scale1, gate1 = mx.split(mod1, 3, axis=-1) + normed_stage1 = normed1 * (1 + scale1[:, None, :]) + shift1[:, None, :] + + return normed_stage1, gate1, mod2 diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_rope.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_rope.py new file mode 100644 index 0000000..9a78cfa --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_rope.py @@ -0,0 +1,119 @@ +from __future__ import annotations + +import mlx.core as mx +import numpy as np +from mlx import nn + + +class QwenEmbedRopeMLX(nn.Module): + """ + Faithful MLX port of Qwen's RoPE embedding helper used in the flux_transformer. + + Exposes a forward(video_fhw, txt_seq_lens) API that returns rotation matrices + for image and text streams with shape [1, 1, S, D/2, 2, 2]. + """ + + def __init__(self, theta: int, axes_dim: list[int], scale_rope: bool = True): + super().__init__() + self.theta = theta + self.axes_dim = axes_dim + self.scale_rope = scale_rope + + # Precompute positive and negative index caches up to 1024 as in reference + pos_index = np.arange(1024, dtype=np.int32) + neg_index = (np.arange(1024, dtype=np.int32)[::-1] * -1) - 1 + + self._pos_cos = [] + self._pos_sin = [] + self._neg_cos = [] + self._neg_sin = [] + for dim in axes_dim: + cos_p, sin_p = self._rope_params(pos_index, dim) + cos_n, sin_n = self._rope_params(neg_index, dim) + self._pos_cos.append(cos_p) + self._pos_sin.append(sin_p) + self._neg_cos.append(cos_n) + self._neg_sin.append(sin_n) + + @staticmethod + def _rope_params(index: np.ndarray, dim: int, theta: int = 10000) -> tuple[np.ndarray, np.ndarray]: + assert dim % 2 == 0 + scales = np.arange(0, dim, 2, dtype=np.float32) / dim + omega = 1.0 / (theta**scales) + out = np.outer(index.astype(np.float32), omega).astype(np.float32) + return np.cos(out), np.sin(out) + + def _build_video_freqs(self, frame: int, height: int, width: int) -> tuple[np.ndarray, np.ndarray]: + dim_f, dim_h, dim_w = self.axes_dim + + cos_f = self._pos_cos[0][:frame].reshape(frame, 1, 1, -1) + sin_f = self._pos_sin[0][:frame].reshape(frame, 1, 1, -1) + + if self.scale_rope: + cos_h = np.concatenate( + [self._neg_cos[1][-(height - height // 2) :], self._pos_cos[1][: height // 2]], axis=0 + ) + sin_h = np.concatenate( + [self._neg_sin[1][-(height - height // 2) :], self._pos_sin[1][: height // 2]], axis=0 + ) + else: + cos_h = self._pos_cos[1][:height] + sin_h = self._pos_sin[1][:height] + cos_h = cos_h.reshape(1, height, 1, -1) + sin_h = sin_h.reshape(1, height, 1, -1) + + if self.scale_rope: + cos_w = np.concatenate([self._neg_cos[2][-(width - width // 2) :], self._pos_cos[2][: width // 2]], axis=0) + sin_w = np.concatenate([self._neg_sin[2][-(width - width // 2) :], self._pos_sin[2][: width // 2]], axis=0) + else: + cos_w = self._pos_cos[2][:width] + sin_w = self._pos_sin[2][:width] + cos_w = cos_w.reshape(1, 1, width, -1) + sin_w = sin_w.reshape(1, 1, width, -1) + + cos = np.concatenate( + [ + np.broadcast_to(cos_f, (frame, height, width, cos_f.shape[-1])), + np.broadcast_to(cos_h, (frame, height, width, cos_h.shape[-1])), + np.broadcast_to(cos_w, (frame, height, width, cos_w.shape[-1])), + ], + axis=-1, + ) + sin = np.concatenate( + [ + np.broadcast_to(sin_f, (frame, height, width, sin_f.shape[-1])), + np.broadcast_to(sin_h, (frame, height, width, sin_h.shape[-1])), + np.broadcast_to(sin_w, (frame, height, width, sin_w.shape[-1])), + ], + axis=-1, + ) + + # Flatten to [S, D/2] + cos = cos.reshape(-1, cos.shape[-1]) + sin = sin.reshape(-1, sin.shape[-1]) + return cos, sin + + def __call__(self, video_fhw: tuple[int, int, int] | list[tuple[int, int, int]], txt_seq_lens: list[int]): + if isinstance(video_fhw, list): + video_fhw = video_fhw[0] + frame, height, width = video_fhw + + cos_v, sin_v = self._build_video_freqs(frame, height, width) + + # Build text freqs using max_vid_index rule + max_vid_index = max(height // 2, width // 2) if self.scale_rope else max(height, width) + txt_len = max(txt_seq_lens) + # Combine axes cos/sin for positions starting at max_vid_index + cos_full = np.concatenate(self._pos_cos, axis=1) # [1024, 128] + sin_full = np.concatenate(self._pos_sin, axis=1) + cos_t = cos_full[max_vid_index : max_vid_index + txt_len] + sin_t = sin_full[max_vid_index : max_vid_index + txt_len] + + def to_rot(cos: np.ndarray, sin: np.ndarray) -> mx.array: + row0 = np.stack([cos, -sin], axis=-1) + row1 = np.stack([sin, cos], axis=-1) + rot = np.stack([row0, row1], axis=-2) + rot = rot[None, None, ...].astype(np.float32) + return mx.array(rot) + + return to_rot(cos_v, sin_v), to_rot(cos_t, sin_t) diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_time_text_embed.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_time_text_embed.py new file mode 100644 index 0000000..8423fe0 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_time_text_embed.py @@ -0,0 +1,17 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_transformer.qwen_timestep_embedding import QwenTimestepEmbedding +from mflux.models.qwen.model.qwen_transformer.qwen_timesteps import QwenTimesteps + + +class QwenTimeTextEmbed(nn.Module): + def __init__(self, timestep_proj_dim: int = 256, inner_dim: int = 3072): + super().__init__() + self.time_proj = QwenTimesteps(proj_dim=timestep_proj_dim) + self.timestep_embedder = QwenTimestepEmbedding(proj_dim=timestep_proj_dim, inner_dim=inner_dim) + + def __call__(self, timestep: mx.array, hidden_states: mx.array) -> mx.array: + time_proj = self.time_proj(timestep) + time_emb = self.timestep_embedder(time_proj.astype(hidden_states.dtype)) + return time_emb diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_timestep_embedding.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_timestep_embedding.py new file mode 100644 index 0000000..875e4fe --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_timestep_embedding.py @@ -0,0 +1,14 @@ +import mlx.core as mx +from mlx import nn + + +class QwenTimestepEmbedding(nn.Module): + def __init__(self, proj_dim: int, inner_dim: int): + super().__init__() + self.linear_1 = nn.Linear(proj_dim, inner_dim) + self.linear_2 = nn.Linear(inner_dim, inner_dim) + + def __call__(self, x: mx.array) -> mx.array: + x = nn.silu(self.linear_1(x)) + x = self.linear_2(x) + return x diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_timesteps.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_timesteps.py new file mode 100644 index 0000000..05184be --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_timesteps.py @@ -0,0 +1,21 @@ +import mlx.core as mx +from mlx import nn + + +class QwenTimesteps(nn.Module): + def __init__(self, proj_dim: int = 256, scale: float = 1000.0): + super().__init__() + self.proj_dim = proj_dim + self.scale = scale + + def __call__(self, timesteps: mx.array) -> mx.array: + half_dim = self.proj_dim // 2 + max_period = 10000.0 + exponent = -mx.log(mx.array(max_period)) * mx.arange(0, half_dim, dtype=mx.float32) + exponent = exponent / (half_dim - 0.0) + freqs = mx.exp(exponent) + emb = timesteps.astype(mx.float32)[:, None] * freqs[None, :] + emb = self.scale * emb + emb = mx.concatenate([mx.sin(emb), mx.cos(emb)], axis=-1) + emb = mx.concatenate([emb[:, half_dim:], emb[:, :half_dim]], axis=-1) + return emb diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer.py new file mode 100644 index 0000000..9472fb5 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer.py @@ -0,0 +1,109 @@ +from __future__ import annotations + +import mlx.core as mx +import numpy as np +from mlx import nn + +from mflux.config.runtime_config import RuntimeConfig +from mflux.models.flux.model.flux_transformer.ada_layer_norm_continuous import AdaLayerNormContinuous +from mflux.models.qwen.model.qwen_transformer.qwen_rope import QwenEmbedRopeMLX +from mflux.models.qwen.model.qwen_transformer.qwen_time_text_embed import QwenTimeTextEmbed +from mflux.models.qwen.model.qwen_transformer.qwen_transformer_block import QwenTransformerBlock + + +class QwenTransformer(nn.Module): + def __init__( + self, + in_channels: int = 64, + out_channels: int = 16, + num_layers: int = 60, + attention_head_dim: int = 128, + num_attention_heads: int = 24, + joint_attention_dim: int = 3584, + patch_size: int = 2, + ) -> None: + super().__init__() + self.inner_dim = num_attention_heads * attention_head_dim + self.img_in = nn.Linear(in_channels, self.inner_dim) + self.txt_norm = nn.RMSNorm(joint_attention_dim, eps=1e-6) + self.txt_in = nn.Linear(joint_attention_dim, self.inner_dim) + self.time_text_embed = QwenTimeTextEmbed(timestep_proj_dim=256, inner_dim=self.inner_dim) + self.pos_embed = QwenEmbedRopeMLX(theta=10000, axes_dim=[16, 56, 56], scale_rope=True) + self.transformer_blocks = [QwenTransformerBlock(dim=self.inner_dim, num_heads=num_attention_heads, head_dim=attention_head_dim) for i in range(num_layers)] # fmt: off + self.norm_out = AdaLayerNormContinuous(self.inner_dim, self.inner_dim) + self.proj_out = nn.Linear(self.inner_dim, patch_size * patch_size * out_channels) + + def __call__( + self, + t: int, + config: RuntimeConfig, + hidden_states: mx.array, + encoder_hidden_states: mx.array, + encoder_hidden_states_mask: mx.array, + ) -> mx.array: + # 1. Create embeddings + hidden_states = self.img_in(hidden_states) + encoder_hidden_states = self.txt_in(self.txt_norm(encoder_hidden_states)) + text_embeddings = QwenTransformer._compute_text_embeddings(t, hidden_states, self.time_text_embed, config) + image_rotary_embeddings = QwenTransformer._compute_rotary_embeddings(encoder_hidden_states_mask, self.pos_embed, config) # fmt: off + + # 2. Run the transformer blocks + for idx, block in enumerate(self.transformer_blocks): + encoder_hidden_states, hidden_states = QwenTransformer._apply_transformer_block( + idx=idx, + block=block, + hidden_states=hidden_states, + encoder_hidden_states=encoder_hidden_states, + encoder_hidden_states_mask=encoder_hidden_states_mask, + text_embeddings=text_embeddings, + image_rotary_embeddings=image_rotary_embeddings, + ) + + # 3. Apply output normalization and projection + hidden_states = self.norm_out(hidden_states, text_embeddings) + hidden_states = self.proj_out(hidden_states) + return hidden_states + + @staticmethod + def _apply_transformer_block( + idx: int, + block: QwenTransformerBlock, + hidden_states: mx.array, + encoder_hidden_states: mx.array, + encoder_hidden_states_mask: mx.array, + text_embeddings: mx.array, + image_rotary_embeddings: tuple[mx.array, mx.array], + ) -> tuple[mx.array, mx.array]: + return block( + hidden_states=hidden_states, + encoder_hidden_states=encoder_hidden_states, + encoder_hidden_states_mask=encoder_hidden_states_mask, + text_embeddings=text_embeddings, + image_rotary_emb=image_rotary_embeddings, + ) + + @staticmethod + def _compute_text_embeddings( + t: int, + hidden_states: mx.array, + time_text_embed: QwenTimeTextEmbed, + config: RuntimeConfig, + ) -> mx.array: + time_step = config.sigmas[t] + batch = hidden_states.shape[0] + timestep = mx.array(np.full((batch,), time_step, dtype=np.float32)) + text_embeddings = time_text_embed(timestep, hidden_states) + return text_embeddings + + @staticmethod + def _compute_rotary_embeddings( + encoder_hidden_states_mask: mx.array, + pos_embed: QwenEmbedRopeMLX, + config: RuntimeConfig, + ) -> tuple[mx.array, mx.array]: + latent_height = config.height // 16 + latent_width = config.width // 16 + img_shapes = [(1, latent_height, latent_width)] + txt_seq_lens = [int(mx.sum(encoder_hidden_states_mask[i]).item()) for i in range(encoder_hidden_states_mask.shape[0])] # fmt: off + img_rotary_emb, txt_rotary_emb = pos_embed(video_fhw=img_shapes, txt_seq_lens=txt_seq_lens) + return img_rotary_emb, txt_rotary_emb diff --git a/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer_block.py b/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer_block.py new file mode 100644 index 0000000..ddaf46f --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_transformer/qwen_transformer_block.py @@ -0,0 +1,76 @@ +from __future__ import annotations + +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_transformer.qwen_attention import QwenAttention +from mflux.models.qwen.model.qwen_transformer.qwen_feed_forward import QwenFeedForward +from mflux.models.qwen.model.qwen_transformer.qwen_layer_norm import QwenLayerNorm + + +class QwenTransformerBlock(nn.Module): + def __init__(self, dim: int = 3072, num_heads: int = 24, head_dim: int = 128): + super().__init__() + self.img_norm1 = QwenLayerNorm(dim=dim) + self.txt_norm1 = QwenLayerNorm(dim=dim) + self.attn = QwenAttention(dim=dim, num_heads=num_heads, head_dim=head_dim) + self.img_norm2 = nn.LayerNorm(dims=dim, eps=1e-6, affine=False) + self.txt_norm2 = nn.LayerNorm(dims=dim, eps=1e-6, affine=False) + self.img_ff = QwenFeedForward(dim=dim) + self.txt_ff = QwenFeedForward(dim=dim) + + def __call__( + self, + hidden_states: mx.array, + encoder_hidden_states: mx.array, + encoder_hidden_states_mask: mx.array | None, + text_embeddings: mx.array, + image_rotary_emb: tuple[mx.array, mx.array], + ) -> tuple[mx.array, mx.array]: + # 1. Compute stage 1 normalization and modulation + img_modulated, img_gate1, img_mod2 = self.img_norm1(hidden_states, text_embeddings) + txt_modulated, txt_gate1, txt_mod2 = self.txt_norm1(encoder_hidden_states, text_embeddings) + + # 2. Compute attention + img_attn_output, txt_attn_output = self.attn( + img_modulated=img_modulated, + txt_modulated=txt_modulated, + encoder_hidden_states_mask=encoder_hidden_states_mask, + image_rotary_emb=image_rotary_emb, + ) + + # 3. Apply attention residual and feed forward + hidden_states = QwenTransformerBlock._apply_residual_and_feed_forward( + hidden_states=hidden_states, + output=img_attn_output, + gate_attn=img_gate1, + mod_params=img_mod2, + norm2=self.img_norm2, + ff_module=self.img_ff, + ) + encoder_hidden_states = QwenTransformerBlock._apply_residual_and_feed_forward( + hidden_states=encoder_hidden_states, + output=txt_attn_output, + gate_attn=txt_gate1, + mod_params=txt_mod2, + norm2=self.txt_norm2, + ff_module=self.txt_ff, + ) + + return encoder_hidden_states, hidden_states + + @staticmethod + def _apply_residual_and_feed_forward( + hidden_states: mx.array, + output: mx.array, + gate_attn: mx.array, + mod_params: mx.array, + norm2: nn.LayerNorm, + ff_module: QwenFeedForward, + ) -> mx.array: + hidden_states = hidden_states + gate_attn[:, None, :] * output + shift2, scale2, gate_ff = mx.split(mod_params, 3, axis=-1) + normed = norm2(hidden_states) + modulated = normed * (1 + scale2[:, None, :]) + shift2[:, None, :] + ff_output = ff_module(modulated) + return hidden_states + gate_ff[:, None, :] * ff_output.astype(hidden_states.dtype) diff --git a/src/mflux/models/qwen/model/qwen_vae/__init__.py b/src/mflux/models/qwen/model/qwen_vae/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_attention_block_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_attention_block_3d.py new file mode 100644 index 0000000..cab0d3c --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_attention_block_3d.py @@ -0,0 +1,41 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_rms_norm import QwenImageRMSNorm + + +class QwenImageAttentionBlock3D(nn.Module): + def __init__(self, dim: int): + super().__init__() + self.dim = dim + self.norm = QwenImageRMSNorm(dim, images=True) # Attention blocks use images=True + self.to_qkv = nn.Conv2d(dim, dim * 3, kernel_size=1, stride=1, padding=0) + self.proj = nn.Conv2d(dim, dim, kernel_size=1, stride=1, padding=0) + + def __call__(self, x: mx.array) -> mx.array: + identity = x + batch_size, channels, time, height, width = x.shape + x = mx.transpose(x, (0, 2, 1, 3, 4)) + x = mx.reshape(x, (batch_size * time, channels, height, width)) + x_5d = mx.expand_dims(x, axis=2) + x_5d = self.norm(x_5d) + x = mx.squeeze(x_5d, axis=2) + x = mx.transpose(x, (0, 2, 3, 1)) + qkv = self.to_qkv(x) # [bt, h, w, 3c] + qkv = mx.transpose(qkv, (0, 3, 1, 2)) + qkv = mx.reshape(qkv, (batch_size * time, 1, channels * 3, height * width)) + qkv = mx.transpose(qkv, (0, 1, 3, 2)) + q, k, v = mx.split(qkv, 3, axis=-1) + scale = 1.0 / mx.sqrt(mx.array(float(channels))) + scores = mx.matmul(q, mx.transpose(k, (0, 1, 3, 2))) * scale + attn_weights = mx.softmax(scores, axis=-1) + attn_out = mx.matmul(attn_weights, v) + attn_out = mx.squeeze(attn_out, axis=1) + attn_out = mx.transpose(attn_out, (0, 2, 1)) + attn_out = mx.reshape(attn_out, (batch_size * time, channels, height, width)) + attn_out = mx.transpose(attn_out, (0, 2, 3, 1)) + attn_out = self.proj(attn_out) + attn_out = mx.transpose(attn_out, (0, 3, 1, 2)) + attn_out = mx.reshape(attn_out, (batch_size, time, channels, height, width)) + attn_out = mx.transpose(attn_out, (0, 2, 1, 3, 4)) + return attn_out + identity diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_causal_conv_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_causal_conv_3d.py new file mode 100644 index 0000000..6a3d0f1 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_causal_conv_3d.py @@ -0,0 +1,48 @@ +import mlx.core as mx +from mlx import nn + + +class QwenImageCausalConv3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: int = 3, + stride: int = 1, + padding: int = 1, + ): + super().__init__() + self.conv3d = nn.Conv3d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=0, + ) + self.padding = padding + self.stride = stride + self.kernel_size = kernel_size + + def __call__(self, x: mx.array) -> mx.array: + if isinstance(self.padding, int): + pad_t = pad_h = pad_w = self.padding + elif isinstance(self.padding, (tuple, list)) and len(self.padding) == 3: + pad_t, pad_h, pad_w = self.padding + else: + pad_t = pad_h = pad_w = self.padding + + # Apply causal padding in channels-first format (B, C, T, H, W) + if pad_t > 0 or pad_h > 0 or pad_w > 0: + pad_spec = [ + (0, 0), # Batch dimension (B) + (0, 0), # Channel dimension (C) + (2 * pad_t, 0), # Time dimension (T) - causal: pad past, not future + (pad_h, pad_h), # Height dimension (H) + (pad_w, pad_w), # Width dimension (W) + ] + x = mx.pad(x, pad_spec) + + x = mx.transpose(x, (0, 2, 3, 4, 1)) + x = self.conv3d(x) + x = mx.transpose(x, (0, 4, 1, 2, 3)) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_decoder_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_decoder_3d.py new file mode 100644 index 0000000..aea0240 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_decoder_3d.py @@ -0,0 +1,32 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_causal_conv_3d import QwenImageCausalConv3D +from mflux.models.qwen.model.qwen_vae.qwen_image_mid_block_3d import QwenImageMidBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_rms_norm import QwenImageRMSNorm +from mflux.models.qwen.model.qwen_vae.qwen_image_up_block_3d import QwenImageUpBlock3D + + +class QwenImageDecoder3D(nn.Module): + def __init__(self): + super().__init__() + self.conv_in = QwenImageCausalConv3D(16, 384, 3, 1, 1) + self.mid_block = QwenImageMidBlock3D(384, num_layers=1) + self.up_block0 = QwenImageUpBlock3D(384, 384, num_res_blocks=2, upsample_mode="upsample3d") + self.up_block1 = QwenImageUpBlock3D(192, 384, num_res_blocks=2, upsample_mode="upsample3d") + self.up_block2 = QwenImageUpBlock3D(192, 192, num_res_blocks=2, upsample_mode="upsample2d") + self.up_block3 = QwenImageUpBlock3D(96, 96, num_res_blocks=2, upsample_mode=None) + self.norm_out = QwenImageRMSNorm(96, images=False) # Decoder norm_out uses images=False + self.conv_out = QwenImageCausalConv3D(96, 3, 3, 1, 1) # RGB output + + def __call__(self, x: mx.array) -> mx.array: + x = self.conv_in(x) + x = self.mid_block(x) + x = self.up_block0(x) + x = self.up_block1(x) + x = self.up_block2(x) + x = self.up_block3(x) + x = self.norm_out(x) + x = nn.silu(x) + x = self.conv_out(x) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_down_block_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_down_block_3d.py new file mode 100644 index 0000000..a9b8955 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_down_block_3d.py @@ -0,0 +1,26 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_res_block_3d import QwenImageResBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_resample_3d import QwenImageResample3D + + +class QwenImageDownBlock3D(nn.Module): + def __init__(self, in_channels: int, out_channels: int, num_res_blocks: int = 2, downsample_mode: str = None): + super().__init__() + self.resnets = [] + current_dim = in_channels + for _ in range(num_res_blocks): # FIXED: Use num_res_blocks, not num_res_blocks + 1 + self.resnets.append(QwenImageResBlock3D(current_dim, out_channels)) + current_dim = out_channels + + self.downsamplers = None + if downsample_mode is not None: + self.downsamplers = [QwenImageResample3D(out_channels, mode=downsample_mode)] + + def __call__(self, x: mx.array) -> mx.array: + for resnet in self.resnets: + x = resnet(x) + if self.downsamplers is not None: + x = self.downsamplers[0](x) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_encoder_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_encoder_3d.py new file mode 100644 index 0000000..a4ef063 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_encoder_3d.py @@ -0,0 +1,71 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_causal_conv_3d import QwenImageCausalConv3D +from mflux.models.qwen.model.qwen_vae.qwen_image_down_block_3d import QwenImageDownBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_mid_block_3d import QwenImageMidBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_rms_norm import QwenImageRMSNorm + + +class QwenImageEncoder3D(nn.Module): + def __init__(self): + super().__init__() + self.dim = 96 + self.z_dim = 32 + self.dim_mult = [1, 2, 4, 4] + self.num_res_blocks = [2, 2, 2, 2] + self.attn_scales = [] + self.temporal_downsample = [False, False, True, True] + self.dropout = 0.0 + + dims = [self.dim * u for u in [1] + self.dim_mult] + self.conv_in = QwenImageCausalConv3D(3, dims[0], 3, 1, 1) + + down_blocks = [] + for i, (in_dim, out_dim) in enumerate(zip(dims[:-1], dims[1:])): + if i < len(self.temporal_downsample): + downsample_mode = "downsample3d" if self.temporal_downsample[i] else "downsample2d" + else: + downsample_mode = "downsample2d" + # Do not downsample on the final stage only + if i == len(dims) - 2: + downsample_mode = None + # Use per-stage num_res_blocks + stage_res_blocks = self.num_res_blocks[i] if isinstance(self.num_res_blocks, list) else self.num_res_blocks + down_block = QwenImageDownBlock3D( + in_dim, out_dim, num_res_blocks=stage_res_blocks, downsample_mode=downsample_mode + ) + down_blocks.append(down_block) + self.down_blocks = down_blocks + + self.mid_block = QwenImageMidBlock3D(dims[-1], num_layers=1) + self.norm_out = QwenImageRMSNorm(dims[-1], images=False) # Encoder norm_out uses images=False + self.conv_out = QwenImageCausalConv3D(dims[-1], 32, 3, 1, 1) # Changed z_dim to 32 + + def __call__(self, x: mx.array) -> mx.array: + x = self.conv_in(x) + for stage_idx, down_block in enumerate(self.down_blocks): + for res_idx, resnet in enumerate(down_block.resnets): + if stage_idx == 3: + residual = x + n1 = resnet.norm1(x) + a1 = nn.silu(n1) + c1 = resnet.conv1(a1) + n2 = resnet.norm2(c1) + a2 = nn.silu(n2) + c2 = resnet.conv2(a2) + if resnet.skip_conv is not None: + residual = resnet.skip_conv(residual) + y = c2 + residual + x = y + else: + x = resnet(x) + if down_block.downsamplers is not None: + x = down_block.downsamplers[0](x) + + x = self.mid_block(x) + norm_in = x + x = self.norm_out(norm_in) + x = nn.silu(x) + encoded = self.conv_out(x) + return encoded diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_mid_block_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_mid_block_3d.py new file mode 100644 index 0000000..ba0125e --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_mid_block_3d.py @@ -0,0 +1,26 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_attention_block_3d import QwenImageAttentionBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_res_block_3d import QwenImageResBlock3D + + +class QwenImageMidBlock3D(nn.Module): + def __init__(self, dim: int, num_layers: int = 1): + super().__init__() + self.dim = dim + resnets = [QwenImageResBlock3D(dim, dim)] + attentions = [] + for _ in range(num_layers): + attentions.append(QwenImageAttentionBlock3D(dim)) + resnets.append(QwenImageResBlock3D(dim, dim)) + self.attentions = attentions + self.resnets = resnets + + def __call__(self, x: mx.array) -> mx.array: + x = self.resnets[0](x) + for attn, resnet in zip(self.attentions, self.resnets[1:]): + if attn is not None: + x = attn(x) + x = resnet(x) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_res_block_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_res_block_3d.py new file mode 100644 index 0000000..fa65c00 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_res_block_3d.py @@ -0,0 +1,30 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_causal_conv_3d import QwenImageCausalConv3D +from mflux.models.qwen.model.qwen_vae.qwen_image_rms_norm import QwenImageRMSNorm + + +class QwenImageResBlock3D(nn.Module): + def __init__(self, in_channels: int, out_channels: int): + super().__init__() + self.norm1 = QwenImageRMSNorm(in_channels, images=False) + self.conv1 = QwenImageCausalConv3D(in_channels, out_channels, 3, 1, 1) + self.norm2 = QwenImageRMSNorm(out_channels, images=False) + self.conv2 = QwenImageCausalConv3D(out_channels, out_channels, 3, 1, 1) + if in_channels != out_channels: + self.skip_conv = QwenImageCausalConv3D(in_channels, out_channels, 1, 1, 0) + else: + self.skip_conv = None + + def __call__(self, x: mx.array) -> mx.array: + residual = x + x = self.norm1(x) + x = nn.silu(x) + x = self.conv1(x) + x = self.norm2(x) + x = nn.silu(x) + x = self.conv2(x) + if self.skip_conv is not None: + residual = self.skip_conv(residual) + return x + residual diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_resample_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_resample_3d.py new file mode 100644 index 0000000..2f4a133 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_resample_3d.py @@ -0,0 +1,50 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_causal_conv_3d import QwenImageCausalConv3D + + +class QwenImageResample3D(nn.Module): + def __init__(self, dim: int, mode: str): + super().__init__() + self.dim = dim + self.mode = mode + if mode == "upsample3d": + self.time_conv = QwenImageCausalConv3D(dim, dim * 2, kernel_size=(3, 1, 1), stride=1, padding=(1, 0, 0)) + self.resample_conv = nn.Conv2d(dim, dim // 2, kernel_size=3, stride=1, padding=1) + elif mode == "upsample2d": + self.resample_conv = nn.Conv2d(dim, dim // 2, kernel_size=3, stride=1, padding=1) + elif mode == "downsample3d": + self.time_conv = QwenImageCausalConv3D(dim, dim, kernel_size=(3, 1, 1), stride=(2, 1, 1), padding=(0, 0, 0)) + self.resample_conv = nn.Conv2d(dim, dim, kernel_size=3, stride=2, padding=0) + elif mode == "downsample2d": + self.resample_conv = nn.Conv2d(dim, dim, kernel_size=3, stride=2, padding=0) + else: + raise ValueError(f"Unsupported resample mode: {mode}") + + def __call__(self, x: mx.array) -> mx.array: + b, c, t, h, w = x.shape + t = x.shape[2] + x = mx.transpose(x, (0, 2, 1, 3, 4)) + x = mx.reshape(x, (b * t, c, h, w)) + x = mx.transpose(x, (0, 2, 3, 1)) + if self.mode in ["upsample3d", "upsample2d"]: + x = self._up_sample_nearest_2x(x) + + if self.mode in ["downsample2d", "downsample3d"]: + x = mx.pad(x, [(0, 0), (0, 1), (0, 1), (0, 0)]) + + x = self.resample_conv(x) + x = mx.transpose(x, (0, 3, 1, 2)) + new_c = x.shape[1] + new_h, new_w = x.shape[2], x.shape[3] + x = mx.reshape(x, (b, t, new_c, new_h, new_w)) + x = mx.transpose(x, (0, 2, 1, 3, 4)) + return x + + @staticmethod + def _up_sample_nearest_2x(x: mx.array) -> mx.array: + B_T, H, W, C = x.shape + x = mx.repeat(x, 2, axis=1) + x = mx.repeat(x, 2, axis=2) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_rms_norm.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_rms_norm.py new file mode 100644 index 0000000..a4daef8 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_rms_norm.py @@ -0,0 +1,33 @@ +import mlx.core as mx +from mlx import nn + + +class QwenImageRMSNorm(nn.Module): + def __init__(self, num_channels: int, eps: float = 1e-12, images: bool = True): + super().__init__() + self.eps = eps + self.scale = float(num_channels) ** 0.5 + self.images = images + if images: + self.weight = mx.ones((num_channels, 1, 1)) + else: + self.weight = mx.ones((num_channels, 1, 1, 1)) + + def __call__(self, x: mx.array) -> mx.array: + sum_sq = mx.sum(x * x, axis=1, keepdims=True) + l2_norm = mx.sqrt(sum_sq) + denom = mx.maximum(l2_norm, mx.array(self.eps, dtype=l2_norm.dtype)) + x_normalized = x / denom + if x.ndim == 5 and not self.images: + weight = self.weight.reshape(1, -1, 1, 1, 1) + elif x.ndim == 4 and self.images: + weight = self.weight.reshape(1, -1, 1, 1) + else: + if x.ndim == 5: + weight = self.weight.reshape(1, -1, 1, 1, 1) + elif x.ndim == 4: + weight = self.weight.reshape(1, -1, 1, 1) + else: + weight = self.weight + + return x_normalized * self.scale * weight diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_image_up_block_3d.py b/src/mflux/models/qwen/model/qwen_vae/qwen_image_up_block_3d.py new file mode 100644 index 0000000..5d9faa7 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_image_up_block_3d.py @@ -0,0 +1,26 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_res_block_3d import QwenImageResBlock3D +from mflux.models.qwen.model.qwen_vae.qwen_image_resample_3d import QwenImageResample3D + + +class QwenImageUpBlock3D(nn.Module): + def __init__(self, in_channels: int, out_channels: int, num_res_blocks: int = 2, upsample_mode: str = None): + super().__init__() + self.resnets = [] + current_dim = in_channels + for _ in range(num_res_blocks + 1): + self.resnets.append(QwenImageResBlock3D(current_dim, out_channels)) + current_dim = out_channels + + self.upsamplers = None + if upsample_mode is not None: + self.upsamplers = [QwenImageResample3D(out_channels, mode=upsample_mode)] + + def __call__(self, x: mx.array) -> mx.array: + for resnet in self.resnets: + x = resnet(x) + if self.upsamplers is not None: + x = self.upsamplers[0](x) + return x diff --git a/src/mflux/models/qwen/model/qwen_vae/qwen_vae.py b/src/mflux/models/qwen/model/qwen_vae/qwen_vae.py new file mode 100644 index 0000000..11c92f9 --- /dev/null +++ b/src/mflux/models/qwen/model/qwen_vae/qwen_vae.py @@ -0,0 +1,32 @@ +import mlx.core as mx +from mlx import nn + +from mflux.models.qwen.model.qwen_vae.qwen_image_causal_conv_3d import QwenImageCausalConv3D +from mflux.models.qwen.model.qwen_vae.qwen_image_decoder_3d import QwenImageDecoder3D +from mflux.models.qwen.model.qwen_vae.qwen_image_encoder_3d import QwenImageEncoder3D + + +class QwenVAE(nn.Module): + LATENTS_MEAN = mx.array([-0.7571, -0.7089, -0.9113, 0.1075, -0.1745, 0.9653, -0.1517, 1.5508, 0.4134, -0.0715, 0.5517, -0.3632, -0.1922, -0.9497, 0.2503, -0.2921]).reshape(1, 16, 1, 1, 1) # fmt: off + LATENTS_STD = mx.array([2.8184, 1.4541, 2.3275, 2.6558, 1.2196, 1.7708, 2.6052, 2.0743, 3.2687, 2.1526, 2.8652, 1.5579, 1.6382, 1.1253, 2.8251, 1.916]).reshape(1, 16, 1, 1, 1) # fmt: off + + def __init__(self): + super().__init__() + self.decoder = QwenImageDecoder3D() + self.encoder = QwenImageEncoder3D() + self.post_quant_conv = QwenImageCausalConv3D(16, 16, 1, 1, 0) + self.quant_conv = QwenImageCausalConv3D(32, 32, 1, 1, 0) # Keep 32 channels like diffusers + + def decode(self, latents: mx.array) -> mx.array: + latents = latents.reshape(latents.shape[0], latents.shape[1], 1, latents.shape[2], latents.shape[3]) + latents = latents * QwenVAE.LATENTS_STD + QwenVAE.LATENTS_MEAN + latents = self.post_quant_conv(latents) + decoded = self.decoder(latents) + return decoded[:, :, 0, :, :] + + def encode(self, latents: mx.array) -> mx.array: + latents = latents.reshape(latents.shape[0], latents.shape[1], 1, latents.shape[2], latents.shape[3]) + latents = self.encoder(latents) + latents = self.quant_conv(latents) + latents = latents[:, :16, :, :, :][:, :, 0, :, :] + return (latents - QwenVAE.LATENTS_MEAN[:, :, 0, :, :]) / QwenVAE.LATENTS_STD[:, :, 0, :, :] diff --git a/src/mflux/models/qwen/qwen_initializer.py b/src/mflux/models/qwen/qwen_initializer.py new file mode 100644 index 0000000..855d78f --- /dev/null +++ b/src/mflux/models/qwen/qwen_initializer.py @@ -0,0 +1,74 @@ +from mflux.config.model_config import ModelConfig +from mflux.models.common.lora.download.lora_huggingface_downloader import LoRAHuggingFaceDownloader +from mflux.models.common.lora.mapping.lora_loader import LoRALoader +from mflux.models.qwen.model.qwen_text_encoder.qwen_text_encoder import QwenTextEncoder +from mflux.models.qwen.model.qwen_transformer.qwen_transformer import QwenTransformer +from mflux.models.qwen.model.qwen_vae.qwen_vae import QwenVAE +from mflux.models.qwen.tokenizer.qwen_tokenizer_handler import QwenTokenizerHandler +from mflux.models.qwen.weights.qwen_weight_handler import QwenWeightHandler +from mflux.models.qwen.weights.qwen_lora_mapping import QwenLoRAMapping +from mflux.models.qwen.weights.qwen_weight_util import QwenWeightUtil + + +class QwenImageInitializer: + @staticmethod + def init( + qwen_model, + model_config: ModelConfig, + quantize: int | None, + local_path: str | None, + lora_paths: list[str] | None = None, + lora_scales: list[float] | None = None, + lora_names: list[str] | None = None, + lora_repo_id: str | None = None, + ) -> None: + # 0. Set paths, configs, and prompt_cache for later + qwen_model.prompt_cache = {} + qwen_model.model_config = model_config + + # 1. Load the regular weights + weights = QwenWeightHandler.load_regular_weights( + repo_id=model_config.model_name, + local_path=local_path, + ) + + # 2. Initialize tokenizers + tokenizer_handler = QwenTokenizerHandler( + repo_id=model_config.model_name, + local_path=local_path, + ) + qwen_model.qwen_tokenizer = tokenizer_handler.qwen + + # 3. Initialize all models + qwen_model.vae = QwenVAE() + qwen_model.transformer = QwenTransformer() + qwen_model.text_encoder = QwenTextEncoder() + + # 4. Apply weights and quantize the models + qwen_model.bits = QwenWeightUtil.set_weights_and_quantize( + quantize_arg=quantize, + weights=weights, + vae=qwen_model.vae, + transformer=qwen_model.transformer, + text_encoder=qwen_model.text_encoder, + ) + + # 5. Set LoRA weights + hf_lora_paths = LoRAHuggingFaceDownloader.download_loras( + lora_names=lora_names, + repo_id=lora_repo_id, + model_name="Qwen", + ) + qwen_model.lora_paths = (lora_paths or []) + hf_lora_paths + qwen_model.lora_scales = (lora_scales or []) + [1.0] * len(hf_lora_paths) + if qwen_model.lora_paths: + LoRALoader.load_and_apply_lora( + lora_mapping=QwenLoRAMapping.get_mapping(), + transformer=qwen_model.transformer, + lora_files=qwen_model.lora_paths, + lora_scales=qwen_model.lora_scales, + ) + else: + print("⚠️ No LoRA paths provided, skipping LoRA setup") + + print("🔧 === END QWEN LORA WEIGHT SETUP DEBUG ===\n") diff --git a/src/mflux/models/qwen/tokenizer/__init__.py b/src/mflux/models/qwen/tokenizer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/tokenizer/qwen_tokenizer.py b/src/mflux/models/qwen/tokenizer/qwen_tokenizer.py new file mode 100644 index 0000000..29bbbb1 --- /dev/null +++ b/src/mflux/models/qwen/tokenizer/qwen_tokenizer.py @@ -0,0 +1,23 @@ +import mlx.core as mx +from transformers import Qwen2Tokenizer + + +class TokenizerQwen: + def __init__(self, tokenizer: Qwen2Tokenizer, max_length: int = 1024): + self.tokenizer = tokenizer + self.max_length = max_length + self.prompt_template = "<|im_start|>system\nDescribe the image by detailing the color, shape, size, texture, quantity, text, spatial relationships of the objects and background:<|im_end|>\n<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n" + self.template_start_idx = 34 + + def tokenize(self, prompt: str) -> tuple[mx.array, mx.array]: + formatted_text = self.prompt_template.format(prompt) + tokens = self.tokenizer( + formatted_text, + max_length=self.max_length + self.template_start_idx, + padding=True, + truncation=True, + return_tensors="np", + ) + input_ids = mx.array(tokens["input_ids"]) + attention_mask = mx.array(tokens["attention_mask"]) + return input_ids, attention_mask diff --git a/src/mflux/models/qwen/tokenizer/qwen_tokenizer_handler.py b/src/mflux/models/qwen/tokenizer/qwen_tokenizer_handler.py new file mode 100644 index 0000000..c7711a7 --- /dev/null +++ b/src/mflux/models/qwen/tokenizer/qwen_tokenizer_handler.py @@ -0,0 +1,47 @@ +from pathlib import Path + +import transformers + +from mflux.models.qwen.tokenizer.qwen_tokenizer import TokenizerQwen +from mflux.utils.download import snapshot_download + + +class QwenTokenizerHandler: + """ + Handler for Qwen tokenizer, following the same pattern as TokenizerHandler. + + This loads the Qwen2Tokenizer from the model repository and wraps it + in our TokenizerQwen class for consistent interface. + """ + + def __init__( + self, + repo_id: str, + max_length: int = 1024, + local_path: str | None = None, + ): + root_path = Path(local_path) if local_path else QwenTokenizerHandler._download_or_get_cached_tokenizer(repo_id) + + # Load the Qwen2 tokenizer + tokenizer_path = root_path / "tokenizer" + self.tokenizer_raw = transformers.Qwen2Tokenizer.from_pretrained( + pretrained_model_name_or_path=tokenizer_path, + local_files_only=True, + ) + + # Wrap in our TokenizerQwen class + self.qwen = TokenizerQwen(self.tokenizer_raw, max_length) + + @staticmethod + def _download_or_get_cached_tokenizer(repo_id: str) -> Path: + """Download or get cached tokenizer files.""" + return Path( + snapshot_download( + repo_id=repo_id, + allow_patterns=[ + "tokenizer/**", + "added_tokens.json", + "chat_template.jinja", + ], + ) + ) diff --git a/src/mflux/models/qwen/variants/__init__.py b/src/mflux/models/qwen/variants/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/variants/txt2img/__init__.py b/src/mflux/models/qwen/variants/txt2img/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/variants/txt2img/qwen_image.py b/src/mflux/models/qwen/variants/txt2img/qwen_image.py new file mode 100644 index 0000000..e79d8de --- /dev/null +++ b/src/mflux/models/qwen/variants/txt2img/qwen_image.py @@ -0,0 +1,175 @@ +import mlx.core as mx +from mlx import nn +from tqdm import tqdm + +from mflux.callbacks.callbacks import Callbacks +from mflux.config.config import Config +from mflux.config.model_config import ModelConfig +from mflux.config.runtime_config import RuntimeConfig +from mflux.error.exceptions import StopImageGenerationException +from mflux.latent_creator.latent_creator import Img2Img, LatentCreator +from mflux.models.qwen.model.qwen_text_encoder.qwen_prompt_encoder import QwenPromptEncoder +from mflux.models.qwen.model.qwen_text_encoder.qwen_text_encoder import QwenTextEncoder +from mflux.models.qwen.model.qwen_transformer.qwen_transformer import QwenTransformer +from mflux.models.qwen.model.qwen_vae.qwen_vae import QwenVAE +from mflux.models.qwen.qwen_initializer import QwenImageInitializer +from mflux.post_processing.array_util import ArrayUtil +from mflux.post_processing.generated_image import GeneratedImage +from mflux.post_processing.image_util import ImageUtil + + +class QwenImage(nn.Module): + vae: QwenVAE + transformer: QwenTransformer + text_encoder: QwenTextEncoder + + def __init__( + self, + model_config: ModelConfig, + quantize: int | None = None, + local_path: str | None = None, + lora_paths: list[str] | None = None, + lora_scales: list[float] | None = None, + lora_names: list[str] | None = None, + lora_repo_id: str | None = None, + ): + super().__init__() + QwenImageInitializer.init( + qwen_model=self, + model_config=model_config, + quantize=quantize, + local_path=local_path, + lora_paths=lora_paths, + lora_scales=lora_scales, + lora_names=lora_names, + lora_repo_id=lora_repo_id, + ) + + def generate_image( + self, + seed: int, + prompt: str, + config: Config, + negative_prompt: str | None = None, + prompt_embeds: mx.array | None = None, + prompt_mask: mx.array | None = None, + negative_prompt_embeds: mx.array | None = None, + negative_prompt_mask: mx.array | None = None, + ) -> GeneratedImage: + # 0. Create a new runtime config based on the model type and input parameters + runtime_config = RuntimeConfig(config, self.model_config) + time_steps = tqdm(range(runtime_config.init_time_step, runtime_config.num_inference_steps)) + + # 1. Create the initial latents + latents = LatentCreator.create_for_txt2img_or_img2img( + seed=seed, + height=runtime_config.height, + width=runtime_config.width, + img2img=Img2Img( + vae=self.vae, + sigmas=runtime_config.sigmas, + init_time_step=runtime_config.init_time_step, + image_path=runtime_config.image_path, + ), + ) + + # 2. Encode the prompt + prompt_embeds, prompt_mask, negative_prompt_embeds, negative_prompt_mask = QwenPromptEncoder.encode_prompt( + prompt=prompt, + negative_prompt=negative_prompt, + prompt_cache=self.prompt_cache, + qwen_tokenizer=self.qwen_tokenizer, + qwen_text_encoder=self.text_encoder, + ) + + # (Optional) Call subscribers for beginning of loop + Callbacks.before_loop( + seed=seed, + prompt=prompt, + latents=latents, + config=runtime_config, + ) + + for t in time_steps: + try: + # 3. Predict the noise + noise = self.transformer( + t=t, + config=runtime_config, + hidden_states=latents, + encoder_hidden_states=prompt_embeds, + encoder_hidden_states_mask=prompt_mask, + ) + noise_negative = self.transformer( + t=t, + config=runtime_config, + hidden_states=latents, + encoder_hidden_states=negative_prompt_embeds, + encoder_hidden_states_mask=negative_prompt_mask, + ) + guided_noise = QwenImage._compute_guided_noise(noise, noise_negative, runtime_config.guidance) + + # 4.t Take one denoise step + dt = runtime_config.sigmas[t + 1] - runtime_config.sigmas[t] + latents = latents + guided_noise * dt + + # (Optional) Call subscribers in-loop + Callbacks.in_loop( + t=t, + seed=seed, + prompt=prompt, + latents=latents, + config=runtime_config, + time_steps=time_steps, + ) + + # (Optional) Evaluate to enable progress tracking + mx.eval(latents) + + except KeyboardInterrupt: # noqa: PERF203 + Callbacks.interruption( + t=t, + seed=seed, + prompt=prompt, + latents=latents, + config=runtime_config, + time_steps=time_steps, + ) + raise StopImageGenerationException(f"Stopping image generation at step {t + 1}/{len(time_steps)}") + + # (Optional) Call subscribers after loop + Callbacks.after_loop( + seed=seed, + prompt=prompt, + latents=latents, + config=runtime_config, + ) + + # 7. Decode the latent array and return the image + latents = ArrayUtil.unpack_latents(latents=latents, height=runtime_config.height, width=runtime_config.width) + decoded = self.vae.decode(latents) + return ImageUtil.to_image( + decoded_latents=decoded, + config=runtime_config, + seed=seed, + prompt=prompt, + quantization=self.bits, + lora_paths=self.lora_paths, + lora_scales=self.lora_scales, + image_path=runtime_config.image_path, + image_strength=runtime_config.image_strength, + generation_time=time_steps.format_dict["elapsed"], + negative_prompt=negative_prompt, + ) + + @staticmethod + def _compute_guided_noise( + noise: mx.array, + noise_negative: mx.array, + guidance: float, + ) -> mx.array: + combined = noise_negative + guidance * (noise - noise_negative) + cond_norm = mx.sqrt(mx.sum(noise * noise, axis=-1, keepdims=True) + 1e-12) + noise_norm = mx.sqrt(mx.sum(combined * combined, axis=-1, keepdims=True) + 1e-12) + noise = combined * (cond_norm / noise_norm) + return noise diff --git a/src/mflux/models/qwen/weights/__init__.py b/src/mflux/models/qwen/weights/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mflux/models/qwen/weights/qwen_lora_mapping.py b/src/mflux/models/qwen/weights/qwen_lora_mapping.py new file mode 100644 index 0000000..d1a8822 --- /dev/null +++ b/src/mflux/models/qwen/weights/qwen_lora_mapping.py @@ -0,0 +1,164 @@ +from typing import List + +from mflux.models.common.lora.mapping.lora_mapping import LoRAMapping, LoRATarget + + +class QwenLoRAMapping(LoRAMapping): + + @staticmethod + def get_mapping() -> List[LoRATarget]: + return [ + LoRATarget( + model_path="transformer_blocks.{block}.attn.to_q", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.to_q.lora_up.weight", + "transformer.transformer_blocks.{block}.attn.to_q.lora.up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.to_q.lora_down.weight", + "transformer.transformer_blocks.{block}.attn.to_q.lora.down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.to_q.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.to_k", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.to_k.lora_up.weight", + "transformer.transformer_blocks.{block}.attn.to_k.lora.up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.to_k.lora_down.weight", + "transformer.transformer_blocks.{block}.attn.to_k.lora.down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.to_k.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.to_v", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.to_v.lora_up.weight", + "transformer.transformer_blocks.{block}.attn.to_v.lora.up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.to_v.lora_down.weight", + "transformer.transformer_blocks.{block}.attn.to_v.lora.down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.to_v.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.attn_to_out.0", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.to_out.0.lora_up.weight", + "transformer.transformer_blocks.{block}.attn.to_out.0.lora.up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.to_out.0.lora_down.weight", + "transformer.transformer_blocks.{block}.attn.to_out.0.lora.down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.to_out.0.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.add_q_proj", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.add_q_proj.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.add_q_proj.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.add_q_proj.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.add_k_proj", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.add_k_proj.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.add_k_proj.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.add_k_proj.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.add_v_proj", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.add_v_proj.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.add_v_proj.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.add_v_proj.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.attn.to_add_out", + possible_up_patterns=[ + "transformer_blocks.{block}.attn.to_add_out.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.attn.to_add_out.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.attn.to_add_out.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.img_ff.mlp_in", + possible_up_patterns=[ + "transformer_blocks.{block}.img_mlp.net.0.proj.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.img_mlp.net.0.proj.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.img_mlp.net.0.proj.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.img_ff.mlp_out", + possible_up_patterns=[ + "transformer_blocks.{block}.img_mlp.net.2.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.img_mlp.net.2.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.img_mlp.net.2.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.txt_ff.mlp_in", + possible_up_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.0.proj.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.0.proj.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.0.proj.alpha", + ] + ), + LoRATarget( + model_path="transformer_blocks.{block}.txt_ff.mlp_out", + possible_up_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.2.lora_up.weight", + ], + possible_down_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.2.lora_down.weight", + ], + possible_alpha_patterns=[ + "transformer_blocks.{block}.txt_mlp.net.2.alpha", + ] + ), + ] + diff --git a/src/mflux/models/qwen/weights/qwen_weight_handler.py b/src/mflux/models/qwen/weights/qwen_weight_handler.py new file mode 100644 index 0000000..b70e04d --- /dev/null +++ b/src/mflux/models/qwen/weights/qwen_weight_handler.py @@ -0,0 +1,740 @@ +import json +from pathlib import Path + +import mlx.core as mx +from safetensors.mlx import load_file as mlx_load_file + +from mflux.models.flux.weights.weight_handler import MetaData, WeightHandler +from mflux.models.qwen.weights.qwen_weight_util import QwenWeightUtil + + +class QwenWeightHandler: + def __init__( + self, + meta_data: MetaData, + qwen_text_encoder: dict | None = None, + transformer: dict | None = None, + vae: dict | None = None, + ): + self.qwen_text_encoder = qwen_text_encoder + self.transformer = transformer + self.vae = vae + self.meta_data = meta_data + + def num_transformer_blocks(self) -> int: + return ( + len(self.transformer["transformer_blocks"]) + if self.transformer and "transformer_blocks" in self.transformer + else 0 + ) + + @staticmethod + def load_regular_weights( + repo_id: str | None = None, + local_path: str | None = None, + ) -> "QwenWeightHandler": + # Load the weights from disk, huggingface cache, or download from huggingface + root_path = Path(local_path) if local_path else WeightHandler.download_or_get_cached_weights(repo_id) + + # Load the weights + transformer, quantization_level, mflux_version = QwenWeightHandler.load_transformer(root_path=root_path) + qwen_text_encoder, _, _ = QwenWeightHandler._load_qwen_text_encoder(root_path=root_path) + vae, _, _ = QwenWeightHandler._load_vae(root_path=root_path) + + return QwenWeightHandler( + qwen_text_encoder=qwen_text_encoder, + transformer=transformer, + vae=vae, + meta_data=MetaData( + quantization_level=quantization_level, + scale=None, + is_lora=False, + mflux_version=mflux_version, + ), + ) + + @staticmethod + def load_transformer(root_path: Path) -> tuple[dict, int | None, str | None]: + flat = QwenWeightHandler._load_safetensors_shards(root_path / "transformer", loading_mode="multi_glob") + mapped_weights = QwenWeightHandler._manual_transformer_mapping(flat) + return mapped_weights, None, None + + @staticmethod + def _load_qwen_text_encoder(root_path: Path) -> tuple[dict, int | None, str | None]: + all_weights = QwenWeightHandler._load_safetensors_shards(root_path / "text_encoder", loading_mode="multi_json") + mapped_weights = QwenWeightHandler._manual_text_encoder_mapping(all_weights) + return mapped_weights, None, None + + @staticmethod + def _load_vae(root_path: Path) -> tuple[dict, int | None, str | None]: + weights = QwenWeightHandler._load_safetensors_shards(root_path / "vae", loading_mode="single") + reshaped_weights = [QwenWeightUtil.reshape_weights(k, v) for k, v in weights.items()] + reshaped_weights = QwenWeightUtil.flatten(reshaped_weights) + weights = dict(reshaped_weights) + mapped_weights = QwenWeightHandler._manual_flux_style_mapping(weights) + return mapped_weights, None, None + + @staticmethod + def _manual_flux_style_mapping(diffusers_weights: dict) -> dict: + weights = {} + + # 1. Simple direct mappings (like Flux does) + weights["decoder"] = {} + + # conv_in: decoder.conv_in.weight -> decoder.conv_in.conv3d.weight + weights["decoder"]["conv_in"] = { + "conv3d": { + "weight": diffusers_weights["decoder.conv_in.weight"], + "bias": diffusers_weights["decoder.conv_in.bias"], + } + } + + # conv_out: decoder.conv_out.weight -> decoder.conv_out.conv3d.weight + weights["decoder"]["conv_out"] = { + "conv3d": { + "weight": diffusers_weights["decoder.conv_out.weight"], + "bias": diffusers_weights["decoder.conv_out.bias"], + } + } + + # norm_out: decoder.norm_out.gamma -> decoder.norm_out.weight (flatten to 1D like MLX expects) + dec_gamma = diffusers_weights["decoder.norm_out.gamma"] + if len(dec_gamma.shape) > 1: + dec_gamma = mx.reshape(dec_gamma, (dec_gamma.shape[0],)) + weights["decoder"]["norm_out"] = {"weight": dec_gamma} + + # post_quant_conv: post_quant_conv.weight -> post_quant_conv.conv3d.weight + weights["post_quant_conv"] = { + "conv3d": { + "weight": diffusers_weights["post_quant_conv.weight"], + "bias": diffusers_weights["post_quant_conv.bias"], + } + } + + # 2. Mid block (manual structure building) + weights["decoder"]["mid_block"] = {} + + # mid_block.resnets (list of 2 resnets) + weights["decoder"]["mid_block"]["resnets"] = [{}, {}] + for i in range(2): + resnet = weights["decoder"]["mid_block"]["resnets"][i] + # conv1.weight -> conv1.conv3d.weight + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"decoder.mid_block.resnets.{i}.conv1.weight"], + "bias": diffusers_weights[f"decoder.mid_block.resnets.{i}.conv1.bias"], + } + } + # conv2.weight -> conv2.conv3d.weight + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"decoder.mid_block.resnets.{i}.conv2.weight"], + "bias": diffusers_weights[f"decoder.mid_block.resnets.{i}.conv2.bias"], + } + } + # norm gammas -> 1D weights + g1 = diffusers_weights[f"decoder.mid_block.resnets.{i}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"decoder.mid_block.resnets.{i}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + + # mid_block.attentions (list of 1 attention) + weights["decoder"]["mid_block"]["attentions"] = [{}] + attn = weights["decoder"]["mid_block"]["attentions"][0] + g = diffusers_weights["decoder.mid_block.attentions.0.norm.gamma"] + if len(g.shape) > 1: + g = mx.reshape(g, (g.shape[0],)) + attn["norm"] = {"weight": g} + # Note: to_qkv and proj are Conv2d, not Conv3d - no conv3d wrapper + attn["to_qkv"] = { + "weight": diffusers_weights["decoder.mid_block.attentions.0.to_qkv.weight"], + "bias": diffusers_weights["decoder.mid_block.attentions.0.to_qkv.bias"], + } + attn["proj"] = { + "weight": diffusers_weights["decoder.mid_block.attentions.0.proj.weight"], + "bias": diffusers_weights["decoder.mid_block.attentions.0.proj.bias"], + } + + # 3. Up blocks (manual structure building) + for block_idx in range(4): + up_block_key = f"up_block{block_idx}" + weights["decoder"][up_block_key] = {} + + # resnets (list of 3 resnets) + weights["decoder"][up_block_key]["resnets"] = [{}, {}, {}] + for res_idx in range(3): + resnet = weights["decoder"][up_block_key]["resnets"][res_idx] + + # conv1.weight -> conv1.conv3d.weight + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv1.weight"], + "bias": diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv1.bias"], + } + } + # conv2.weight -> conv2.conv3d.weight + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv2.weight"], + "bias": diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv2.bias"], + } + } + # norm gammas -> 1D weights + g1 = diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + + # Handle optional conv_shortcut -> skip_conv (only exists for some resnets) + shortcut_key = f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv_shortcut.weight" + if shortcut_key in diffusers_weights: + resnet["skip_conv"] = { + "conv3d": { + "weight": diffusers_weights[shortcut_key], + "bias": diffusers_weights[ + f"decoder.up_blocks.{block_idx}.resnets.{res_idx}.conv_shortcut.bias" + ], + } + } + + # upsamplers (only for blocks 0, 1, 2) + if block_idx <= 2: + weights["decoder"][up_block_key]["upsamplers"] = [{}] + upsampler = weights["decoder"][up_block_key]["upsamplers"][0] + + # resample.1.weight -> resample_conv.weight (Conv2d, no conv3d wrapper) + upsampler["resample_conv"] = { + "weight": diffusers_weights[f"decoder.up_blocks.{block_idx}.upsamplers.0.resample.1.weight"], + "bias": diffusers_weights[f"decoder.up_blocks.{block_idx}.upsamplers.0.resample.1.bias"], + } + + # time_conv (only for blocks 0, 1) + if block_idx <= 1: + upsampler["time_conv"] = { + "conv3d": { + "weight": diffusers_weights[f"decoder.up_blocks.{block_idx}.upsamplers.0.time_conv.weight"], + "bias": diffusers_weights[f"decoder.up_blocks.{block_idx}.upsamplers.0.time_conv.bias"], + } + } + + # 4. Encoder mappings (mirror structure of model parameter names) + weights["encoder"] = {} + + # conv_in: encoder.conv_in.weight -> encoder.conv_in.conv3d.weight + weights["encoder"]["conv_in"] = { + "conv3d": { + "weight": diffusers_weights["encoder.conv_in.weight"], + "bias": diffusers_weights["encoder.conv_in.bias"], + } + } + + # conv_out: encoder.conv_out.weight -> encoder.conv_out.conv3d.weight + weights["encoder"]["conv_out"] = { + "conv3d": { + "weight": diffusers_weights["encoder.conv_out.weight"], + "bias": diffusers_weights["encoder.conv_out.bias"], + } + } + + # norm_out: encoder.norm_out.gamma -> encoder.norm_out.weight (flatten to 1D) + enc_gamma = diffusers_weights["encoder.norm_out.gamma"] + if len(enc_gamma.shape) > 1: + enc_gamma = mx.reshape(enc_gamma, (enc_gamma.shape[0],)) + weights["encoder"]["norm_out"] = {"weight": enc_gamma} + + # mid_block + weights["encoder"]["mid_block"] = {} + # mid_block.attentions (list of 1) + weights["encoder"]["mid_block"]["attentions"] = [{}] + enc_attn = weights["encoder"]["mid_block"]["attentions"][0] + g = diffusers_weights["encoder.mid_block.attentions.0.norm.gamma"] + if len(g.shape) > 1: + g = mx.reshape(g, (g.shape[0],)) + enc_attn["norm"] = {"weight": g} + enc_attn["to_qkv"] = { + "weight": diffusers_weights["encoder.mid_block.attentions.0.to_qkv.weight"], + "bias": diffusers_weights["encoder.mid_block.attentions.0.to_qkv.bias"], + } + enc_attn["proj"] = { + "weight": diffusers_weights["encoder.mid_block.attentions.0.proj.weight"], + "bias": diffusers_weights["encoder.mid_block.attentions.0.proj.bias"], + } + # mid_block.resnets (list of 2) + weights["encoder"]["mid_block"]["resnets"] = [{}, {}] + for i in range(2): + res = weights["encoder"]["mid_block"]["resnets"][i] + g1 = diffusers_weights[f"encoder.mid_block.resnets.{i}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"encoder.mid_block.resnets.{i}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + res["norm1"] = {"weight": g1} + res["norm2"] = {"weight": g2} + res["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.mid_block.resnets.{i}.conv1.weight"], + "bias": diffusers_weights[f"encoder.mid_block.resnets.{i}.conv1.bias"], + } + } + res["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.mid_block.resnets.{i}.conv2.weight"], + "bias": diffusers_weights[f"encoder.mid_block.resnets.{i}.conv2.bias"], + } + } + + # down_blocks - simplified mapping like decoder + # From safetensor keys, encoder has flattened indices 0-9 that need to be grouped into 4 stages + # Stage 0: indices 0,1 (2 resnets, no downsampler) + # Stage 1: indices 2,3,4 (downsampler at 2, resnets at 3,4) + # Stage 2: indices 5,6,7 (downsampler at 5, resnets at 6,7) + # Stage 3: indices 8,9 (downsampler at 8, resnet at 9) + + weights["encoder"]["down_blocks"] = [{}, {}, {}, {}] + + # Stage 0: 2 resnets + downsampler (2D) + weights["encoder"]["down_blocks"][0]["resnets"] = [{}, {}] + for res_idx in range(2): + flat_idx = res_idx # 0, 1 + resnet = weights["encoder"]["down_blocks"][0]["resnets"][res_idx] + g1 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.bias"], + } + } + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.bias"], + } + } + # Downsampler appears after indices 0,1 at flattened index 2 + weights["encoder"]["down_blocks"][0]["downsamplers"] = [{}] + d0 = weights["encoder"]["down_blocks"][0]["downsamplers"][0] + d0["resample_conv"] = { + "weight": diffusers_weights["encoder.down_blocks.2.resample.1.weight"], + "bias": diffusers_weights["encoder.down_blocks.2.resample.1.bias"], + } + + # Stage 1: downsampler + 2 resnets + weights["encoder"]["down_blocks"][1]["resnets"] = [{}, {}] + weights["encoder"]["down_blocks"][1]["downsamplers"] = [{}] + # Downsampler at flattened index 5 (after stage0's 0,1,2 and stage1's 3,4) + d = weights["encoder"]["down_blocks"][1]["downsamplers"][0] + d["resample_conv"] = { + "weight": diffusers_weights["encoder.down_blocks.5.resample.1.weight"], + "bias": diffusers_weights["encoder.down_blocks.5.resample.1.bias"], + } + # Resnets at indices 3, 4 + for res_idx in range(2): + flat_idx = 3 + res_idx # 3, 4 + resnet = weights["encoder"]["down_blocks"][1]["resnets"][res_idx] + g1 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.bias"], + } + } + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.bias"], + } + } + # Skip conv only for first resnet (index 3) + if flat_idx == 3: + resnet["skip_conv"] = { + "conv3d": { + "weight": diffusers_weights["encoder.down_blocks.3.conv_shortcut.weight"], + "bias": diffusers_weights["encoder.down_blocks.3.conv_shortcut.bias"], + } + } + + # Stage 2: downsampler + 2 resnets + weights["encoder"]["down_blocks"][2]["resnets"] = [{}, {}] + weights["encoder"]["down_blocks"][2]["downsamplers"] = [{}] + # Downsampler at flattened index 8 + d = weights["encoder"]["down_blocks"][2]["downsamplers"][0] + d["resample_conv"] = { + "weight": diffusers_weights["encoder.down_blocks.8.resample.1.weight"], + "bias": diffusers_weights["encoder.down_blocks.8.resample.1.bias"], + } + d["time_conv"] = { + "conv3d": { + "weight": diffusers_weights["encoder.down_blocks.8.time_conv.weight"], + "bias": diffusers_weights["encoder.down_blocks.8.time_conv.bias"], + } + } + # Resnets at indices 6, 7 + for res_idx in range(2): + flat_idx = 6 + res_idx # 6, 7 + resnet = weights["encoder"]["down_blocks"][2]["resnets"][res_idx] + g1 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.bias"], + } + } + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.bias"], + } + } + # Skip conv only for first resnet (index 6) + if flat_idx == 6: + resnet["skip_conv"] = { + "conv3d": { + "weight": diffusers_weights["encoder.down_blocks.6.conv_shortcut.weight"], + "bias": diffusers_weights["encoder.down_blocks.6.conv_shortcut.bias"], + } + } + + # Stage 3: no downsampler + 2 resnets (like Diffusers) + weights["encoder"]["down_blocks"][3]["resnets"] = [{}, {}] + # No downsampler in final stage (mirrors diffusers) + # Resnets at indices 9, 10 + for res_idx in range(2): + flat_idx = 9 + res_idx # 9, 10 + resnet = weights["encoder"]["down_blocks"][3]["resnets"][res_idx] + g1 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm1.gamma"] + if len(g1.shape) > 1: + g1 = mx.reshape(g1, (g1.shape[0],)) + g2 = diffusers_weights[f"encoder.down_blocks.{flat_idx}.norm2.gamma"] + if len(g2.shape) > 1: + g2 = mx.reshape(g2, (g2.shape[0],)) + resnet["norm1"] = {"weight": g1} + resnet["norm2"] = {"weight": g2} + resnet["conv1"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv1.bias"], + } + } + resnet["conv2"] = { + "conv3d": { + "weight": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.weight"], + "bias": diffusers_weights[f"encoder.down_blocks.{flat_idx}.conv2.bias"], + } + } + # No skip_conv for stage 3 (channels don't change: 384->384) + + # 5. Quant conv + weights["quant_conv"] = { + "conv3d": { + "weight": diffusers_weights["quant_conv.weight"], + "bias": diffusers_weights["quant_conv.bias"], + } + } + + return weights + + @staticmethod + def _manual_transformer_mapping(diffusers_weights: dict) -> dict: + weights = {} + + # 1. Top-level mappings (exact MLX parameter names) + weights["img_in"] = {"weight": diffusers_weights["img_in.weight"], "bias": diffusers_weights["img_in.bias"]} + weights["txt_norm"] = {"weight": diffusers_weights["txt_norm.weight"]} + weights["txt_in"] = {"weight": diffusers_weights["txt_in.weight"], "bias": diffusers_weights["txt_in.bias"]} + + # 2. Time text embedder (exact MLX structure) + weights["time_text_embed"] = { + "timestep_embedder": { + "linear_1": { + "weight": diffusers_weights["time_text_embed.timestep_embedder.linear_1.weight"], + "bias": diffusers_weights["time_text_embed.timestep_embedder.linear_1.bias"], + }, + "linear_2": { + "weight": diffusers_weights["time_text_embed.timestep_embedder.linear_2.weight"], + "bias": diffusers_weights["time_text_embed.timestep_embedder.linear_2.bias"], + }, + } + } + + # 3. Output head (exact MLX structure) + weights["norm_out"] = { + "linear": { + "weight": diffusers_weights["norm_out.linear.weight"], + "bias": diffusers_weights["norm_out.linear.bias"], + } + } + weights["proj_out"] = { + "weight": diffusers_weights["proj_out.weight"], + "bias": diffusers_weights["proj_out.bias"], + } + + # 4. Transformer blocks (exact MLX parameter names - no applier needed!) + transformer_blocks = [] + for block_idx in range(60): # 60 blocks based on debug output + block = {} + + # Stage 1: Normalization + modulation modules (QwenLayerNorm) + block["img_norm1"] = { + "mod_linear": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.img_mod.1.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.img_mod.1.bias"], + }, + "norm1": {}, # LayerNorm with affine=False has no weights + "norm2": {}, # LayerNorm with affine=False has no weights + } + block["txt_norm1"] = { + "mod_linear": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mod.1.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mod.1.bias"], + }, + "norm1": {}, # LayerNorm with affine=False has no weights + "norm2": {}, # LayerNorm with affine=False has no weights + } + + # Stage 2: Separate normalization modules (Flux-style) + block["img_norm2"] = {} # LayerNorm with affine=False has no weights + block["txt_norm2"] = {} # LayerNorm with affine=False has no weights + + # Attention module (nested under "attn" like Flux) + block["attn"] = { + "to_q": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_q.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_q.bias"], + }, + "to_k": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_k.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_k.bias"], + }, + "to_v": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_v.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_v.bias"], + }, + "add_q_proj": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_q_proj.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_q_proj.bias"], + }, + "add_k_proj": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_k_proj.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_k_proj.bias"], + }, + "add_v_proj": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_v_proj.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.add_v_proj.bias"], + }, + "norm_q": {"weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.norm_q.weight"]}, + "norm_k": {"weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.norm_k.weight"]}, + "norm_added_q": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.norm_added_q.weight"] + }, + "norm_added_k": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.norm_added_k.weight"] + }, + "attn_to_out": [ # type: ignore[dict-item] + { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_out.0.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_out.0.bias"], + } + ], + "to_add_out": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_add_out.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.attn.to_add_out.bias"], + }, + } + + # Feed Forward modules (nested under img_ff/txt_ff) + block["img_ff"] = { + "mlp_in": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.img_mlp.net.0.proj.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.img_mlp.net.0.proj.bias"], + }, + "mlp_out": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.img_mlp.net.2.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.img_mlp.net.2.bias"], + }, + } + block["txt_ff"] = { + "mlp_in": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mlp.net.0.proj.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mlp.net.0.proj.bias"], + }, + "mlp_out": { + "weight": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mlp.net.2.weight"], + "bias": diffusers_weights[f"transformer_blocks.{block_idx}.txt_mlp.net.2.bias"], + }, + } + + transformer_blocks.append(block) + + weights["transformer_blocks"] = transformer_blocks + return weights + + @staticmethod + def _load_safetensors_shards(path: Path, loading_mode: str = "multi_glob") -> dict[str, mx.array]: + all_weights = {} + + if loading_mode == "single": + # VAE style: Single file loading + safetensors_files = list(path.glob("*.safetensors")) + if not safetensors_files: + raise FileNotFoundError(f"No safetensors files found in {path}") + + weights_file = safetensors_files[0] + data = mx.load(str(weights_file), return_metadata=True) + all_weights = dict(data[0].items()) + + elif loading_mode == "multi_json": + # Text encoder style: Use JSON index to map params to files + index_path = path / "model.safetensors.index.json" + with open(index_path) as f: + index = json.load(f) + + # Group weights by file + files_to_load = {} + for param_name, file_name in index["weight_map"].items(): + if file_name not in files_to_load: + files_to_load[file_name] = [] + files_to_load[file_name].append(param_name) + + # Load weights from each file + for file_name, param_names in files_to_load.items(): + file_path = path / file_name + + # Load the safetensor file with fallback to torch conversion + try: + file_weights = mlx_load_file(str(file_path)) + except Exception: # noqa: BLE001 + # If MLX can't load directly, try with torch and convert + import torch + from safetensors.torch import load_file as torch_load_file + + torch_weights = torch_load_file(str(file_path)) + file_weights = {} + for name, tensor in torch_weights.items(): + # Convert to float32 if bfloat16, then to MLX + if tensor.dtype == torch.bfloat16: + tensor = tensor.to(torch.float32) + file_weights[name] = mx.array(tensor.numpy()) + + # Add requested parameters to combined weights + for param_name in param_names: + if param_name in file_weights: + all_weights[param_name] = file_weights[param_name] + else: # "multi_glob" + # Transformer style: Directly glob all safetensors files + shard_files = sorted([f for f in path.glob("*.safetensors") if not f.name.startswith("._")]) + if not shard_files: + raise FileNotFoundError(f"No safetensors found in {path}") + + for shard in shard_files: + data, metadata = mx.load(str(shard), return_metadata=True) + all_weights.update(dict(data.items())) + + return all_weights + + @staticmethod + def _manual_text_encoder_mapping(hf_weights: dict[str, mx.array]) -> dict: + weights = {} + converted_count = 0 + skipped_count = 0 + + # Skip LM head and vision encoder weights - we only need the text encoder + filtered_weights = {} + for hf_name, weight in hf_weights.items(): + if hf_name.startswith("lm_head") or hf_name.startswith("visual."): + skipped_count += 1 + continue + filtered_weights[hf_name] = weight + + # 1. Top-level embeddings (exact MLX parameter names) + weights["encoder"] = {} + weights["encoder"]["embed_tokens"] = {"weight": filtered_weights["model.embed_tokens.weight"]} + converted_count += 1 + + # 2. Final norm (exact MLX parameter names) + weights["encoder"]["norm"] = {"weight": filtered_weights["model.norm.weight"]} + converted_count += 1 + + # 3. Encoder layers (exact MLX parameter names - 28 layers) + layers = [] + for layer_idx in range(28): # 28 text encoder layers + layer = {} + + # Layer norms + layer["input_layernorm"] = {"weight": filtered_weights[f"model.layers.{layer_idx}.input_layernorm.weight"]} + layer["post_attention_layernorm"] = { + "weight": filtered_weights[f"model.layers.{layer_idx}.post_attention_layernorm.weight"] + } + converted_count += 2 + + # Self attention (exact MLX parameter names) + layer["self_attn"] = { + "q_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.self_attn.q_proj.weight"], + "bias": filtered_weights[f"model.layers.{layer_idx}.self_attn.q_proj.bias"], + }, + "k_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.self_attn.k_proj.weight"], + "bias": filtered_weights[f"model.layers.{layer_idx}.self_attn.k_proj.bias"], + }, + "v_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.self_attn.v_proj.weight"], + "bias": filtered_weights[f"model.layers.{layer_idx}.self_attn.v_proj.bias"], + }, + "o_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.self_attn.o_proj.weight"] + # Note: o_proj has no bias in MLX structure + }, + } + converted_count += 7 + + # MLP (exact MLX parameter names) + layer["mlp"] = { + "gate_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.mlp.gate_proj.weight"] + # Note: gate_proj has no bias in MLX structure + }, + "up_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.mlp.up_proj.weight"] + # Note: up_proj has no bias in MLX structure + }, + "down_proj": { + "weight": filtered_weights[f"model.layers.{layer_idx}.mlp.down_proj.weight"] + # Note: down_proj has no bias in MLX structure + }, + } + converted_count += 3 + + layers.append(layer) + + weights["encoder"]["layers"] = layers + return weights diff --git a/src/mflux/models/qwen/weights/qwen_weight_util.py b/src/mflux/models/qwen/weights/qwen_weight_util.py new file mode 100644 index 0000000..e7454fd --- /dev/null +++ b/src/mflux/models/qwen/weights/qwen_weight_util.py @@ -0,0 +1,62 @@ +from typing import TYPE_CHECKING + +import mlx.nn as nn +from mlx.utils import tree_flatten # noqa: F401 + +from mflux.config.config import Config +from mflux.utils.quantization_util import QuantizationUtil + +if TYPE_CHECKING: + from mflux.models.qwen.weights.qwen_weight_handler import QwenWeightHandler + + +class QwenWeightUtil: + @staticmethod + def flatten(params): + return [(k, v) for p in params for (k, v) in p] + + @staticmethod + def reshape_weights(key, value): + if len(value.shape) == 4: + value = value.transpose(0, 2, 3, 1) + elif len(value.shape) == 5: + value = value.transpose(0, 2, 3, 4, 1) + value = value.reshape(-1).reshape(value.shape).astype(Config.precision) + return [(key, value)] + + @staticmethod + def set_weights_and_quantize( + quantize_arg: int | None, + weights: "QwenWeightHandler", + vae: nn.Module, + transformer: nn.Module, + text_encoder: nn.Module | None = None, + ) -> int | None: + if weights.meta_data.quantization_level is None and quantize_arg is None: + QwenWeightUtil._set_model_weights(weights, vae, transformer, text_encoder) + return None + + if weights.meta_data.quantization_level is None and quantize_arg is not None: + bits = quantize_arg + QwenWeightUtil._set_model_weights(weights, vae, transformer, text_encoder) + QuantizationUtil.quantize_qwen_models(text_encoder, vae, transformer, bits, weights) + return bits + + if weights.meta_data.quantization_level is not None: + bits = weights.meta_data.quantization_level + QuantizationUtil.quantize_qwen_models(text_encoder, vae, transformer, bits, weights) + QwenWeightUtil._set_model_weights(weights, vae, transformer, text_encoder) + return bits + + raise Exception("Error setting weights") + + @staticmethod + def _set_model_weights( + weights: "QwenWeightHandler", + vae: nn.Module, + transformer: nn.Module, + text_encoder: nn.Module | None = None, + ): + vae.update(weights.vae, strict=False) + transformer.update(weights.transformer, strict=False) + text_encoder.update(weights.qwen_text_encoder, strict=False) diff --git a/src/mflux/models/transformer/common/attention_utils.py b/src/mflux/models/transformer/common/attention_utils.py deleted file mode 100644 index 7674424..0000000 --- a/src/mflux/models/transformer/common/attention_utils.py +++ /dev/null @@ -1,59 +0,0 @@ -import mlx.core as mx -from mlx import nn -from mlx.core.fast import scaled_dot_product_attention - - -class AttentionUtils: - @staticmethod - def process_qkv( - hidden_states: mx.array, - to_q: nn.Linear, - to_k: nn.Linear, - to_v: nn.Linear, - norm_q: nn.RMSNorm, - norm_k: nn.RMSNorm, - num_heads: int, - head_dim: int, - ): - query = to_q(hidden_states) - key = to_k(hidden_states) - value = to_v(hidden_states) - - # Reshape and transpose - query = mx.transpose(mx.reshape(query, (1, -1, num_heads, head_dim)), (0, 2, 1, 3)) - key = mx.transpose(mx.reshape(key, (1, -1, num_heads, head_dim)), (0, 2, 1, 3)) - value = mx.transpose(mx.reshape(value, (1, -1, num_heads, head_dim)), (0, 2, 1, 3)) - - # Apply normalization - query = norm_q(query) - key = norm_k(key) - - return query, key, value - - @staticmethod - def compute_attention( - query: mx.array, - key: mx.array, - value: mx.array, - batch_size: int, - num_heads: int, - head_dim: int, - ) -> mx.array: - scale = 1 / mx.sqrt(query.shape[-1]) - hidden_states = scaled_dot_product_attention(query, key, value, scale=scale) - - hidden_states = mx.transpose(hidden_states, (0, 2, 1, 3)) - hidden_states = mx.reshape( - hidden_states, - (batch_size, -1, num_heads * head_dim), - ) - - return hidden_states - - @staticmethod - def apply_rope(xq: mx.array, xk: mx.array, freqs_cis: mx.array): - xq_ = xq.astype(mx.float32).reshape(*xq.shape[:-1], -1, 1, 2) - xk_ = xk.astype(mx.float32).reshape(*xk.shape[:-1], -1, 1, 2) - xq_out = freqs_cis[..., 0] * xq_[..., 0] + freqs_cis[..., 1] * xq_[..., 1] - xk_out = freqs_cis[..., 0] * xk_[..., 0] + freqs_cis[..., 1] * xk_[..., 1] - return xq_out.reshape(*xq.shape).astype(mx.float32), xk_out.reshape(*xk.shape).astype(mx.float32) diff --git a/src/mflux/post_processing/generated_image.py b/src/mflux/post_processing/generated_image.py index 91fb352..e682009 100644 --- a/src/mflux/post_processing/generated_image.py +++ b/src/mflux/post_processing/generated_image.py @@ -3,8 +3,8 @@ from pathlib import Path import mlx.core as mx import PIL.Image -from mflux.community.concept_attention.attention_data import ConceptHeatmap from mflux.config.model_config import ModelConfig +from mflux.models.flux.variants.concept_attention.attention_data import ConceptHeatmap from mflux.utils.version_util import VersionUtil @@ -31,6 +31,7 @@ class GeneratedImage: redux_image_paths: list[str] | list[Path] | None = None, redux_image_strengths: list[float] | None = None, concept_heatmap: ConceptHeatmap | None = None, + negative_prompt: str | None = None, ): self.image = image self.model_config = model_config @@ -52,6 +53,7 @@ class GeneratedImage: self.redux_image_paths = redux_image_paths self.redux_image_strengths = redux_image_strengths self.concept_heatmap = concept_heatmap + self.negative_prompt = negative_prompt def get_right_half(self) -> "GeneratedImage": # Calculate the coordinates for the right half @@ -151,4 +153,5 @@ class GeneratedImage: "redux_image_paths": str(self.redux_image_paths) if self.redux_image_paths else None, "redux_image_strengths": self._format_redux_strengths(), "prompt": self.prompt, + "negative_prompt": self.negative_prompt if self.negative_prompt else None, } diff --git a/src/mflux/post_processing/image_util.py b/src/mflux/post_processing/image_util.py index c465108..ce9f483 100644 --- a/src/mflux/post_processing/image_util.py +++ b/src/mflux/post_processing/image_util.py @@ -9,8 +9,8 @@ import PIL.Image import PIL.ImageDraw from PIL._typing import StrOrBytesPath -from mflux.community.concept_attention.attention_data import ConceptHeatmap from mflux.config.runtime_config import RuntimeConfig +from mflux.models.flux.variants.concept_attention.attention_data import ConceptHeatmap from mflux.post_processing.generated_image import GeneratedImage from mflux.ui.box_values import AbsoluteBoxValues, BoxValues @@ -36,6 +36,7 @@ class ImageUtil: masked_image_path: str | Path | None = None, depth_image_path: str | Path | None = None, concept_heatmap: ConceptHeatmap | None = None, + negative_prompt: str | None = None, ) -> GeneratedImage: normalized = ImageUtil._denormalize(decoded_latents) normalized_numpy = ImageUtil._to_numpy(normalized) @@ -61,6 +62,7 @@ class ImageUtil: redux_image_paths=redux_image_paths, redux_image_strengths=redux_image_strengths, concept_heatmap=concept_heatmap, + negative_prompt=negative_prompt, ) @staticmethod diff --git a/src/mflux/save.py b/src/mflux/save.py index 6fd0e81..13790b4 100644 --- a/src/mflux/save.py +++ b/src/mflux/save.py @@ -1,5 +1,5 @@ from mflux.config.model_config import ModelConfig -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.txt2img.flux import Flux1 from mflux.ui.cli.parsers import CommandLineParser diff --git a/src/mflux/train.py b/src/mflux/train.py index b09aee0..4255aba 100644 --- a/src/mflux/train.py +++ b/src/mflux/train.py @@ -1,6 +1,6 @@ -from mflux.dreambooth.dreambooth import DreamBooth -from mflux.dreambooth.dreambooth_initializer import DreamBoothInitializer from mflux.error.exceptions import StopTrainingException +from mflux.models.flux.variants.dreambooth.dreambooth import DreamBooth +from mflux.models.flux.variants.dreambooth.dreambooth_initializer import DreamBoothInitializer from mflux.ui.cli.parsers import CommandLineParser diff --git a/src/mflux/completions/README.md b/src/mflux/ui/cli/completions/README.md similarity index 100% rename from src/mflux/completions/README.md rename to src/mflux/ui/cli/completions/README.md diff --git a/src/mflux/completions/__init__.py b/src/mflux/ui/cli/completions/__init__.py similarity index 100% rename from src/mflux/completions/__init__.py rename to src/mflux/ui/cli/completions/__init__.py diff --git a/src/mflux/completions/generator.py b/src/mflux/ui/cli/completions/generator.py similarity index 99% rename from src/mflux/completions/generator.py rename to src/mflux/ui/cli/completions/generator.py index 34b0f36..263901b 100644 --- a/src/mflux/completions/generator.py +++ b/src/mflux/ui/cli/completions/generator.py @@ -3,7 +3,7 @@ import argparse from pathlib import Path -from mflux.community.in_context.utils.in_context_loras import LORA_NAME_MAP +from mflux.models.flux.variants.in_context.utils.in_context_loras import LORA_NAME_MAP from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser diff --git a/src/mflux/completions/install.py b/src/mflux/ui/cli/completions/install.py similarity index 98% rename from src/mflux/completions/install.py rename to src/mflux/ui/cli/completions/install.py index 1b0393a..3d6c47d 100644 --- a/src/mflux/completions/install.py +++ b/src/mflux/ui/cli/completions/install.py @@ -7,7 +7,7 @@ import subprocess import sys from pathlib import Path -from mflux.completions.generator import CompletionGenerator +from mflux.ui.cli.completions.generator import CompletionGenerator def get_zsh_fpath(): diff --git a/src/mflux/ui/cli/parsers.py b/src/mflux/ui/cli/parsers.py index f904b90..005f340 100644 --- a/src/mflux/ui/cli/parsers.py +++ b/src/mflux/ui/cli/parsers.py @@ -5,13 +5,13 @@ import time import typing as t from pathlib import Path -from mflux.community.in_context.utils.in_context_loras import LORA_NAME_MAP, LORA_REPO_ID +from mflux.models.flux.variants.in_context.utils.in_context_loras import LORA_NAME_MAP, LORA_REPO_ID from mflux.ui import ( box_values, defaults as ui_defaults, scale_factor, ) -from mflux.weights.lora_library import get_lora_path +from mflux.utils.lora_library import get_lora_path class ModelSpecAction(argparse.Action): @@ -105,6 +105,7 @@ class CommandLineParser(argparse.ArgumentParser): prompt_group = self.add_mutually_exclusive_group(required=(require_prompt and not supports_metadata_config)) prompt_group.add_argument("--prompt", type=str, help="The textual description of the image to generate.") prompt_group.add_argument("--prompt-file", type=Path, help="Path to a file containing the prompt text. The file will be re-read before each generation, allowing you to edit the prompt between iterations when using multiple seeds without restarting the program.") + self.add_argument("--negative-prompt", type=str, default="", help="The negative prompt to guide what the model should not generate.") self.add_argument("--seed", type=int, default=None, nargs='+', help="Specify 1+ Entropy Seeds (Default is 1 time-based random-seed)") self.add_argument("--auto-seeds", type=int, default=-1, help="Auto generate N Entropy Seeds (random ints between 0 and 1 billion") self._add_image_generator_common_arguments(supports_dimension_scale_factor=supports_dimension_scale_factor) diff --git a/src/mflux/ui/defaults.py b/src/mflux/ui/defaults.py index 00dd4d6..80d4205 100644 --- a/src/mflux/ui/defaults.py +++ b/src/mflux/ui/defaults.py @@ -17,11 +17,12 @@ GUIDANCE_SCALE_KONTEXT = 2.5 HEIGHT, WIDTH = 1024, 1024 MAX_PIXELS_WARNING_THRESHOLD = 2048 * 2048 IMAGE_STRENGTH = 0.4 -MODEL_CHOICES = ["dev", "schnell", "krea-dev", "dev-krea"] +MODEL_CHOICES = ["dev", "schnell", "krea-dev", "dev-krea", "qwen"] MODEL_INFERENCE_STEPS = { "dev": 25, "krea-dev": 25, "schnell": 4, + "qwen": 25, } QUANTIZE_CHOICES = [3, 5, 4, 6, 8] diff --git a/src/mflux/ui/prompt_utils.py b/src/mflux/ui/prompt_utils.py index 97a9fb7..fd542c2 100644 --- a/src/mflux/ui/prompt_utils.py +++ b/src/mflux/ui/prompt_utils.py @@ -46,3 +46,8 @@ def get_effective_prompt(args: Namespace) -> str: # Return regular prompt return args.prompt + + +def get_effective_negative_prompt(args: Namespace) -> str: + # Return negative prompt or empty string if not provided + return getattr(args, "negative_prompt", "") diff --git a/src/mflux/upscale.py b/src/mflux/upscale.py index a28fa81..52acfa7 100644 --- a/src/mflux/upscale.py +++ b/src/mflux/upscale.py @@ -5,8 +5,8 @@ import PIL.Image from mflux.callbacks.callback_manager import CallbackManager from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.controlnet.flux_controlnet import Flux1Controlnet from mflux.error.exceptions import PromptFileReadError, StopImageGenerationException +from mflux.models.flux.variants.controlnet.flux_controlnet import Flux1Controlnet from mflux.ui import defaults as ui_defaults from mflux.ui.cli.parsers import CommandLineParser from mflux.ui.prompt_utils import get_effective_prompt @@ -34,7 +34,7 @@ def main(): ) # 2. Register the optional callbacks - memory_saver = CallbackManager.register_callbacks(args=args, flux=flux) + memory_saver = CallbackManager.register_callbacks(args=args, model=flux) try: # Calculate output dimensions and handle safety warnings diff --git a/src/mflux/weights/download.py b/src/mflux/utils/download.py similarity index 100% rename from src/mflux/weights/download.py rename to src/mflux/utils/download.py diff --git a/src/mflux/weights/lora_library.py b/src/mflux/utils/lora_library.py similarity index 100% rename from src/mflux/weights/lora_library.py rename to src/mflux/utils/lora_library.py diff --git a/src/mflux/weights/quantization_util.py b/src/mflux/utils/quantization_util.py similarity index 76% rename from src/mflux/weights/quantization_util.py rename to src/mflux/utils/quantization_util.py index e4b763a..6863207 100644 --- a/src/mflux/weights/quantization_util.py +++ b/src/mflux/utils/quantization_util.py @@ -3,8 +3,9 @@ from typing import TYPE_CHECKING import mlx.nn as nn if TYPE_CHECKING: - from mflux.controlnet.weight_handler_controlnet import WeightHandlerControlnet - from mflux.weights.weight_handler import WeightHandler + from mflux.models.flux.variants.controlnet.weight_handler_controlnet import WeightHandlerControlnet + from mflux.models.flux.weights.weight_handler import WeightHandler + from mflux.models.qwen.weights.qwen_weight_handler import QwenWeightHandler class QuantizationUtil: @@ -75,3 +76,19 @@ class QuantizationUtil: # Only quantize layers that have to_quantized method return hasattr(m, "to_quantized") + + @staticmethod + def quantize_qwen_models( + text_encoder: nn.Module, + vae: nn.Module, + transformer: nn.Module, + quantize: int, + weights: "QwenWeightHandler", + ) -> None: + q_level = weights.meta_data.quantization_level + + if quantize is not None or q_level is not None: + bits = int(q_level) if q_level is not None else quantize + nn.quantize(vae, bits=bits) + nn.quantize(transformer, bits=bits) + nn.quantize(text_encoder, bits=bits) diff --git a/tests/arg_parser/test_lora_library_integration.py b/tests/arg_parser/test_lora_library_integration.py index 2c5a155..0437474 100644 --- a/tests/arg_parser/test_lora_library_integration.py +++ b/tests/arg_parser/test_lora_library_integration.py @@ -7,7 +7,7 @@ from unittest import mock import pytest from mflux.ui.cli.parsers import CommandLineParser -from mflux.weights import lora_library +from mflux.utils import lora_library @pytest.fixture diff --git a/tests/depth/test_depth_pro.py b/tests/depth/test_depth_pro.py index 17e9be2..cafc7fc 100644 --- a/tests/depth/test_depth_pro.py +++ b/tests/depth/test_depth_pro.py @@ -1,10 +1,8 @@ import os from pathlib import Path -import numpy as np -from PIL import Image - from mflux.models.depth_pro.depth_pro import DepthPro +from tests.image_generation.helpers.image_compare import check_images_close_enough class TestDepthPro: @@ -26,10 +24,10 @@ class TestDepthPro: depth_result.depth_image.save(output_image_path) # Assert that the generated depth image matches the reference image - np.testing.assert_array_almost_equal( - np.array(Image.open(output_image_path)), - np.array(Image.open(reference_image_path)), - err_msg=f"Generated depth image doesn't match reference depth image. Check {output_image_path} vs {reference_image_path}", + check_images_close_enough( + output_image_path, + reference_image_path, + "Generated image doesn't match reference image.", ) finally: diff --git a/tests/dreambooth/config/train.json b/tests/dreambooth/config/train.json index 1dcbbaf..43ee4b8 100644 --- a/tests/dreambooth/config/train.json +++ b/tests/dreambooth/config/train.json @@ -61,7 +61,7 @@ } }, "examples": { - "path": "../../../src/mflux/dreambooth/_example/images/", + "path": "../../../src/mflux/models/flux/variants/dreambooth/_example/images/", "images": [ { "image": "01.jpeg", diff --git a/tests/dreambooth/test_dreambooth_dataset_iterator.py b/tests/dreambooth/test_dreambooth_dataset_iterator.py index 82b6fa0..db286e9 100644 --- a/tests/dreambooth/test_dreambooth_dataset_iterator.py +++ b/tests/dreambooth/test_dreambooth_dataset_iterator.py @@ -4,9 +4,9 @@ from typing import List, Set import mlx.core as mx import pytest -from mflux.dreambooth.dataset.batch import Example -from mflux.dreambooth.dataset.dataset import Dataset -from mflux.dreambooth.dataset.iterator import Iterator +from mflux.models.flux.variants.dreambooth.dataset.batch import Example +from mflux.models.flux.variants.dreambooth.dataset.dataset import Dataset +from mflux.models.flux.variants.dreambooth.dataset.iterator import Iterator def get_dataset(num_examples: int) -> Dataset: diff --git a/tests/dreambooth/test_resume_training.py b/tests/dreambooth/test_resume_training.py index c25ca28..d2e92f5 100644 --- a/tests/dreambooth/test_resume_training.py +++ b/tests/dreambooth/test_resume_training.py @@ -6,10 +6,10 @@ import numpy as np from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.dreambooth.dreambooth import DreamBooth -from mflux.dreambooth.dreambooth_initializer import DreamBoothInitializer -from mflux.dreambooth.state.zip_util import ZipUtil -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.dreambooth.dreambooth import DreamBooth +from mflux.models.flux.variants.dreambooth.dreambooth_initializer import DreamBoothInitializer +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.txt2img.flux import Flux1 CHECKPOINT_3 = "tests/dreambooth/tmp/_checkpoints/0000003_checkpoint.zip" CHECKPOINT_4 = "tests/dreambooth/tmp/_checkpoints/0000004_checkpoint.zip" diff --git a/tests/dreambooth/test_train_and_load_weights.py b/tests/dreambooth/test_train_and_load_weights.py index 1b4b30c..fba2584 100644 --- a/tests/dreambooth/test_train_and_load_weights.py +++ b/tests/dreambooth/test_train_and_load_weights.py @@ -5,10 +5,10 @@ import numpy as np from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.dreambooth.dreambooth import DreamBooth -from mflux.dreambooth.dreambooth_initializer import DreamBoothInitializer -from mflux.dreambooth.state.zip_util import ZipUtil -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.dreambooth.dreambooth import DreamBooth +from mflux.models.flux.variants.dreambooth.dreambooth_initializer import DreamBoothInitializer +from mflux.models.flux.variants.dreambooth.state.zip_util import ZipUtil +from mflux.models.flux.variants.txt2img.flux import Flux1 CHECKPOINT = "tests/dreambooth/tmp/_checkpoints/0000005_checkpoint.zip" OUTPUT_DIR = "tests/dreambooth/tmp/_checkpoints/0000005_checkpoint" diff --git a/tests/image_generation/helpers/image_generation_concept_test_helper.py b/tests/image_generation/helpers/image_generation_concept_test_helper.py index c01185c..5402375 100644 --- a/tests/image_generation/helpers/image_generation_concept_test_helper.py +++ b/tests/image_generation/helpers/image_generation_concept_test_helper.py @@ -1,10 +1,10 @@ import os from pathlib import Path -from mflux.community.concept_attention.flux_concept import Flux1Concept -from mflux.community.concept_attention.flux_concept_from_image import Flux1ConceptFromImage from mflux.config.config import Config from mflux.config.model_config import ModelConfig +from mflux.models.flux.variants.concept_attention.flux_concept import Flux1Concept +from mflux.models.flux.variants.concept_attention.flux_concept_from_image import Flux1ConceptFromImage from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_controlnet_test_helper.py b/tests/image_generation/helpers/image_generation_controlnet_test_helper.py index 998c24f..aec0c30 100644 --- a/tests/image_generation/helpers/image_generation_controlnet_test_helper.py +++ b/tests/image_generation/helpers/image_generation_controlnet_test_helper.py @@ -2,7 +2,7 @@ import os from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.controlnet.flux_controlnet import Flux1Controlnet +from mflux.models.flux.variants.controlnet.flux_controlnet import Flux1Controlnet from tests.image_generation.helpers.image_generation_test_helper import ImageGeneratorTestHelper from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_depth_test_helper.py b/tests/image_generation/helpers/image_generation_depth_test_helper.py index 5d646d2..52da724 100644 --- a/tests/image_generation/helpers/image_generation_depth_test_helper.py +++ b/tests/image_generation/helpers/image_generation_depth_test_helper.py @@ -3,7 +3,7 @@ from pathlib import Path from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux_tools.depth.flux_depth import Flux1Depth +from mflux.models.flux.variants.depth.flux_depth import Flux1Depth from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_fill_test_helper.py b/tests/image_generation/helpers/image_generation_fill_test_helper.py index 7b61b9e..544251d 100644 --- a/tests/image_generation/helpers/image_generation_fill_test_helper.py +++ b/tests/image_generation/helpers/image_generation_fill_test_helper.py @@ -2,7 +2,7 @@ import os from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux_tools.fill.flux_fill import Flux1Fill +from mflux.models.flux.variants.fill.flux_fill import Flux1Fill from mflux.ui import defaults as ui_defaults from tests.image_generation.helpers.image_generation_test_helper import ImageGeneratorTestHelper diff --git a/tests/image_generation/helpers/image_generation_ic_edit_test_helper.py b/tests/image_generation/helpers/image_generation_ic_edit_test_helper.py index 6b389ed..c244198 100644 --- a/tests/image_generation/helpers/image_generation_ic_edit_test_helper.py +++ b/tests/image_generation/helpers/image_generation_ic_edit_test_helper.py @@ -1,10 +1,10 @@ import os from pathlib import Path -from mflux.community.in_context.flux_in_context_fill import Flux1InContextFill -from mflux.community.in_context.utils.in_context_loras import prepare_ic_edit_loras from mflux.config.config import Config from mflux.config.model_config import ModelConfig +from mflux.models.flux.variants.in_context.flux_in_context_fill import Flux1InContextFill +from mflux.models.flux.variants.in_context.utils.in_context_loras import prepare_ic_edit_loras from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_in_context_test_helper.py b/tests/image_generation/helpers/image_generation_in_context_test_helper.py index df20d0f..09269b6 100644 --- a/tests/image_generation/helpers/image_generation_in_context_test_helper.py +++ b/tests/image_generation/helpers/image_generation_in_context_test_helper.py @@ -1,10 +1,10 @@ import os from pathlib import Path -from mflux.community.in_context.flux_in_context_dev import Flux1InContextDev -from mflux.community.in_context.utils.in_context_loras import LORA_REPO_ID, get_lora_filename from mflux.config.config import Config from mflux.config.model_config import ModelConfig +from mflux.models.flux.variants.in_context.flux_in_context_dev import Flux1InContextDev +from mflux.models.flux.variants.in_context.utils.in_context_loras import LORA_REPO_ID, get_lora_filename from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_kontext_test_helper.py b/tests/image_generation/helpers/image_generation_kontext_test_helper.py index c3b6cdc..195094b 100644 --- a/tests/image_generation/helpers/image_generation_kontext_test_helper.py +++ b/tests/image_generation/helpers/image_generation_kontext_test_helper.py @@ -3,7 +3,7 @@ from pathlib import Path from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.kontext.flux_kontext import Flux1Kontext +from mflux.models.flux.variants.kontext.flux_kontext import Flux1Kontext from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_redux_test_helper.py b/tests/image_generation/helpers/image_generation_redux_test_helper.py index 16f2dab..b3ae0f5 100644 --- a/tests/image_generation/helpers/image_generation_redux_test_helper.py +++ b/tests/image_generation/helpers/image_generation_redux_test_helper.py @@ -3,7 +3,7 @@ from pathlib import Path from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux_tools.redux.flux_redux import Flux1Redux +from mflux.models.flux.variants.redux.flux_redux import Flux1Redux from .image_compare import check_images_close_enough diff --git a/tests/image_generation/helpers/image_generation_test_helper.py b/tests/image_generation/helpers/image_generation_test_helper.py index a1731df..c0be630 100644 --- a/tests/image_generation/helpers/image_generation_test_helper.py +++ b/tests/image_generation/helpers/image_generation_test_helper.py @@ -1,9 +1,11 @@ import os from pathlib import Path +from typing import Type, Union from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.qwen.variants.txt2img.qwen_image import QwenImage from .image_compare import check_images_close_enough @@ -13,16 +15,22 @@ class ImageGeneratorTestHelper: def assert_matches_reference_image( reference_image_path: str, output_image_path: str, + model_class: Type[Union[Flux1, QwenImage]], model_config: ModelConfig, prompt: str, steps: int, seed: int, + quantize=8, height: int | None = None, width: int | None = None, image_path: str | None = None, image_strength: float | None = None, lora_paths: list[str] | None = None, lora_scales: list[float] | None = None, + lora_names: list[str] | None = None, + lora_repo_id: str | None = None, + negative_prompt: str | None = None, + guidance: float | None = None, ): # resolve paths reference_image_path = ImageGeneratorTestHelper.resolve_path(reference_image_path) @@ -31,24 +39,44 @@ class ImageGeneratorTestHelper: try: # given - flux = Flux1( - model_config=model_config, - quantize=8, - lora_paths=lora_paths, - lora_scales=lora_scales, - ) + model_kwargs = { + "model_config": model_config, + "quantize": quantize, + "lora_paths": lora_paths, + "lora_scales": lora_scales, + } + + # Add HuggingFace LoRA parameters if provided + if lora_names is not None: + model_kwargs["lora_names"] = lora_names + if lora_repo_id is not None: + model_kwargs["lora_repo_id"] = lora_repo_id + + model = model_class(**model_kwargs) + config_kwargs = { + "num_inference_steps": steps, + "image_path": ImageGeneratorTestHelper.resolve_path(image_path), + "image_strength": image_strength, + "height": height, + "width": width, + } + + # Add guidance if provided + if guidance is not None: + config_kwargs["guidance"] = guidance + + generate_kwargs = { + "seed": seed, + "prompt": prompt, + "config": Config(**config_kwargs), + } + + # Add negative_prompt for Qwen models + if model_class == QwenImage and negative_prompt is not None: + generate_kwargs["negative_prompt"] = negative_prompt + # when - image = flux.generate_image( - seed=seed, - prompt=prompt, - config=Config( - num_inference_steps=steps, - image_path=ImageGeneratorTestHelper.resolve_path(image_path), - image_strength=image_strength, - height=height, - width=width, - ), - ) + image = model.generate_image(**generate_kwargs) image.save(path=output_image_path, overwrite=True) # then diff --git a/tests/image_generation/test_generate_image.py b/tests/image_generation/test_generate_image.py index b67c15b..982e0af 100644 --- a/tests/image_generation/test_generate_image.py +++ b/tests/image_generation/test_generate_image.py @@ -1,4 +1,6 @@ from mflux.config.model_config import ModelConfig +from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.qwen.variants.txt2img.qwen_image import QwenImage from tests.image_generation.helpers.image_generation_test_helper import ImageGeneratorTestHelper @@ -7,6 +9,7 @@ class TestImageGenerator: ImageGeneratorTestHelper.assert_matches_reference_image( reference_image_path="reference_schnell.png", output_image_path="output_schnell.png", + model_class=Flux1, model_config=ModelConfig.schnell(), steps=2, seed=42, @@ -19,6 +22,7 @@ class TestImageGenerator: ImageGeneratorTestHelper.assert_matches_reference_image( reference_image_path="reference_dev.png", output_image_path="output_dev.png", + model_class=Flux1, model_config=ModelConfig.dev(), steps=15, seed=42, @@ -31,6 +35,7 @@ class TestImageGenerator: ImageGeneratorTestHelper.assert_matches_reference_image( reference_image_path="reference_dev_lora.png", output_image_path="output_dev_lora.png", + model_class=Flux1, model_config=ModelConfig.dev(), steps=15, seed=42, @@ -45,6 +50,7 @@ class TestImageGenerator: ImageGeneratorTestHelper.assert_matches_reference_image( reference_image_path="reference_dev_lora_multiple.png", output_image_path="output_dev_lora_multiple.png", + model_class=Flux1, model_config=ModelConfig.dev(), steps=15, seed=42, @@ -59,6 +65,7 @@ class TestImageGenerator: ImageGeneratorTestHelper.assert_matches_reference_image( reference_image_path="reference_dev_image_to_image.png", output_image_path="output_dev_image_to_image.png", + model_class=Flux1, image_strength=0.4, model_config=ModelConfig.dev(), steps=8, @@ -68,3 +75,53 @@ class TestImageGenerator: image_path="reference_dev_lora.png", prompt="Luxury food photograph of a burger", ) + + def test_qwen_image_generation_text_to_image(self): + ImageGeneratorTestHelper.assert_matches_reference_image( + reference_image_path="reference_qwen_txt2img.png", + output_image_path="output_qwen_txt2img.png", + model_class=QwenImage, + model_config=ModelConfig.qwen_image(), + quantize=6, + steps=20, + seed=42, + height=341, + width=768, + prompt="Luxury food photograph", + negative_prompt="ugly, blurry, low quality", + ) + + def test_qwen_image_generation_image_to_image(self): + ImageGeneratorTestHelper.assert_matches_reference_image( + reference_image_path="reference_qwen_img2img.png", + output_image_path="output_qwen_img2img.png", + model_class=QwenImage, + model_config=ModelConfig.qwen_image(), + quantize=6, + steps=20, + seed=44, + height=341, + width=768, + image_path="reference_dev_image_to_image.png", + image_strength=0.4, + prompt="Luxury food photograph of a burger", + negative_prompt="ugly, blurry, low quality", + ) + + def test_qwen_image_generation_lora(self): + ImageGeneratorTestHelper.assert_matches_reference_image( + reference_image_path="reference_qwen_lora.png", + output_image_path="output_qwen_lora.png", + model_class=QwenImage, + model_config=ModelConfig.qwen_image(), + guidance=1.0, + quantize=6, + steps=4, + seed=42, + height=341, + width=768, + prompt="Luxury food photograph", + negative_prompt="ugly, blurry, low quality", + lora_repo_id="lightx2v/Qwen-Image-Lightning", + lora_names=["Qwen-Image-Lightning-4steps-V2.0.safetensors"], + ) diff --git a/tests/model_config/test_model_config.py b/tests/model_config/test_model_config.py index 7345552..315b72a 100644 --- a/tests/model_config/test_model_config.py +++ b/tests/model_config/test_model_config.py @@ -224,3 +224,30 @@ def test_model_config_error(): def test_invalid_base_model_error(): with pytest.raises(InvalidBaseModel): ModelConfig.from_name("acme-lab/some-model-who-knows-what-its-based-on", base_model="something_unknown") + + +def test_qwen_image(): + model = ModelConfig.from_name("qwen") + assert model.model_name == "Qwen/Qwen-Image" + assert model.max_sequence_length is None + assert model.num_train_steps is None + assert model.supports_guidance is None + assert model.requires_sigma_shift is None + + +def test_qwen_image_alias(): + model = ModelConfig.from_name("qwen-image") + assert model.model_name == "Qwen/Qwen-Image" + assert model.max_sequence_length is None + assert model.num_train_steps is None + assert model.supports_guidance is None + assert model.requires_sigma_shift is None + + +def test_qwen_image_full_name(): + model = ModelConfig.from_name("Qwen/Qwen-Image") + assert model.model_name == "Qwen/Qwen-Image" + assert model.max_sequence_length is None + assert model.num_train_steps is None + assert model.supports_guidance is None + assert model.requires_sigma_shift is None diff --git a/tests/model_saving/test_model_saving.py b/tests/model_saving/test_model_saving.py index 6f7f7e0..accf641 100644 --- a/tests/model_saving/test_model_saving.py +++ b/tests/model_saving/test_model_saving.py @@ -6,9 +6,9 @@ import numpy as np from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.flux.weights.weight_handler import WeightHandler from mflux.utils.version_util import VersionUtil -from mflux.weights.weight_handler import WeightHandler PATH = "tests/4bit/" diff --git a/tests/model_saving/test_model_saving_lora.py b/tests/model_saving/test_model_saving_lora.py index 3851f81..f8e8e7b 100644 --- a/tests/model_saving/test_model_saving_lora.py +++ b/tests/model_saving/test_model_saving_lora.py @@ -6,7 +6,7 @@ import numpy as np from mflux.config.config import Config from mflux.config.model_config import ModelConfig -from mflux.flux.flux import Flux1 +from mflux.models.flux.variants.txt2img.flux import Flux1 PATH = "tests/4bit/" diff --git a/tests/resources/reference_qwen_img2img.png b/tests/resources/reference_qwen_img2img.png new file mode 100644 index 0000000000000000000000000000000000000000..5e79517e6bb5413450ae72bc0cb4b0d05ef0d0d4 GIT binary patch literal 333111 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%0Aju=5@FF>GFyXCO3}05XofMElVYBV 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ℜ&g~N04R)#NQ*>2_TCLt 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 z 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

>GeJVrw_Ix$Wx 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

iiUYKQ|Z&gX&A~HI`h^C~Rx`k{PD>D|D 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 Izk74{ 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ξy=vWlc6_!loa;y-V8o80U-&+6;i6|1reO}S^*#>pF_&{f}0?+{v5L#0d zv(S{Qrmm{x+!kAwax~OZBT|Y&K-F#qYpa9+i!#QLV_}U2QGFxAP2JR`51xal6<`Gv zum}j~ob{f|y73~&;1Kh|Swsd1Rj7kpUX{yv6}Kt-AdG+t))G0x%%N5ZGAfK$oi7^> zJSxo2!PaV7y24Dh$9e9WWet`9;NrX#k@4(w_tu`)e)aMsEX%OC!f3lni>%`eeduL` zCXkqY8~o5k0JmudhAa=U2LuBT!|P2nYj&X4pNIf)L-HEG8Ay)~YP}M|{CgVthaT(k zEV|C_+5nOCP6IcFLNXk{H8$4q?4hU~Jg_~BM8=LL)1BSD$~QiQz#>)C_^@1+SM$Yq zl#j>b$!I(tkBg$nvfNrrL|JC7Gnva8@0)t{^2z?(Y7^ z#_Z0mn?LyA{V%@!{FBc<|L*>S)3b}FZh{Cm(ga?X^~HSo;^g$n(`PpiAKtoobmQpe z-ocHH?Ssj5%jIL^^60lpB;TgX>@zG!PTNyL@&zSykq~4DCa}+Pmk6XY6Cglm=c5EH zyBZR4$kOv$QHX7|gGi1kYDA;j(auaXY7Aj$oKQmQ#7#2)bd!h!)D%-ErD<+o4*|i( zMtdrVCUAU(7`sRJAKJcP4-1kxBd)t{j4=Ibf42V_>o)fet;<4P0l@O|?8$duZ6Do9 zF;IwP_HW#oZfsW7vZ>1NzWVshAN<_pqxQ)}2RGi>*xIdD3--;uFMs>N&;P8L?Y2-J zsTj|0zx{*nAKVS0Vdkrg<8MCy^}(&TT|Q20FewM^!dN$cT;G@1k8Ee?Xn|y+kbZcF zm-m*pght~qwJccM1>0lf!Q(oAevf}UGFWeENItz$ZrJ^nSl8GDtg)UXu+rxt(8i8Z z+IzZ-JNh5q)(woV+kQYfp`U)QJNrsn&sQvn7PGv>1~EY&L&n9_TV&jt`Db7O>eKuT za{QziJ#1M#8JBGxY`(p-DGH5mO2p7KE9SDPmn>EArC{Sj#aacf1iZwg$q0s=L1S%3 z>cA9yFwu;{o7rNTPj`g90*I1ANdZw=f$KUvKdv7>s~grg?lhxOVcSB9 zHX6iQn;epA%$J??!d4ywLhH-dmh%Qg6_x0pQVAS9c#Y|vRRM(n$)Ev1K!Zr2h?J4b z0b+Q81(P9KAcG2oE`y!vu3ugp3pWx<$VU;arWn?iRka<9S^of3V+M8~BQ#V(@D2M$ z*f+kZtGZk^%aso?=M!Mu4;O+iR(>T7sT$Rs2#CCZ58e=p!HT7h`JALpU||eq8RbRh zG6QU|Vi7RT7-xK=Rl~LSYg5J^$@l z)KE)J+#h;3Pq#dW-~$s6AFSa4vsgEPBw5op*JsO2?R8f4PKoMN<+LqB+b0bm)+)^VWOsy!Yv6pMLhm7Y`qQe{p%$)Qx8etc~YIS)b2W&ri=EKYezz_u%Hy z;nC5}gQHtpyEmqryZLx#-6*C7*OX^KTIYjwDFnOmXi2IwWc1DhOk=w)iTbhX+$GnB zwj;lmKzge|e{;ty($(7CvVI1-S%n1FAbH0ClHmtCTI>xB>47PWJpkA>n;wAnHoEZgP;ECjW<4w__0+A`xjoflC(Ng0-+rVB>aQPWtKok68XKW zulGB4s#vRiws1VbiGdb^L*VrfXASEbPdj|qzU}7u_da%wF(eAq;R3*}!^4ZU!$bqr zq>1`kJwsAO_aNR6(GNG3ggRDq*S30bd`OJiG2O1NxR(dp;(U&bMVq``rp@~dec_9) z6h=HK_KV2W{#a9hqfWkF=&1|SFrAPu1r@PTXAhNX!)!ig-QCA6sI)Q)Rw z-7-8p_s^czFJ8j^2lDt?BVezt1Pm0pDo9mv!y%|{Y${80dfs?p1P>qt9Gy;vMzcvi z8C_glHo^=ohc%f6Qf@dxM~cxokwhv5i^BTsqi=5fv!BD(gdhX-sA`-SB@S$?N?<`k zR|qP(0#!rZ5PGSvxV(^NE?g6V$?|M8Qwe}%^33K93m0CBNw9f!eo>aI^74Xwy>gi~ zWNqe*ZFkHWX94?k+p0hY+pIz%00;+e9V3V;iiXILFaZD=0yNONu1FY=3|X7Pus~S= zk&J6iJ^*nWmns=DA|Rl~jmKLzY(5bV#yU_@=D0XTB>FdFyO0>Ws&eq4A(oR94k|u0 zbqIA+*JW9)R`tb2eRkP+2GZCtsDc1^7E*|z)W(tmT$K&5I*S8F_kB6A0ZeE)MytcN?754Z8Gx5{=9qNAip=b^nP{m^y? zbPvrs9;FHpGyDDjceG${(3c)$wfuLT;|;jf;6sPxx~_MF)Q&-qf6}`n67C)x<{MiV zmlxG)RhFx!uIj4vzGm-NRZ~{YV!6uPd^F0(qw#b)8ILAKQ8?%N2q9-fkj97Q#p&wm z^7Q4ioxQ`I{lm#@Gk5vH!HwB$+y80alF z*DWL6sCFtZ4Dh&iD)!o4*byN14+lv5wmQ+0+Kb&xcqggV0FbhYLPx-TMs6z>V93K&KX zrTcsI*N&4WGKxQO5FC>%Kx@qn$3H!!gIEd5uHosyxTiN*>woI)@Ir;_e+>w?d%H+e z3C1N(FaTx=$^mwEw6us?4{rPZX@O~%_PWjToRa-i>}w89Ea(U=Buq4u_IZ(YM2@T@ zJFxwbiOGJzn88N(cAvtqL?0sb9%}_-ax%KCzCq2L85?qBH8hn%9hwS}LBUvyN@z^n z2-?<$07Svoz6rajx?JMfxn3-as|yIoLZC+W4)V9(4yUKp*Z0^r!MWWZepoLS z^RvsK>=l9lIuZg_5Ye!z&daK5JWESgWN17a0mA%p$t=ujEGl6eu+&nPtiF5s;)}Zn zzkH7=Lt=?LGmJ&`(s*S7Bvl4$Q5m7prVhyIe(qyeFAc*%3hpH({Vb6iBHP+=>F(S$c z9Aaji0U#oR%(k*O=IJMc#sWt7B}iZZ0Yr$2{uNarPHabPXf4@sVRKMc1#Ja!o7z!h ztvyfxt3ZmVq6)&Hk>DlxSnESV6GG*is$7+;Reg0;y*#c?FGJ91CvO?KAtC@3C4;#$ zS>`x!!>X!*0UTw7puj53Vt`Bx?FLYSngci5cqVJ?$lA=+RUjg=E{OQrdr{;4)m7Zw#FswnBZW?MBkAfaKMm(!GFjx)b)l2eOP0D(2d+{n(6uc zV61Tc-u68dK|yso+uSD9`gO%Z#yEW}USx;zOtx7tfaSvy*3=TYFo(`;*yL?ur{nw>PGnw{PD5 z;NADW{OYT(?tSy*>9foE+&4amuxJx>S@XrRetEupdVF^D{qviLkB<(I4sYDr*}t{9 zdsIxfT`?h>wbc)MsMEuU;Uo;hgMR;rC%G^XM1xzCwCu=b0KZ$X4jsfDJE6$M<8StNF#luRq%QsGcl-+ca?AN=G`Zoc)y zG&cxwyWOB~y)Qh$w(c#iX$+mMFB!+QTYqb7I(-~C64!@X(-YP)XvcQrHJvVkYx-DJ z>$>bjeS6omoHgFi=`sV@-Xq)Ah1M~NuBo986k&TOaJv2uJKv^JPc<&MLqFV9?Y{Sz z<+-m<9%q2C4R-DfKUqXSgWX=q=aq6gN1qqaV4p(7ok%?d2SCkGoUg8o0RXpH&I4aI z{whcrd<`fdnko#UaBH^!K$ULDkd*S;+z2-}mxq=`Tn3F2Sq_X~;KuFIpZ(MPV1NEE z|2#BJ@XScf)%o(`k~sj8wy|Hxs*P&R>O&p#3=)EEg@o2kgN7J1r~-hAFcP56jvPP* znzQQjfA!Jy#x&dBKobZpssRchUb$8dWUUC0nP^k_rqpI3)w$Gj^(zS#Y5-+GB9|LL zXL9n5@r`g`4jOlp2!jepP+PEE@W*}=^p-94_$`YE;H0(VY4UHFWg0JebTrJD_ygogx9zSp9m7)S8vZ^Rh zW-P_@Neqa_881>bAx@?!U=W*`Vw?pZv<($o+EZ98toX!pv^Vz_&@yUU|=f8z-L)Jwo?2M#|)(9WgljLN4w#`OcI|s%XB4TD?|M1>tfAA;&teEYj zm%{CX8=HFvi}@Lb@ci-p(`S!vzW0;vowxUnw)PHJ^Yajz#nt(@U;cLQ<~x8CUy_VD zy7SKV?!n^noI_yd%hQ*i|MuS;+al;*er{h;Rffw+)-;TsCJnb(bxDuv0d>=*X-t<|TWR^NOb%E|``zIyrTmx9Jx2clNg8WO-z1p)9X0g$`6 zECd1!BJ*Vh1_MhJR6#&uR5mEbz5)0K9(?+A^DjSn_mAHhZ|{T4$yyDlp)y*F_aqJ+ z7@a^sX-Y27!Ox{BK?9~DbZD$G8D?Y@RWyX4(gfdt1`b}uD|?WjF=RM+5#L7hvTvg) z0a--7s>a$=lYEo|5P%zENfXRbkMe+%T8basgzs@dlbqIC{V$5e5LH-$5KZmg?UX#SGrzhu!&tD!reR8n3dvJJT=kWIS;ho9WVLsk8t{`jU zE|YdRP+N4{4&X3EtQURlpbrjQ`_8fkMe4Wv8q*_jAoaR4Etu#VNl3f5 zw_vi(wIHSyDG8+{&qmvhg|3WhoYJtSi1SU&v{>g_KzMhJc4Pz4K`!k-#Ba&C z&D}%iT&19@qtxnn0==SO{HA z`D)HAAp}5coJ9g*AsZ_RsrOY~&aKPHSfW^@)uKY&x+kijETQI50a^gGL>bc!Dp1c0s zSI+%?M;eK~KLhTU;MXf6yB)A=vbKGo4tUx+kV@z$X4!FM04P@7F~+KDmWyx@o(1o{ zuYFxs)v8*}SBv>_ak*T~SF1%`mBBY<-Be98U#u>#=Ht<5Hl2*e4Ej3=`^AKkujb9-a+ja#?gd;8uOUw`$@clTeOoRwA0!m8j!x#l{S z)VL~Np3jd?FOH6ncfNnPyMM5~e|zV~o3ou8#dOi!fnIZ6^^l z6<-~o&9!6b6>E2f_Cf=xlVZt?L(nyzfJ>U!P9Y!IBND)ZE<061L+!%A*4Bs#g0yjQ zUBD0k*pv()De42#9BR&~?F4|jYBEDHKP1>LLarZ}ZXxuz0Lg6b?C0aja&bi<0N|_D zgS(&IdH*LSE8^Q4m)*GY&fQP`Hu#!_@8A9G7yslxpKKpQx;56_dh7kKKK>gHHK?AS zym<7@=Rf+RJx;oYamB57e)!c#e_NN!SVnPvar)V>|LW+@do~+sqV}P$acwTObubOz zAOWFu?FHMBQq+O8?I}dNF~YSL@fttrhqBG2(msNQnp|Iwqg$c>aDIUZiUZD>eqQSZ z0t~~QUi0(;Pe?S7fML&_+h`2opd6$%{4^3gbGzY7yN4jf7+54{Y)00h$&7Vmv%#LP zc7J$)8}XnXKon9*5dgwiwK4!|MjkZZnQZTD-2CA1 z=3D!B-rJvyoLgSP=@Zjj!2A^bQoTn6F%D+Cx_LyCO+pj`34%l-s9?Z2auZW*V>VMP zT%MZ{BvjZ`sNMw++SKkmRA<~Q6l?1&fN*d&D>wv=ySyNp+<-+QUyC8qNN9{RmXMTv z8GHkX%#w{&7()|Oi7Wx4&8JyDHrW(Sj${!H5TH5)26QNy2m-X*=>bGI02+{(f?6aZ zHeZTJ4EvJ63fz=sRn9NYE?+*IlfAt0#@=)`Hjdac8sNYp+*FNkn$@ztyz4Rqp4aaux^ zdS)MZ^11nM*Svbc%W7GSj<p zEBS{X>ndx9XE4dnBwL4Eu4AU%iH@mv=Ldjth%{SeNLbhlGZ~Y{4bd1-0HbOxsJfhU z9t+PVzVS`n)T?r}SS{zP<<)X=6}@A1S$W?y%W|*f4%Jed}w=_t?NymM!FXZ!6p?tFds?q^?p_1(iqXBSs>(@4}C6v{^G zP%SEdIxmkemxt$92j}P8FP?5c{dQ~b=FZWZv)!BHjXhgTjms$(*63!a8?2!ec&)p# zyS8WOgYoPEP0NkD$zLnJkU&)@o`zq-ut$BbQskO;&^@WsseUN5IcV1KJ^`bj6tENa-Ai_Z)x*5rnb_m~LA*#rRO8w9WVU(s@_9^bp~Bzazq>d;**LhB z-k5d|Z;oeMi>nJlJv)B!?BO@>ZSSX4UbJ`P&gRbHYJRB_xT)`c@~iiL{D-EPv_nL+ zdvs^_@b=~DOVyyN?ESZ2eDtGVeEr7zKL>!`dEC+bV1T>O`2I}9l__AbCyJE*hoXye zump!oZ|H*T=%oLspwzLSwYA!%yKJ#}cgGq>>3cXl2H2?Wec$r1GlS@&&ajTd@2)+x z>pNbb<+dNm{S{+?BzX1>2hX8R_7fAdw+a?w+QA;tPe#U(%g{KCo4?wEUlzy!#f*q; zm~+B9o!cudv-UNUBxn~0=GoqOd}lF#fS3^!nVn_XEO=I}$%=1kKoMqTP*v6#zXZ%6 z&=zT+fHQYAJNy7n=E|%O?n`LwlZSA2B2`1@S6nwL%7{QpM3b$Vuz&IW^HuE|MP?0+ zcbW05Au8h)&$c$| zvZ`7nv|L;*=U20)5+wWcMf)U-@JY6(=WgL^6tGS&t69<4uzlL>3SSBa6LSI~asC>|OH9G$Wwvs8`pr z2_}k5((Ib7X&>3C^*vOIwAR~F`tL!ZizLFdb-5RX1MD-T8Jij#qAyH7v!TVQl_|K^ z=DJMmkkooi@!CkOJr58mA5CVPyK%=y++T5Z_VVe&ds_!L(-UyIxxI66PgJpSg3#(NZ1 z;pNrEC%^j38*hGK^T{>9bA9EtFS~Bc8oUp7({l|UU=MaWS7eWbyZ;k*=zn!!QV06S zD;c>`YXe5M*6-^_kLFVoeWQsSarmTRE7w#3fHh?bTiBdNP+NVnLq962A{<)i6H=n* zSSz7@JVo?F#u=B9$=axAo8h3WY0C5ytI}XsmM_f&V!xoe;qMiQw!cIMXWLtUfM6`; z)oLN^K#O9u;kX7PwJ8HP3L%8xgT(xOqQGqtv$z?WwlXY&sIc;WS*^}5>pBF*C`|)G2*RRZsKuA8ir`f>s0Z)}oCpLF$&f4T z#_r~=AHVg+pZxL0TemERje{awoYIT$!tpb(0h?NVNxrrm)HAX|5Ku)?PS{ znVo%^%!18=TFL;h3H2O&6Bx-B;zt@YK?eqo8`@d90%-sOqNqTu6e1!BWb@qE9BqbZ z45Est2H^nFjYx_JZB15JV4Fk{kx&?|8<8E89V0n3HU^uEDy7^((DE(?RUiY#YOvx( zq&C(GvoL^g@T=PQG_cef(ug|!HtB?$U9AyTXQ zfB^vr3bkkJjCB;ekR@Sl8Zp-7lU%i`n*c;$F^DiQP)u?Jg6KxhqQk++wTqC~#&G@bO8EDT) zuACWYpn*o~>XKdhsv|QqBHW#SM5d-48?cUM`5IP-+164D0m7x1VY>(bxWKjD2cIW~OK1>_n z)_u^x6@*Uv^`8!%Ep9*JkLtS~W_9RiV9L7>#G%S-uf8*E+J+2!1*h7|BdfB+5Pbz8 zh$tKp2%0%7O*kjDPe4cw9E@7ES>~jW(PR|EhOd2HR^_T(EtZSK3C&lFdAVAKx>~IK zvaC<1vr&;xM&r%RjmczVGMQv~VO?g)0HO+4t9kTwF`i_3v9q&18oj%>w|Di@rBA>7 z;+uz$ULKz=S5=HG016mc7tEEfrlo&%zPh+GI@%uZ&*qz_$LB8}jyHFA4zKJU-Q2!# zt=Qa8W%FQ6TBSbV1==o1*K9$X#py|&1`;LH(S}!guBA1H+I?0lH*45)AQ=6&w9=t% zf={}t@uP)tq4_%%dA~N>!&37hSJ7u{_qt}JQ!>>Mh_VDZL?|sx< zL2E8l|O3<%4pJ z93lXTpa?P(vj|{Q#HJ{$%7_Xk+Kme3%g^=eukrlMlpa7q&R)`7!sj`R?3V?`8N;(1HHrdt~v>EMOJb3@FestwW ze>T2x*<8AytEqhXE4_ab7PBlaaJJCN2y9LirCO>Ac;UbZ01PTg-w4)~SslB`ycfBc zFy#UY0xS$2!;KM{Q}g3s<0v%5mrG!OC}?m13CpVh7?8Bl3^7Q zW<)^)3}T&#aan<6t+0|Ij%r*+HcNedI;T%XM27%Yg&80<&umKAHAdwq42T-*I{5i& zdRi|Q97MK9WTGm@$g7oq`C|U+MIC~;!mwgl%527EU6aM_nm9xOSgz!JF3(T-WT|Rs ze=E!L;(Y1rm?%nA1QB3RgNOnK0aHImfGEnM#-R79a1BIslv|4+oO+OeLKD99Wvm06 zC@7E{av7NnM;jSbz>ycTS|WtVqMDD~WP6lP^5|>73T|@)CIAOVqw9AVP^AMv9oWa_ z-vIrC>AXy={`twFDNIwOk1XJFXZ zdVs7NU4pIgfp)e-i)-HW`?Nza1I(juJ(38tg<4K~+-m97v%*<1DtKcOLh!Y(tHcSF%f(_oUCw9A#jIK_ zy{~4Aa=s`}r_)hUY;JCDZES9CZ5G8S%W`8KA_|9UH4k-_7lpI#=%l*r@nolzJ=<3bUWOF3}VpvYk9^d=y`xmZhlXign z7q9Lf9))TiLsXR~_dh#7e!h44W;)wIv~zgr!j+q6C$B{~HAY)4rhoYLf4_X|J)4dC zqjC2LV2Hsdtj;FA0MT7yf2wZc@ZkPeBY+9h2_y>B=x!#4wTb)5=-e6QB| zm;rQMd%^J8F8)6JG<@@x+DHHBeLYIa0LV1TG92$DA1kj?Gp?#AWYmp=HrzdiWDhp@E+&dTzvID1&X{s!W? zv4!kifun8BNKRfj^{Om&P|s;DX=6ValodcN2R%7Q&vbC0qp=Wc^k|o=gvOG|#9Kgv zsh6=yZHI(I1?o{55Rg!!ifGfH$yf!VM(MZ7SPEc}r~&wfkjSbqfRZ6VMnXeK#%hy~ z#wtl*q-jvw(WaoOWiy9bVn7rmjkV{f9GFO!=ksbcTg?~7s0vi8nqzHq8-g6aE}uTD z7ArB9e5F1}5DJRX!}HTPU!frgEa!7MTk3QPL8!>h#>8Y9Wf@hqbYo|fFvY?!wdrp- zM__;|sxU+aP_PCKVNuvo=Bl!;%Al%fkgTZ!msMm|i|Cv>17+zwQ|hLu2z4EzkF27i z`N$Sys~l7XEih<)bXa`%2eiExqDPU$fVS7s*F3hkr|~n}13)AcpKl8^F5p+Ij2jbdf4}9y@YewmfLqBlb z*3@cuHw}5Lgl)=D!%q)#9TcE1>G08)9O^XgU85%jNImG)U^96aQyxl_@q+FD0f30q z8k?z;tQe1&H)2YcuBviXF6WEIY&oAU=F`<;UX@Gl>w31FFUyncY;$9>wYjyuy)_6LwVY@ikE_No%)%^VY<>OZmKixjOx_9Z;*5S2cYu{#LGPdm=gv~ar??Goj z2PPi+g$8JA%Gzy8|L=Ba2vP~xK3n^&ng-&u98G70HOX?X?XlbU-a0@J#Q@ME(Lg4; zP>;4^w;l}D7U-;*zTpejR|8s8-GBJdN+vNdo4bdjjm^dMOj%UakgjHDPwsubf9Yo1 ziVAlQE^h7|l#3}~6p8mf|Mqp$w(?BQ28-utLc>*-f>?KTFpuhT6M_50hMs@5k;7^PVw z9X`@PlQvRAjj32mr|vu}TtA$H2UeV>kd>u#{atnD_pt<460RqNFy zy*7AcxSue15e!7M5ynIqr}>f`MPfIZuX!0EP#^zFpr@I7(G7J^ZM)LTs0p;UJ{AzI zJHD;x4W+Ob%x(qLkQo6uks$01f+fnVVWt?#h>4M z@D+OxAtI_qfn>s1C2E7VtC~tSK(NapdL}Z?iUN`~Hp9fn7*bUtY%4=k-Z7v_GuSB& zsYuB>%7P>SAe^A0ibzs+0@#Fe6v;Y?k(mKNSjZSnwcH#LNg9)*&Dd&@1iwH^b(Lr(JdgUun zMB|7I8frLEY}-H(LYs!txa@=t#nX83*q`nu3V|tiLI>xjvokHsNUmgSAezwpz`yU5 zLuaPmvJCjfgPq32j$>K-c~i$}8;$CpT(eU{RjF@$g8UJa)x)0T&~`u2Qt%?8x~BS) zIulk766#o&!kiU025*#9M8zQ)GA8A*LD!ES5s{P-wMD3ils=h^0jsJid9GvOxDi9} z-dC%tTrL;$vJQ29dOn@a&(6=bHn(<=VvcpKmB@h|MLFj+q)NUPIfN1e1bM>%0u2jsvS0MD-B!sMTakF?M~~(HzL%H zmFT+jH7`%qxQ#h!LXgdO_r%07y}6xWflX!s4((zqG|gM>koxH^;7z~3`{^S-(9#~Q zf$dp~fdF=o=)g-@J7j=l##=j^+xurPpG6f=0R#Yk@cGBz`SIVlVv?>jA8lT|dgJ89 zBak2}FP}a-e)j0f-S0|b;*7g?=iRS9{^>G$jjR$MeEIPQfASZT-3zJt7a4o$=H2c6 z3!yGKs)C5>YBBxfm;d$hjk~VcXuP1oK|*+=9pbu)h3+-o-a@wn>B-J04_&4t`AURJ zNCs6lq-ee}blad%v31?_lUKPV`4MxfPK&KVs?jur5BenZACn^JrGqCSt;s<9gX)d*cpawj2DmW;a;{}xo=AGi*UZu z#S)SD#p}vTs1o}F#u`^x67>*5WB|1Wi`oBlnPjU{7LT6Td_K)eY!suGe@NX6ex0XTpFiUIoKxRcm4xofSXix|dQ&pF;QqV;uP0}T_P(ic~qe^<^$}^Nr{;3ivLKE3kKvXiMmOQ9O0M<}OvPc;TfM)@~ z+>xqQtJ)g$-Xof@Smi##?2H9Wv0?L($#Rnl1yY6_b?I^Gj8NlZDJc$EBE*i+&?am) z#4`=|(H`GU2kO94)1gHfDhcRZv(5wTG(-zrdY##7k2f8+ua<_m)qp zZ+$}g1>2i!Rt2g1_nMy5Zfr+V7|Vv&rtEz0_N z%*|daZ|&B;Dw}la`E)UFYR9T_c|Kpwm#g#HYi`tpX)(z-39$Jmmwo+_5 zK{w(w2-P;P>gLM~iJ{JchV{>G`( zpS|~^g9fW2ZS7sSc>T`#>*pdYEQp{SAAR-7qpv@?``tgs?k3wHS62`Ut(UOwkF>Yf z{oc6kJ@D<$eezw}g+U}l!Ng#-7t4e;ulvfiKnq zqqVPXeWZc-HZZ&c?*LsUKCXW(M_LZ@9l+-N_r=PIJ+XLd3O=8eHK(m<{2C%pTI7>Z$NN#wADMfE+*~NK|P?*C*IU%Bn$) z*TNXPxor+ueFQYbfD-*;iGXTIh@c($DgsErQJNg?2-+r6Q)(o_4X-4vcY_3@jr`re z`qLl$U;blp`vy;+5QaECHS^bQGzO|QMwwio_y4(`zTmHaVHZ!bdIqr;4y3A400CGu z3b2Z(28BcdF(?2FhzR-G=!`%@CV?0bth0b7H6{fl6(DO6iHuVPZ!e5l|X~6B!{!UoEC* zXUAvCoEMp~4uOLA<;u_Jaj|3|Dv08OLoLQpJ_1#q&iQ1@WdP5pf3_|dI6>w{vhB~N6 zM7_3LJE-dpY^c<(dI?#uOIr~1I35kYX*0Oh>+wJk*LXI7?`$}gVd(Wb7KvY z_D&B<6b|g`P%R~Rmt|GCicvWD)Vaen9JZBqL=SZvVF;15#inUTwAF*@zeEH|M5@+W z$+BX^3lX_%+8mK`Le9a>h*Ls+uGdR+uhmR+$u&R=Q050 z=v9S`&9m&_U~hACVw!)BfYil}Nhpdr6u$^$~;FH>G=!c)Z;YxQG z`GycC`JUb~4-KvddnHEO1mH&BLJ9bt)*?zSEG(>t{^r1zoq-r9uy4tKYDm z(ZpRk3|YpnrZEOJgd&E}0ElX}3T0FugaHIJFmM$CffaxNMUl{0oa{{A`^iV&|G)kp z^V>ILdG40SW(*KrrQ4E?#~XXfXtplc!z;Etcd*2;1gViCLN}ZMvjLC8`xspL3WdKbKzbXg-tFj6rDiDF7 zDuYJh8iZ47mnuO!-&K``1IGZMq5%{@Qi@Mx(IzimV#*r>1YuSVtNHBN}YBG6FQLDU)~g8|e8abug2E0-aP)|@K6lvy&Ro!tU>5sshOy~DDk zdTAA{$#R=bTrqL^*ydxKjck@1n;Vy#W^kTun@6NcdDQhuZ$o1(IW$BX-T0=~ee3mG z>(Mk=q8S&%!=v6G{dFE_{rJ7D=z7h$eooiV^T4rt1M9TE4Zd&?D{1o%XuumoXM0;q z*^IVGKOGa$*zHsTnsT4(rLUHT2mw~}si+$35)3sqGuDxD#x_BGAw$L@5vgsmKh-qx zN=Y^WwaFgF#xYHH!Vnlk)>)Tj#i$r>OtyBm>Z-0*<#MrHOc%5B+4OuqpH}6ne0`E& z(Ei@;=H}LTJaH~lVP+A-hD?!XM~8=7o12#}Uc7bf+LzzlfAIL*nF#{E4!2H7q<4dM-Kh!RlR;&E{_yK>KK<2qfBbh%%nSp%# z>Gz#H_IHQvhBd#gvD)qB4)?3O=k;$MczJ8zHMmfPmK`HwGa5(Zg?;qC!A?Yo29l0W zv)oPMjSV%`UQL(hc1f{?Im0B*Zd>$i0NX77;0UO8_{~|nGaikdIV|#3SCSPPDu{wnP}_7R0n{|ULQ@DV^?i;(l~4dhRjNp_DtvZMG7BDa zG!F9|iO@PC!o(%m%)4BzW@t0A4#+546$n0%QH%rxWUa=eq(sFXH*RpUtZ2S-F^3)uNU%#u-GaDcyaP7oE=ZDo@a-bso1Q7_vKvSl&rJa z$Ymp!k6kgb`Pk)Sn~!W(7@M2aT-&w#6xuJAxho z!KBzUKpV9jc)+l(tA;1>ZQmrNAa)re%>jPzN3F6M)5V*D_<_e*DlMdYPnoYQNdVeT!VqE%gAKLy7Ui`A?wH( zNe*5DqsE}L^`iq^Jfpgyz~7A!H~_a-~HhJ=O0In>Z5S@{C7XU^Zh?_<4sUd#Espzqxm5fY_4U z_p369+Nkz$p`~_}b*ljim^^%i78*A5K8>IdDxpf-Mme24e1n5YfG8bX>_2sF zzXn1zpne;IWDu}iLq@}$eA_MSA8ml~up!ag*nOy7`iBqzkSNPX0Ahj>$;i|()T(LN zIuRK}(|{hL)?3BKVM?R98tT3we_*&dhkypDaG5h^W0W6lZ{0oI zKVB}LEoP6W=Z~i6PiE5>i!fb?Lr+0c~YRU{@IJ_)tLmz zcQzeBlo_vl^vt3rqj6?xmEe_GS`rjc)c{gqF8}F=KmI@eyYW^Qec;#kc`+-n4(AKr z-Z7Wo!wc8q?|)uC`6>&?`Sh4)-;hDbM(*O(cw+SA1p)(TB7vaoT7*POs+yn?V2*&u zH7g(pz=|pO%?(!)F1(a=s67yZb!ZS$3YN`cR$u`edA?yrTZjfAYN$aY2Sy{t6)K6q zA`uZ`k*MqmRl#WbDoGT2k(&;32=MET)JRyUdygtwuie^6lw@SeLHkTgvGReb~0~DC<>~m zXauZ+Wz3aw!9uA}7%Szhc~Dn-T9q=L)+ev$ubxj&UQExA7uCGtDqtFvp)Ew0Cg(Mg zT@e5jkgyC)b;z7Cc^dNus(=b!)iaYI1F%ABzK|h|CobQx)3YolE3GSEt`Y-bv%+ShEFarqoD~zBk8D0NE^$H`xvVQJAk%l07$BkUlo4Q)nVKGH zp+VAJU{a8}^`?h>%$iwRS5RvjLp$Bj9Na+;!rDs*N4j(LdebvdV4a0*69usyYTRL} z)~IzOptR4Q9e916#%KzQ68*!9njwZHeM>V`YNAMhfT-NfnChKS#Ae_eQW`y0KB|R`dDve0p{= zo1QKgv-8<9M4C)SMR9p=clXNWOJCi)_xV@%p1ydw zSgx2w0gb~H1Y{N!Sp})i{qfvCcsajzFnQ<7?$O?OlxgM5^Jm|jy?FBM>)&r5T;9KQ zbNAxS&HXF+WXEJ9Y+5M}&3&t|v4bGkIs4sHZ*1>y0lJim_HpfZ8Tzm9r!|kc2+@WXSJ8z{<8WRtsPc-%Yvt`Yd@rEql84Gjh*ei3uL}b zIg&9lkrDP^{_f{D-~R|*k=WX!YqvMH_olB)L?p!*Pwu~X^v(76e;|OMNG7}S&UYSs z`s)}2h)30@55Icx=<93m|4d|MGqX8eP;xs*sFvgc?I7 zstF7k>*}g(t5;f=G!=PKk|Ao?YQQe|*9YO=P!Vev(g0H(9xiRWdh~}NDL4cKBtuAu z#+WS6CX>tYQ!dJ{nYKFe4O3rG$wU5zx`zd)NQ$KmLdD)lEEouH_QS z5Gx;y04Q!8n5~02Kc*L-;Il77T;vX<7R;P(?of6>v(ZQz4HWff(rQnrA ztV`ppa3D89<5*G=yF_10tc-$DQZR_A_ft&yJt>MU906FkmRQHS2H;o+Rpt;v~RW0*ref)Cv?BS~y z4_=*odt9Bbq~df$(tKnQjR?pJqQ+1eW6hFVBccq5l3G0@L^(cPIYV_|QME{-8bm$w zY_^E#F$0q$mrG`k#9Nk%$%VT1%n?OFC9PDf%TO+i%UxcWY?Rm_mye7qY+e|flWSr$ z4JSl~sG)_RDc&X|L8Ro6)6nrq$H)+oS<~Ur(!2vzFaQ*PB){j4vpS%02i(tq&+b2v zT1_-CuWKQ$L|qM@S8c{zCVHcTXzlg(N~Bk8Nh^w~DuPIi8a?|e)=OW`mDy&luFBc@ zS*UA36b?+rSWCu7?~HTSX3@F^47ErIjWaf72-&8=2b#6)bs~V2Jl4j=5I{ARBP2}) zpau%5hZy z+Yl8}PouQI1e z&VwwB_Rc!t9s>6Puh7a{TLpkRI1iYQCVLky=c7?wl>kbHQm)?9hhLt){PytL-E=x8 zTf3KT+?}7kFxG1D(U)I-{Ie@}-bYs?ALa1M&D{%EUVVE{l|?wzt1mwO>80Brn0yQX zsOIqU_1&Xur{69)_!t>b0VGEM#c%)N)(0OQT)EqV!=5bA;Z3I-98_$!KF|PwV*lph z&8HWqZAC&<0##9iMpG_3MHNk12Hiq-34Sd;9f(JNIgJ8A&?aIzba-I!)2gr`WP>Kk z)4qYhOvW4au3s$7`D`(tSFnf& zg+WuP;b;Jh3GE%)@z&&>8)f;sa6htVRq?ZBM2d>Rb6^bsv5vr;s*5sWZK|by^GkXDnS1r6gdkCoS$XE!tw!U$$z)?y`^aj9#-p(t zO%T8@&wUjq!bp@j3seS3L)uG;QDKo!_Q*|;EE1&*9*GgLYV@5j$CzC2l=Te25^CW( z))lj7??ENhk)y=GzKWp|6^KDtAh1S;z{mhTQef~=15+J9k@mLCySMZA?q-)Sxs3@} zVvvZ+%4trSri6Jipo)pZBu6QQ2oT!NE~=cSwnU>SfT}S{ty%&(&>XZtoB(bBZGoA9 z8D~_CH}bv1t!wXG`TkG7Q!f4KtMg~~pFaEQ>G6}}`KwtqFGC%bAto`SW{9F^UB-|& zPi*BnipE+9I8pQfYDh~F3CaO%uEru+B~rvF<+MJ1R*d(ou`$HfhKNYikh)Gp4mFu& z$a1oo%L<#1TroD;$Yu>EL^gF@cd5x%%2R=agw!ZX!VyA*UAlBi4>J}3gc-YLEuigz z>YVZ}MLM=RDF>o_>m!628BapE#Ej;tl) zv>or$u|cGSNGWF+ky>}HEl6q3n*= zELXLEJzp$$wznsfjV#ZNF`&RPAfYjKcV}m7Yx~OOD|heQ`Rt1?@7;fJe0o||b*k1i zX+W>q7&ydOhxl^NC(G&A&*#?;#^1TQf9ulr(Z;CuezB?+uOFYk{PxM0pKKpoIJkV{ z@Y*{&M>mVDLz9i0*&4lZ>aj^nFtp}G+eg=Trv0x1fXYD3T8!99*Kntk{pstz)_&AB z;ZGQ#pT>YSh6kET`u1wu_}nnU)dI9$Ts7H~4rRAMym8C5kLIM;8<%e%TpDj~&(6<4 zQp%SJ@aio9s|aM=jdwo0|H&_bgFvvTkM8~9FKLK{Nlg-<-ff` zuIQI1-Klm*t@TKHAPfEa4EC!Do%QruyAuGZvILP70Lf4bJ;|t~C{b7$(_3@vg`j$gmvgY|#&F1xF0_Myd2&?g#zwy3RN1qBd*fU*EN z!T22GQ;5$*F(oQvd)x?#6iCsKBeVtyR3fIrX3?~Cp%xCT zkr5=bB*4r8pjKTWEKwH#D}*h;ZN*JU)U$J0k&U-D_b*?(^SyWLRlPc&oj!m4__GI} z{``w)-@FbrH^3lD(?ChUkdgwa8idGduu%>ckw^myT8Kt$hMEE8;0izs)&UqG5DhDc zHJPFj{Fbo*N)z@{(h3Vlq$>K-R7+bHHXqq6{Zp8%=%Qn2oNAJqD1ec zI@2_1N1=^jwJn1?Tap<<|LF``~@7R&xIB{Qj%O zjs5X=Z|~o|vU7B>9eh|Us@Zb-`pNmLXOAXd{(kS`wWAyF9$tNCvUkbl8)WlV_x1Lo z3w^dNe=rr0wuVJjTBFlpq(q!UpXwoP>VET{BuI!|Dn+}aO|;XS=nh zUEatWA-eARJHhV$5_v;<8@LXQWoygelVlq=**VxbIC}l;3G@=Fmhj%Ezy9c-{j1T| zVWLisuHM`}xG;THgT@eiy_|jZyPxl0x&bx=MId|q?uTD|{IlixO8^$tx}1Ie$M(n&cU1s^1SK7^Hl{-+wdqnCCR(LFfzUvWmhjcV>JJ>H{=eGBO4raqr-!teLNa{Q zKLH{78+(&hfj;W_<|}*7xlwuuh>%8{f`BMlOJb3jSwxtO$%;`3vEzyW5JB(0(t7o- z0=8~LgU7K`cI%fky!gT0beSHFQpGoJsMWO!%BU6bIfbX>AEJMV;RW&;$PA$bs=-FZ zm>CfVC}@;P7O-3BS)l?LN?gwQ)k5bp+TDO@4K-U!iX>G;0^>+jAvBk%jhKL1+`f7E z!N2|6op-OBy$wRK8(aDHyR>ttlsD5oVK(zv{Q5iw7@n{hgDb3Uf0<0QA zQp3Yk8DJ2}fFj2j1Ne~Y;vuY}&4?VLB?%H4Q~_!Uua=7p<{H6)vtni|LSqb7OYgme zPzHYn$dR$&cZSs(-(A0g;}IK*0E{Y) zJ81xb6jJ^NAc6`2qN1U!0AqnYut#N-0HDf(h-fT2M}?K3epN^BMK~2Bs)}d?4xlw? ziLyc{RcpYYR!|6yBQqkCWA2IxZXaH_c<0tTfBKyd|LVK{&;Q5&@`t~_FJ9Wz0#E=X z(3B#LsH&ztlSF_{(SaEu6-pzdO`;qviOV6?N0Kv?Su)tb1^gptG{K)n*Q)}kG{ZZ6 z%xdc@n-|6vHigEr!njN&C+my|sRbh`A3&Q96v^%yYYdS|y-XA3qFrQv7zFDEVl*fw z`D*J|IZz=z;nE!L9@bz>k|kFj29^riG@iCL5Bl&{XV>2NK4?A4^r2laWvDhfS5Fm` zd-SuK`_&vlT%N@cj$gg8HKu`KO0&MCV z0TGSqDJ5+voW}SnSQyxoKEyS+lxDPfTg0zAko5Ly`_S8($Tf1?p#*I2r9(fRWFlfd z-rPI7Ox8;9s%kTv2%Hl#r$oje0q8fM|Mr7F{p;-u z*V1)w9bCF}{q8r@6MzUBLFCbwzyI(@e|>oU9TotmD^>+ew8HA#467@2P2M(UZ{9i1MQ^oyAmR9IAuF)8;1sU0|DfQAE! zMcPx`oX-vh4KJ?sKbj@(F;ohbb{&JXOET~d#;M8UMsxD%dk=~|WdW+H*=K#GPBcdNa2okM6i z^!b!jKx>Mp#y_I!OXD8^ze1j=lmIn=SBQwL#E5E8K@i1*u5f1?_EgVm|N4cl7CKu9 zo5}lkt6KfzV`UIvo1-Gu^8iHF5u`D&3IZSmn^$(f_rLv@haY`dsaRN*pZ{|8;?;O# zQZJsH`lWgK(C~t!w!~2bDT9b|igTeT0$FfYStWXiDiM^MD32-{YbBzH0+5nOGYtm4W*JG zYL^iy>cLpBg(=2GF=8L<`9d|SFd`U2RZ)$|5i|gJ6tC(L(s&R@Ix+-kZ5mpqAU1Q? zKDhl?|MQnA}9#7NyVUmAPDGy9MTB#35_;18-tsm9ozB#Xk&k3Bfztn z@xfUlLtq@`8Mp$-Y0$PCPgCKN06{|%hyp1HvnrVeBBbnAmS|%XVauuSHmisc0hhQF zM+QU<5SSJ|8ZyQ?6%}RGwjeAG3T}xXZ1G2XjEC5!VJ+Gt*&4IIf@AqgK?Q~r08sxDLJ*ySW#snOGcO^H4su&OjHmc z5;l40Z66#Y>`aoj3x=5L=dH`~tQe0sx3~8W%GGkUn5`BwUoPflT?ZcJS(atS7y#f9 zV~8d?o8?Cr4i676y!+mJAOG%mzy0{*Z@+z7R;w6d<)bq)8s*#BWE^?1tSTR3- zud3(g&;Rh?^!;nw?_b+F+TYmQnJkv|$=Txc{OsF%C(j<;8*lCIUbu94_11-JcXuz` z7;haI*XBw?8=vS9LQ|%x(q$w!Sf^QHO$9VKh*@YOLp_PpR+#{(%KA>J0-)_#ncjZj zng9(9Z4xep-u%DC4|Moxh^GcbLCX=~@Ra}n=>^DEWa7EDqpmoKKcfbGmt4~0gqo~Sies=GZ zpY311PPR}1mlrqQ{m#pWpO43;s>@#xEs-}&gT-ZZP-%C#m~2O__I zhy8!CZFID@FsMW%!XiT0{4X6nX|b&!3L`*-R(B7=OKZ@vd8k7)Z(Viwf{w}qSc6I3 zMeEvMZ+;XE#o~|stgl21=aZ}?M%P#cHCb+hR}G2+&6Fv&HfQPZ^xJ@DpcA{_-n@!8 zC0O75u17yIvBAwHqg<7z$w zzch@L)pGW*&>56d<;tLFh)u96DhLRJ0D{eEvH`~Nq7;n{-)}%8pg{lvG?H?R44ScV z2PeGfmQ~2m-N04Tu3q z03`KHf{wbBsMSJ!rFLYB&BASqufl32ky(UHqSm7-C^znm1|TAo3}uYKgwS;F1X5Hn z*}>)g!#kVP`GSyAj*YcsEEtDm)MjX$W(Bw$T&~usbx0P+JCmJ@`iCRbCPINj001_a@K_{_+&S?GN{wG=VCX$A|>FG4rz{`VP zb#(-E+R)y=ZY^BzPPOX1U8SBoPS2%jUkUwGi%`zPYA(^cEF;3@e0Kc$r3h2=u|N&= zj;$%}G;I@!6G+iCCSz4uj1!5%QCu`O17$L7lvSC;sSyQ>DxiWYs0NgPQaG~N-=@jv zV33tIoz=Q;M@+WGSmQF675R8$V|y?4l`a?4YB^u|5V_9t%vwuCBFf$e?``f~KE8hS z+T|twa={0bLZTo_HnhU>kyfF9<)61&!?~d@aXLQ zt6Lx3*t>kVb!U5YxvWplmd9ty>Fa0H*Ds%b^X1mg-od4-7jM3Mc=esl{VUmc+t|D- zMQp${_GV-a4MVGksecNA8jgaR7eI$$hF(1=KpU?FKv4VU)7mX2KpTD0PR@GIe@Jk& zhGY;Y8qk|-N28NG9CoY$003jNt=*%o-Gg#5BS1{kh7c^#%g0~8diwC-hs zB7GH`q#YDtK`>-eQ?gE1X}fv?pd8cpx8I(6jvx-(Zno54>&i51++Ech2}IiMR1fC5 zNjWXTX|_h2Q8>~!mTLF1{f71X9c(medl@MSgN$VnG|uKDUx@-(XB0qK$*8eLS{@r( z$sevEc30iuo5tx;><2v#mRpB&OxiaNsPV=N1Vt5;Ks+6D`Yg8)d7hzJOhlH7?DQ9z+E@BZx%um0(K zqN{LvZ009^72N*C@ul0&Nd4t+;e3I0i5i3%RDlIpltBelQOQy^0&sB|c^Q-e$e<%4 ziY1dZ9Mo6BLD2#$P;M-$I*_z*23UaG&Qrn=g9d@RhL@$z4er;lA7DG^ByjG)8lb3E zwaQnuGvFL%8M%x=!4+*oc`{l>GTs#hD8%5)#VUrnE<=pUQK94%qY7RFgAY(MQ~@f+ zGUAePR^hycRluMSSp|S4ktR6K;7{+4{-?j#{{C&dRaBXYL=iy{n(VM-B~#Y3#uV|A zCJDNe8&KdN9I+ibqRsIFO+$(ifRr%CdM4F^)j~?yal~~KDFYHjMh(IhiqmM-N@pl%l$;pzKqo}l=Dz7ICyI;5&612e)XbUEI_2c zi)4j0A@4SO1UgvW2tzvwn#Dws$cYWIQDU@NRLO|hI#zKiOx6Jjl8{kVLRBPE?dQw` zp$fKJfvRnnron2Y?wLWV z&YjygZru2jAO6WNe)01^{NeYnU%#%sFDvh3v}9anw>HNia#{KiV~o5Ax;l%m=civh znccm#@!r*)D@U7`FYO#1Zp|0v$=ULJx|+Y7&ySzIeDK-U{>8&9w+^qpvv>LSWar2g z8%Vax?CLO3zkL9dI>xkges2L&qe6+ zcRrZDd`OrR2~nJ#y!iI(Pv85qf1aF{(Z=?rTkoE|dW_0x_SEA11kN4TZ+8ZZ$9 zFurb?lSC#iS|IhjNzMc!2)7s(0TK-AbD}%k*=;Jqpn^-=N~T87Gy(1|913e6gB=k# zAo|)DwV|Tkk$Gzky2n~M9rVj@uBOpB1O^B}#R8!tP?g{-K&3V}Elo~N0y>bd0puCV zoOVtQv?Gevk!BA)JAZJ{NV40A#vxDyCh!CvA!6eqbZG)fxumIB>7$g=4zR=+&BhL0 zIf~zYB`42DNMX5L{o#x7VyRISNEM7tQ=kA0DqvI%3ZC%r=E0r6`BPIsE}>kBW~1@O zrTqFkl5g6;b6Ig=H_Cd}r3UTGAvWJiwj^c^UQp^BlBP%`C2 z85jd1N*3KXO>9u_)qADPpjD2_f{`IaIIr=A;z+f&>um0lj=0z%KX&@3rLZKA#F^B-l4Y*A%WYSA%mfM>e4y5&K z1};r{6(u_+h7?pWaAZUzJJ}?MVYO0WOfo|Pz@ULJfOi)5Mt`i6OKz>paxx|*?jbbg zN{~4AHe0bpFmEB0RP3D6T04c(L8SgLzG-cSDo5KKjP6yP-!)LhjaKN{q)s`vSP#34 z>{XQxC^H2SkW}$r#&QwLxi9A&ytUR^>+AaX)r;xbNkcjgUED4gYv{1GluTzLR9RRP zZAOLxM7SNeBW#2d8>H5OiW*DC0w^khii$~%LYlE|nx+wBr>qjL>jq?X@s{onG6cpN zn>knH!q zfB59&r0k8@_{ee^NL$nzkp^Z0Up{@Ih+jf2sh%Ud@tZSHOrJ6of= z4)aBIK3%R>=Vy=3XHV~c``NFy4leCqxpR2^-JJ{9N81M`8v|Kr_@G|(V{0B7WP=_4 z8*24NVh};4HHFZjpXQPDCfhLrL-3uxq_aCcXR{`5&AYTK>1xf;z)H7SKOJuG+-PmY zvO(UWWQ=vi(Y4!Oe*8;i530rxh@ycav-dy!_5biM{_RE@e1Ycjt#|MJ_U~gkV+z(N zbNuReKfnFG|G|zn0FaEkdi%YvKmKXt0BRH%I6nCF*LObr;r_Mv0FaEibo1_`&wr(H zc5rZ5SLJ*@Pg&a%>MuY3#~bhdVEf?OnpGV{1bb-OQ7OIOF)-21VqzzR9ifzTI|~al zQG-Sd8tHbX**AnHbpZy@wdG%Quro<6nsr9#NaJ?%p>c->+1V`}G*momK&L^?YlKlx zgmhY|k*anDIz2VOMF<20WK;za!R4X=96SIRV^q^&w~2U8$qJeVF%2cVY1q&@TF^D5 z8hqzE5Nh?N0<^TY&>impmFR?sB zV1<-1)O;zZ0unfbqY=3*oGikuip!`7nKfXLBWnE90v{C^5pfk^&M=Mmx`Lf0>=wG6!#IQ7fV1F8M+Ih;6dp2%M2Y}t zkb^3K$%H7Vq5zc3P*ze^;2EkKJ!9puim(b$GOi+)szH@eH#XeA|JOhI?gzJ4%kucu z@$2K`)8q41UBwu-#`w{l?LYs)(S<#i(~6=HM^r)6=M;(v04X_TmXz0=<|IRt>H)oq z({-~u@c2NLn}?D?F%HQQE0QC^3^<0e1kq-Gqaj6$CdX`(vK`8{$&HarN)-~WIIeU62!TS33XlrZ0kP{8njEY)Akzl6OjB!3soKkC#%0D8#${xi*;Re-bwFsQ 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≻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

i_yY5)iX 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 Hu0mjfI9v+n literal 0 HcmV?d00001 diff --git a/tests/resources/reference_qwen_txt2img.png b/tests/resources/reference_qwen_txt2img.png new file mode 100644 index 0000000000000000000000000000000000000000..0742deaaa359e01b283693d381c021c413dafc2e GIT binary patch literal 290364 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�z`c# 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/weights/test_lora_library.py b/tests/weights/test_lora_library.py index 716d4d0..e43d7a0 100644 --- a/tests/weights/test_lora_library.py +++ b/tests/weights/test_lora_library.py @@ -5,7 +5,7 @@ from unittest import mock import pytest -from mflux.weights import lora_library +from mflux.utils import lora_library @pytest.fixture(autouse=True) diff --git a/uv.lock b/uv.lock index ee99516..90f2d61 100644 --- a/uv.lock +++ b/uv.lock @@ -1,37 +1,80 @@ version = 1 -revision = 2 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", +] + +[[package]] +name = "accelerate" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "safetensors" }, + { name = "torch", version = "2.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/66/be171836d86dc5b8698b3a9bf4b9eb10cb53369729939f88bf650167588b/accelerate-1.10.0.tar.gz", hash = "sha256:8270568fda9036b5cccdc09703fef47872abccd56eb5f6d53b54ea5fb7581496", size = 392261 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/dd/0107f0aa179869ee9f47ef5a2686abd5e022fdc82af901d535e52fe91ce1/accelerate-1.10.0-py3-none-any.whl", hash = "sha256:260a72b560e100e839b517a331ec85ed495b3889d12886e79d1913071993c5a3", size = 374718 }, ] [[package]] name = "backports-tarfile" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406, upload-time = "2024-05-28T17:01:54.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181, upload-time = "2024-05-28T17:01:53.112Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181 }, ] [[package]] name = "certifi" version = "2025.7.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" }, + { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722 }, ] [[package]] @@ -39,110 +82,110 @@ name = "cffi" version = "1.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser", marker = "sys_platform != 'darwin'" }, + { name = "pycparser", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or (platform_system != 'Linux' and sys_platform != 'darwin') or (platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/28/9901804da60055b406e1a1c5ba7aac1276fb77f1dde635aabfc7fd84b8ab/charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941", size = 201818, upload-time = "2025-05-02T08:31:46.725Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9b/892a8c8af9110935e5adcbb06d9c6fe741b6bb02608c6513983048ba1a18/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd", size = 144649, upload-time = "2025-05-02T08:31:48.889Z" }, - { url = "https://files.pythonhosted.org/packages/7b/a5/4179abd063ff6414223575e008593861d62abfc22455b5d1a44995b7c101/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6", size = 155045, upload-time = "2025-05-02T08:31:50.757Z" }, - { url = "https://files.pythonhosted.org/packages/3b/95/bc08c7dfeddd26b4be8c8287b9bb055716f31077c8b0ea1cd09553794665/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d", size = 147356, upload-time = "2025-05-02T08:31:52.634Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/7a5b635aa65284bf3eab7653e8b4151ab420ecbae918d3e359d1947b4d61/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86", size = 149471, upload-time = "2025-05-02T08:31:56.207Z" }, - { url = "https://files.pythonhosted.org/packages/ae/38/51fc6ac74251fd331a8cfdb7ec57beba8c23fd5493f1050f71c87ef77ed0/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c", size = 151317, upload-time = "2025-05-02T08:31:57.613Z" }, - { url = "https://files.pythonhosted.org/packages/b7/17/edee1e32215ee6e9e46c3e482645b46575a44a2d72c7dfd49e49f60ce6bf/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0", size = 146368, upload-time = "2025-05-02T08:31:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/26/2c/ea3e66f2b5f21fd00b2825c94cafb8c326ea6240cd80a91eb09e4a285830/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef", size = 154491, upload-time = "2025-05-02T08:32:01.219Z" }, - { url = "https://files.pythonhosted.org/packages/52/47/7be7fa972422ad062e909fd62460d45c3ef4c141805b7078dbab15904ff7/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6", size = 157695, upload-time = "2025-05-02T08:32:03.045Z" }, - { url = "https://files.pythonhosted.org/packages/2f/42/9f02c194da282b2b340f28e5fb60762de1151387a36842a92b533685c61e/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366", size = 154849, upload-time = "2025-05-02T08:32:04.651Z" }, - { url = "https://files.pythonhosted.org/packages/67/44/89cacd6628f31fb0b63201a618049be4be2a7435a31b55b5eb1c3674547a/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db", size = 150091, upload-time = "2025-05-02T08:32:06.719Z" }, - { url = "https://files.pythonhosted.org/packages/1f/79/4b8da9f712bc079c0f16b6d67b099b0b8d808c2292c937f267d816ec5ecc/charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a", size = 98445, upload-time = "2025-05-02T08:32:08.66Z" }, - { url = "https://files.pythonhosted.org/packages/7d/d7/96970afb4fb66497a40761cdf7bd4f6fca0fc7bafde3a84f836c1f57a926/charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509", size = 105782, upload-time = "2025-05-02T08:32:10.46Z" }, - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/95/28/9901804da60055b406e1a1c5ba7aac1276fb77f1dde635aabfc7fd84b8ab/charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941", size = 201818 }, + { url = "https://files.pythonhosted.org/packages/d9/9b/892a8c8af9110935e5adcbb06d9c6fe741b6bb02608c6513983048ba1a18/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd", size = 144649 }, + { url = "https://files.pythonhosted.org/packages/7b/a5/4179abd063ff6414223575e008593861d62abfc22455b5d1a44995b7c101/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6", size = 155045 }, + { url = "https://files.pythonhosted.org/packages/3b/95/bc08c7dfeddd26b4be8c8287b9bb055716f31077c8b0ea1cd09553794665/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d", size = 147356 }, + { url = "https://files.pythonhosted.org/packages/a8/2d/7a5b635aa65284bf3eab7653e8b4151ab420ecbae918d3e359d1947b4d61/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86", size = 149471 }, + { url = "https://files.pythonhosted.org/packages/ae/38/51fc6ac74251fd331a8cfdb7ec57beba8c23fd5493f1050f71c87ef77ed0/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c", size = 151317 }, + { url = "https://files.pythonhosted.org/packages/b7/17/edee1e32215ee6e9e46c3e482645b46575a44a2d72c7dfd49e49f60ce6bf/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0", size = 146368 }, + { url = "https://files.pythonhosted.org/packages/26/2c/ea3e66f2b5f21fd00b2825c94cafb8c326ea6240cd80a91eb09e4a285830/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef", size = 154491 }, + { url = "https://files.pythonhosted.org/packages/52/47/7be7fa972422ad062e909fd62460d45c3ef4c141805b7078dbab15904ff7/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6", size = 157695 }, + { url = "https://files.pythonhosted.org/packages/2f/42/9f02c194da282b2b340f28e5fb60762de1151387a36842a92b533685c61e/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366", size = 154849 }, + { url = "https://files.pythonhosted.org/packages/67/44/89cacd6628f31fb0b63201a618049be4be2a7435a31b55b5eb1c3674547a/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db", size = 150091 }, + { url = "https://files.pythonhosted.org/packages/1f/79/4b8da9f712bc079c0f16b6d67b099b0b8d808c2292c937f267d816ec5ecc/charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a", size = 98445 }, + { url = "https://files.pythonhosted.org/packages/7d/d7/96970afb4fb66497a40761cdf7bd4f6fca0fc7bafde3a84f836c1f57a926/charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509", size = 105782 }, + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -150,67 +193,67 @@ name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, - { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, - { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, - { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, - { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, - { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, - { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, - { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, - { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, - { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, - { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, - { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, - { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, - { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, - { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, - { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, - { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, - { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, - { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, - { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, - { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, - { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, - { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, - { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, - { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, - { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, - { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, - { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, - { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, - { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, - { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551 }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399 }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061 }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956 }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872 }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027 }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641 }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075 }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534 }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188 }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630 }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670 }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694 }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986 }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060 }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747 }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895 }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098 }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535 }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096 }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090 }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643 }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443 }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865 }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162 }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355 }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935 }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681 }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101 }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, ] [[package]] @@ -218,54 +261,54 @@ name = "cryptography" version = "45.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'darwin'" }, + { name = "cffi", marker = "(platform_machine != 'aarch64' and platform_python_implementation != 'PyPy' and sys_platform != 'darwin') or (platform_python_implementation != 'PyPy' and platform_system != 'Linux' and sys_platform != 'darwin') or (platform_machine == 'aarch64' and platform_python_implementation != 'PyPy' and platform_system == 'Linux' and sys_platform == 'linux')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/1e/49527ac611af559665f71cbb8f92b332b5ec9c6fbc4e88b0f8e92f5e85df/cryptography-45.0.5.tar.gz", hash = "sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a", size = 744903, upload-time = "2025-07-02T13:06:25.941Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/1e/49527ac611af559665f71cbb8f92b332b5ec9c6fbc4e88b0f8e92f5e85df/cryptography-45.0.5.tar.gz", hash = "sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a", size = 744903 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/05/2194432935e29b91fb649f6149c1a4f9e6d3d9fc880919f4ad1bcc22641e/cryptography-45.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d", size = 4205926, upload-time = "2025-07-02T13:05:04.741Z" }, - { url = "https://files.pythonhosted.org/packages/07/8b/9ef5da82350175e32de245646b1884fc01124f53eb31164c77f95a08d682/cryptography-45.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5", size = 4429235, upload-time = "2025-07-02T13:05:07.084Z" }, - { url = "https://files.pythonhosted.org/packages/7c/e1/c809f398adde1994ee53438912192d92a1d0fc0f2d7582659d9ef4c28b0c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57", size = 4209785, upload-time = "2025-07-02T13:05:09.321Z" }, - { url = "https://files.pythonhosted.org/packages/d0/8b/07eb6bd5acff58406c5e806eff34a124936f41a4fb52909ffa4d00815f8c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0", size = 3893050, upload-time = "2025-07-02T13:05:11.069Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ef/3333295ed58d900a13c92806b67e62f27876845a9a908c939f040887cca9/cryptography-45.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d", size = 4457379, upload-time = "2025-07-02T13:05:13.32Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9d/44080674dee514dbb82b21d6fa5d1055368f208304e2ab1828d85c9de8f4/cryptography-45.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9", size = 4209355, upload-time = "2025-07-02T13:05:15.017Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d8/0749f7d39f53f8258e5c18a93131919ac465ee1f9dccaf1b3f420235e0b5/cryptography-45.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27", size = 4456087, upload-time = "2025-07-02T13:05:16.945Z" }, - { url = "https://files.pythonhosted.org/packages/09/d7/92acac187387bf08902b0bf0699816f08553927bdd6ba3654da0010289b4/cryptography-45.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e", size = 4332873, upload-time = "2025-07-02T13:05:18.743Z" }, - { url = "https://files.pythonhosted.org/packages/03/c2/840e0710da5106a7c3d4153c7215b2736151bba60bf4491bdb421df5056d/cryptography-45.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174", size = 4564651, upload-time = "2025-07-02T13:05:21.382Z" }, - { url = "https://files.pythonhosted.org/packages/c2/e7/2187be2f871c0221a81f55ee3105d3cf3e273c0a0853651d7011eada0d7e/cryptography-45.0.5-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd", size = 4197780, upload-time = "2025-07-02T13:05:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/b9/cf/84210c447c06104e6be9122661159ad4ce7a8190011669afceeaea150524/cryptography-45.0.5-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e", size = 4420091, upload-time = "2025-07-02T13:05:31.221Z" }, - { url = "https://files.pythonhosted.org/packages/3e/6a/cb8b5c8bb82fafffa23aeff8d3a39822593cee6e2f16c5ca5c2ecca344f7/cryptography-45.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0", size = 4198711, upload-time = "2025-07-02T13:05:33.062Z" }, - { url = "https://files.pythonhosted.org/packages/04/f7/36d2d69df69c94cbb2473871926daf0f01ad8e00fe3986ac3c1e8c4ca4b3/cryptography-45.0.5-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135", size = 3883299, upload-time = "2025-07-02T13:05:34.94Z" }, - { url = "https://files.pythonhosted.org/packages/82/c7/f0ea40f016de72f81288e9fe8d1f6748036cb5ba6118774317a3ffc6022d/cryptography-45.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7", size = 4450558, upload-time = "2025-07-02T13:05:37.288Z" }, - { url = "https://files.pythonhosted.org/packages/06/ae/94b504dc1a3cdf642d710407c62e86296f7da9e66f27ab12a1ee6fdf005b/cryptography-45.0.5-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42", size = 4198020, upload-time = "2025-07-02T13:05:39.102Z" }, - { url = "https://files.pythonhosted.org/packages/05/2b/aaf0adb845d5dabb43480f18f7ca72e94f92c280aa983ddbd0bcd6ecd037/cryptography-45.0.5-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492", size = 4449759, upload-time = "2025-07-02T13:05:41.398Z" }, - { url = "https://files.pythonhosted.org/packages/91/e4/f17e02066de63e0100a3a01b56f8f1016973a1d67551beaf585157a86b3f/cryptography-45.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0", size = 4319991, upload-time = "2025-07-02T13:05:43.64Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2e/e2dbd629481b499b14516eed933f3276eb3239f7cee2dcfa4ee6b44d4711/cryptography-45.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a", size = 4554189, upload-time = "2025-07-02T13:05:46.045Z" }, - { url = "https://files.pythonhosted.org/packages/8b/5d/a19441c1e89afb0f173ac13178606ca6fab0d3bd3ebc29e9ed1318b507fc/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c648025b6840fe62e57107e0a25f604db740e728bd67da4f6f060f03017d5097", size = 4140906, upload-time = "2025-07-02T13:05:55.914Z" }, - { url = "https://files.pythonhosted.org/packages/4b/db/daceb259982a3c2da4e619f45b5bfdec0e922a23de213b2636e78ef0919b/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b8fa8b0a35a9982a3c60ec79905ba5bb090fc0b9addcfd3dc2dd04267e45f25e", size = 4374411, upload-time = "2025-07-02T13:05:57.814Z" }, - { url = "https://files.pythonhosted.org/packages/6a/35/5d06ad06402fc522c8bf7eab73422d05e789b4e38fe3206a85e3d6966c11/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:14d96584701a887763384f3c47f0ca7c1cce322aa1c31172680eb596b890ec30", size = 4140942, upload-time = "2025-07-02T13:06:00.137Z" }, - { url = "https://files.pythonhosted.org/packages/65/79/020a5413347e44c382ef1f7f7e7a66817cd6273e3e6b5a72d18177b08b2f/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57c816dfbd1659a367831baca4b775b2a5b43c003daf52e9d57e1d30bc2e1b0e", size = 4374079, upload-time = "2025-07-02T13:06:02.043Z" }, - { url = "https://files.pythonhosted.org/packages/f0/63/83516cfb87f4a8756eaa4203f93b283fda23d210fc14e1e594bd5f20edb6/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bd4c45986472694e5121084c6ebbd112aa919a25e783b87eb95953c9573906d6", size = 4152447, upload-time = "2025-07-02T13:06:08.345Z" }, - { url = "https://files.pythonhosted.org/packages/22/11/d2823d2a5a0bd5802b3565437add16f5c8ce1f0778bf3822f89ad2740a38/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:982518cd64c54fcada9d7e5cf28eabd3ee76bd03ab18e08a48cad7e8b6f31b18", size = 4386778, upload-time = "2025-07-02T13:06:10.263Z" }, - { url = "https://files.pythonhosted.org/packages/5f/38/6bf177ca6bce4fe14704ab3e93627c5b0ca05242261a2e43ef3168472540/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:12e55281d993a793b0e883066f590c1ae1e802e3acb67f8b442e721e475e6463", size = 4151627, upload-time = "2025-07-02T13:06:13.097Z" }, - { url = "https://files.pythonhosted.org/packages/38/6a/69fc67e5266bff68a91bcb81dff8fb0aba4d79a78521a08812048913e16f/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:5aa1e32983d4443e310f726ee4b071ab7569f58eedfdd65e9675484a4eb67bd1", size = 4385593, upload-time = "2025-07-02T13:06:15.689Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/2194432935e29b91fb649f6149c1a4f9e6d3d9fc880919f4ad1bcc22641e/cryptography-45.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d", size = 4205926 }, + { url = "https://files.pythonhosted.org/packages/07/8b/9ef5da82350175e32de245646b1884fc01124f53eb31164c77f95a08d682/cryptography-45.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5", size = 4429235 }, + { url = "https://files.pythonhosted.org/packages/7c/e1/c809f398adde1994ee53438912192d92a1d0fc0f2d7582659d9ef4c28b0c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57", size = 4209785 }, + { url = "https://files.pythonhosted.org/packages/d0/8b/07eb6bd5acff58406c5e806eff34a124936f41a4fb52909ffa4d00815f8c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0", size = 3893050 }, + { url = "https://files.pythonhosted.org/packages/ec/ef/3333295ed58d900a13c92806b67e62f27876845a9a908c939f040887cca9/cryptography-45.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d", size = 4457379 }, + { url = "https://files.pythonhosted.org/packages/d9/9d/44080674dee514dbb82b21d6fa5d1055368f208304e2ab1828d85c9de8f4/cryptography-45.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9", size = 4209355 }, + { url = "https://files.pythonhosted.org/packages/c9/d8/0749f7d39f53f8258e5c18a93131919ac465ee1f9dccaf1b3f420235e0b5/cryptography-45.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27", size = 4456087 }, + { url = "https://files.pythonhosted.org/packages/09/d7/92acac187387bf08902b0bf0699816f08553927bdd6ba3654da0010289b4/cryptography-45.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e", size = 4332873 }, + { url = "https://files.pythonhosted.org/packages/03/c2/840e0710da5106a7c3d4153c7215b2736151bba60bf4491bdb421df5056d/cryptography-45.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174", size = 4564651 }, + { url = "https://files.pythonhosted.org/packages/c2/e7/2187be2f871c0221a81f55ee3105d3cf3e273c0a0853651d7011eada0d7e/cryptography-45.0.5-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd", size = 4197780 }, + { url = "https://files.pythonhosted.org/packages/b9/cf/84210c447c06104e6be9122661159ad4ce7a8190011669afceeaea150524/cryptography-45.0.5-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e", size = 4420091 }, + { url = "https://files.pythonhosted.org/packages/3e/6a/cb8b5c8bb82fafffa23aeff8d3a39822593cee6e2f16c5ca5c2ecca344f7/cryptography-45.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0", size = 4198711 }, + { url = "https://files.pythonhosted.org/packages/04/f7/36d2d69df69c94cbb2473871926daf0f01ad8e00fe3986ac3c1e8c4ca4b3/cryptography-45.0.5-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135", size = 3883299 }, + { url = "https://files.pythonhosted.org/packages/82/c7/f0ea40f016de72f81288e9fe8d1f6748036cb5ba6118774317a3ffc6022d/cryptography-45.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7", size = 4450558 }, + { url = "https://files.pythonhosted.org/packages/06/ae/94b504dc1a3cdf642d710407c62e86296f7da9e66f27ab12a1ee6fdf005b/cryptography-45.0.5-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42", size = 4198020 }, + { url = "https://files.pythonhosted.org/packages/05/2b/aaf0adb845d5dabb43480f18f7ca72e94f92c280aa983ddbd0bcd6ecd037/cryptography-45.0.5-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492", size = 4449759 }, + { url = "https://files.pythonhosted.org/packages/91/e4/f17e02066de63e0100a3a01b56f8f1016973a1d67551beaf585157a86b3f/cryptography-45.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0", size = 4319991 }, + { url = "https://files.pythonhosted.org/packages/f2/2e/e2dbd629481b499b14516eed933f3276eb3239f7cee2dcfa4ee6b44d4711/cryptography-45.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a", size = 4554189 }, + { url = "https://files.pythonhosted.org/packages/8b/5d/a19441c1e89afb0f173ac13178606ca6fab0d3bd3ebc29e9ed1318b507fc/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c648025b6840fe62e57107e0a25f604db740e728bd67da4f6f060f03017d5097", size = 4140906 }, + { url = "https://files.pythonhosted.org/packages/4b/db/daceb259982a3c2da4e619f45b5bfdec0e922a23de213b2636e78ef0919b/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b8fa8b0a35a9982a3c60ec79905ba5bb090fc0b9addcfd3dc2dd04267e45f25e", size = 4374411 }, + { url = "https://files.pythonhosted.org/packages/6a/35/5d06ad06402fc522c8bf7eab73422d05e789b4e38fe3206a85e3d6966c11/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:14d96584701a887763384f3c47f0ca7c1cce322aa1c31172680eb596b890ec30", size = 4140942 }, + { url = "https://files.pythonhosted.org/packages/65/79/020a5413347e44c382ef1f7f7e7a66817cd6273e3e6b5a72d18177b08b2f/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57c816dfbd1659a367831baca4b775b2a5b43c003daf52e9d57e1d30bc2e1b0e", size = 4374079 }, + { url = "https://files.pythonhosted.org/packages/f0/63/83516cfb87f4a8756eaa4203f93b283fda23d210fc14e1e594bd5f20edb6/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bd4c45986472694e5121084c6ebbd112aa919a25e783b87eb95953c9573906d6", size = 4152447 }, + { url = "https://files.pythonhosted.org/packages/22/11/d2823d2a5a0bd5802b3565437add16f5c8ce1f0778bf3822f89ad2740a38/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:982518cd64c54fcada9d7e5cf28eabd3ee76bd03ab18e08a48cad7e8b6f31b18", size = 4386778 }, + { url = "https://files.pythonhosted.org/packages/5f/38/6bf177ca6bce4fe14704ab3e93627c5b0ca05242261a2e43ef3168472540/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:12e55281d993a793b0e883066f590c1ae1e802e3acb67f8b442e721e475e6463", size = 4151627 }, + { url = "https://files.pythonhosted.org/packages/38/6a/69fc67e5266bff68a91bcb81dff8fb0aba4d79a78521a08812048913e16f/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:5aa1e32983d4443e310f726ee4b071ab7569f58eedfdd65e9675484a4eb67bd1", size = 4385593 }, ] [[package]] name = "cycler" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] [[package]] name = "docutils" version = "0.21.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, ] [[package]] @@ -275,88 +318,88 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749 } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674 }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, ] [[package]] name = "fonttools" version = "4.58.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/97/5735503e58d3816b0989955ef9b2df07e4c99b246469bd8b3823a14095da/fonttools-4.58.5.tar.gz", hash = "sha256:b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c", size = 3526243, upload-time = "2025-07-03T14:04:47.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/97/5735503e58d3816b0989955ef9b2df07e4c99b246469bd8b3823a14095da/fonttools-4.58.5.tar.gz", hash = "sha256:b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c", size = 3526243 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/cd/d2a50d9e9e9f01491993acd557051a05b0bbe57eb47710c6381dca741ac9/fonttools-4.58.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d500d399aa4e92d969a0d21052696fa762385bb23c3e733703af4a195ad9f34c", size = 2749015, upload-time = "2025-07-03T14:03:15.683Z" }, - { url = "https://files.pythonhosted.org/packages/ee/5e/8f9a4781f79042b2efb68a1636b9013c54f80311dbbc05e6a4bacdaf7661/fonttools-4.58.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b00530b84f87792891874938bd42f47af2f7f4c2a1d70466e6eb7166577853ab", size = 2319224, upload-time = "2025-07-03T14:03:18.627Z" }, - { url = "https://files.pythonhosted.org/packages/51/87/dddb6c9b4af1f49b100e3ec84d45c769947fd8e58943d35a58f27aa017b0/fonttools-4.58.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5579fb3744dfec151b5c29b35857df83e01f06fe446e8c2ebaf1effd7e6cdce", size = 4839510, upload-time = "2025-07-03T14:03:22.785Z" }, - { url = "https://files.pythonhosted.org/packages/30/57/63fd49a3328e39e3f8868dd0b0f00370f4f40c4bd44a8478efad3338ebd9/fonttools-4.58.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf440deecfcc2390998e649156e3bdd0b615863228c484732dc06ac04f57385", size = 4768294, upload-time = "2025-07-03T14:03:24.853Z" }, - { url = "https://files.pythonhosted.org/packages/84/1a/e943dfecf56b48d7e684be7c37749c48560461d14f480b4e7c42285976ce/fonttools-4.58.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a81769fc4d473c808310c9ed91fbe01b67f615e3196fb9773e093939f59e6783", size = 4820057, upload-time = "2025-07-03T14:03:26.939Z" }, - { url = "https://files.pythonhosted.org/packages/02/68/04e9dd0b711ca720f5473adde9325941c73faf947b771ea21fac9e3613c3/fonttools-4.58.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0162a6a37b0ca70d8505311d541e291cd6cab54d1a986ae3d2686c56c0581e8f", size = 4927299, upload-time = "2025-07-03T14:03:29.136Z" }, - { url = "https://files.pythonhosted.org/packages/80/82/9d36a24c47ae4b93377332343b4f018c965e9c4835bbebaed951f99784d0/fonttools-4.58.5-cp310-cp310-win32.whl", hash = "sha256:1cde303422198fdc7f502dbdf1bf65306166cdb9446debd6c7fb826b4d66a530", size = 2203042, upload-time = "2025-07-03T14:03:31.139Z" }, - { url = "https://files.pythonhosted.org/packages/b7/d1/c2c3582d575ef901cad6cfbe77aa5396debd652f51bf32b6963245f00dfa/fonttools-4.58.5-cp310-cp310-win_amd64.whl", hash = "sha256:75cf8c2812c898dd3d70d62b2b768df4eeb524a83fb987a512ddb3863d6a8c54", size = 2247338, upload-time = "2025-07-03T14:03:33.24Z" }, - { url = "https://files.pythonhosted.org/packages/14/50/26c683bf6f30dcbde6955c8e07ec6af23764aab86ff06b36383654ab6739/fonttools-4.58.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cda226253bf14c559bc5a17c570d46abd70315c9a687d91c0e01147f87736182", size = 2769557, upload-time = "2025-07-03T14:03:35.383Z" }, - { url = "https://files.pythonhosted.org/packages/b1/00/c3c75fb6196b9ff9988e6a82319ae23f4ae7098e1c01e2408e58d2e7d9c7/fonttools-4.58.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a96e4a4e65efd6c098da549ec34f328f08963acd2d7bc910ceba01d2dc73e6", size = 2329367, upload-time = "2025-07-03T14:03:37.322Z" }, - { url = "https://files.pythonhosted.org/packages/59/e9/6946366c8e88650c199da9b284559de5d47a6e66ed6d175a166953347959/fonttools-4.58.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d172b92dff59ef8929b4452d5a7b19b8e92081aa87bfb2d82b03b1ff14fc667", size = 5019491, upload-time = "2025-07-03T14:03:39.759Z" }, - { url = "https://files.pythonhosted.org/packages/76/12/2f3f7d09bba7a93bd48dcb54b170fba665f0b7e80e959ac831b907d40785/fonttools-4.58.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0bfddfd09aafbbfb3bd98ae67415fbe51eccd614c17db0c8844fe724fbc5d43d", size = 4961579, upload-time = "2025-07-03T14:03:41.611Z" }, - { url = "https://files.pythonhosted.org/packages/2c/95/87e84071189e51c714074646dfac8275b2e9c6b2b118600529cc74f7451e/fonttools-4.58.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfde5045f1bc92ad11b4b7551807564045a1b38cb037eb3c2bc4e737cd3a8d0f", size = 4997792, upload-time = "2025-07-03T14:03:44.529Z" }, - { url = "https://files.pythonhosted.org/packages/73/47/5c4df7473ecbeb8aa4e01373e4f614ca33f53227fe13ae673c6d5ca99be7/fonttools-4.58.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3515ac47a9a5ac025d2899d195198314023d89492340ba86e4ba79451f7518a8", size = 5109361, upload-time = "2025-07-03T14:03:46.693Z" }, - { url = "https://files.pythonhosted.org/packages/06/00/31406853c570210232b845e08e5a566e15495910790381566ffdbdc7f9a2/fonttools-4.58.5-cp311-cp311-win32.whl", hash = "sha256:9f7e2ab9c10b6811b4f12a0768661325a48e664ec0a0530232c1605896a598db", size = 2201369, upload-time = "2025-07-03T14:03:48.885Z" }, - { url = "https://files.pythonhosted.org/packages/c5/90/ac0facb57962cef53a5734d0be5d2f2936e55aa5c62647c38ca3497263d8/fonttools-4.58.5-cp311-cp311-win_amd64.whl", hash = "sha256:126c16ec4a672c9cb5c1c255dc438d15436b470afc8e9cac25a2d39dd2dc26eb", size = 2249021, upload-time = "2025-07-03T14:03:51.232Z" }, - { url = "https://files.pythonhosted.org/packages/d6/68/66b498ee66f3e7e92fd68476c2509508082b7f57d68c0cdb4b8573f44331/fonttools-4.58.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c3af3fefaafb570a03051a0d6899b8374dcf8e6a4560e42575843aef33bdbad6", size = 2754751, upload-time = "2025-07-03T14:03:52.976Z" }, - { url = "https://files.pythonhosted.org/packages/f1/1e/edbc14b79290980c3944a1f43098624bc8965f534964aa03d52041f24cb4/fonttools-4.58.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:688137789dbd44e8757ad77b49a771539d8069195ffa9a8bcf18176e90bbd86d", size = 2322342, upload-time = "2025-07-03T14:03:54.957Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d7/3c87cf147185d91c2e946460a5cf68c236427b4a23ab96793ccb7d8017c9/fonttools-4.58.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af65836cf84cd7cb882d0b353bdc73643a497ce23b7414c26499bb8128ca1af", size = 4897011, upload-time = "2025-07-03T14:03:56.829Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d6/fbb44cc85d4195fe54356658bd9f934328b4f74ae14addd90b4b5558b5c9/fonttools-4.58.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d79cfeb456bf438cb9fb87437634d4d6f228f27572ca5c5355e58472d5519d", size = 4942291, upload-time = "2025-07-03T14:03:59.204Z" }, - { url = "https://files.pythonhosted.org/packages/4d/c8/453f82e21aedf25cdc2ae619c03a73512398cec9bd8b6c3b1c571e0b6632/fonttools-4.58.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0feac9dda9a48a7a342a593f35d50a5cee2dbd27a03a4c4a5192834a4853b204", size = 4886824, upload-time = "2025-07-03T14:04:01.517Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/e9190001b8e22d123f78925b2f508c866d9d18531694b979277ad45d59b0/fonttools-4.58.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36555230e168511e83ad8637232268649634b8dfff6ef58f46e1ebc057a041ad", size = 5038510, upload-time = "2025-07-03T14:04:03.917Z" }, - { url = "https://files.pythonhosted.org/packages/cf/9c/07cdad4774841a6304aabae939f8cbb9538cb1d8e97f5016b334da98e73a/fonttools-4.58.5-cp312-cp312-win32.whl", hash = "sha256:26ec05319353842d127bd02516eacb25b97ca83966e40e9ad6fab85cab0576f4", size = 2188459, upload-time = "2025-07-03T14:04:06.103Z" }, - { url = "https://files.pythonhosted.org/packages/0e/4d/1eaaad22781d55f49d1b184563842172aeb6a4fe53c029e503be81114314/fonttools-4.58.5-cp312-cp312-win_amd64.whl", hash = "sha256:778a632e538f82c1920579c0c01566a8f83dc24470c96efbf2fbac698907f569", size = 2236565, upload-time = "2025-07-03T14:04:08.27Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ee/764dd8b99891f815241f449345863cfed9e546923d9cef463f37fd1d7168/fonttools-4.58.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4b6f1360da13cecc88c0d60716145b31e1015fbe6a59e32f73a4404e2ea92cf", size = 2745867, upload-time = "2025-07-03T14:04:10.586Z" }, - { url = "https://files.pythonhosted.org/packages/e2/23/8fef484c02fef55e226dfeac4339a015c5480b6a496064058491759ac71e/fonttools-4.58.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a036822e915692aa2c03e2decc60f49a8190f8111b639c947a4f4e5774d0d7a", size = 2317933, upload-time = "2025-07-03T14:04:12.335Z" }, - { url = "https://files.pythonhosted.org/packages/ab/47/f92b135864fa777e11ad68420bf89446c91a572fe2782745586f8e6aac0c/fonttools-4.58.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d7709fcf4577b0f294ee6327088884ca95046e1eccde87c53bbba4d5008541", size = 4877844, upload-time = "2025-07-03T14:04:14.58Z" }, - { url = "https://files.pythonhosted.org/packages/3e/65/6c1a83511d8ac32411930495645edb3f8dfabebcb78f08cf6009ba2585ec/fonttools-4.58.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9b5099ca99b79d6d67162778b1b1616fc0e1de02c1a178248a0da8d78a33852", size = 4940106, upload-time = "2025-07-03T14:04:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/fa/90/df8eb77d6cf266cbbba01866a1349a3e9121e0a63002cf8d6754e994f755/fonttools-4.58.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3f2c05a8d82a4d15aebfdb3506e90793aea16e0302cec385134dd960647a36c0", size = 4879458, upload-time = "2025-07-03T14:04:19.584Z" }, - { url = "https://files.pythonhosted.org/packages/26/b1/e32f8de51b7afcfea6ad62780da2fa73212c43a32cd8cafcc852189d7949/fonttools-4.58.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79f0c4b1cc63839b61deeac646d8dba46f8ed40332c2ac1b9997281462c2e4ba", size = 5021917, upload-time = "2025-07-03T14:04:21.736Z" }, - { url = "https://files.pythonhosted.org/packages/89/72/578aa7fe32918dd763c62f447aaed672d665ee10e3eeb1725f4d6493fe96/fonttools-4.58.5-cp313-cp313-win32.whl", hash = "sha256:a1a9a2c462760976882131cbab7d63407813413a2d32cd699e86a1ff22bf7aa5", size = 2186827, upload-time = "2025-07-03T14:04:24.237Z" }, - { url = "https://files.pythonhosted.org/packages/71/a3/21e921b16cb9c029d3308e0cb79c9a937e9ff1fc1ee28c2419f0957b9e7c/fonttools-4.58.5-cp313-cp313-win_amd64.whl", hash = "sha256:bca61b14031a4b7dc87e14bf6ca34c275f8e4b9f7a37bc2fe746b532a924cf30", size = 2235706, upload-time = "2025-07-03T14:04:26.082Z" }, - { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload-time = "2025-07-03T14:04:45.378Z" }, + { url = "https://files.pythonhosted.org/packages/0b/cd/d2a50d9e9e9f01491993acd557051a05b0bbe57eb47710c6381dca741ac9/fonttools-4.58.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d500d399aa4e92d969a0d21052696fa762385bb23c3e733703af4a195ad9f34c", size = 2749015 }, + { url = "https://files.pythonhosted.org/packages/ee/5e/8f9a4781f79042b2efb68a1636b9013c54f80311dbbc05e6a4bacdaf7661/fonttools-4.58.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b00530b84f87792891874938bd42f47af2f7f4c2a1d70466e6eb7166577853ab", size = 2319224 }, + { url = "https://files.pythonhosted.org/packages/51/87/dddb6c9b4af1f49b100e3ec84d45c769947fd8e58943d35a58f27aa017b0/fonttools-4.58.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5579fb3744dfec151b5c29b35857df83e01f06fe446e8c2ebaf1effd7e6cdce", size = 4839510 }, + { url = "https://files.pythonhosted.org/packages/30/57/63fd49a3328e39e3f8868dd0b0f00370f4f40c4bd44a8478efad3338ebd9/fonttools-4.58.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf440deecfcc2390998e649156e3bdd0b615863228c484732dc06ac04f57385", size = 4768294 }, + { url = "https://files.pythonhosted.org/packages/84/1a/e943dfecf56b48d7e684be7c37749c48560461d14f480b4e7c42285976ce/fonttools-4.58.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a81769fc4d473c808310c9ed91fbe01b67f615e3196fb9773e093939f59e6783", size = 4820057 }, + { url = "https://files.pythonhosted.org/packages/02/68/04e9dd0b711ca720f5473adde9325941c73faf947b771ea21fac9e3613c3/fonttools-4.58.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0162a6a37b0ca70d8505311d541e291cd6cab54d1a986ae3d2686c56c0581e8f", size = 4927299 }, + { url = "https://files.pythonhosted.org/packages/80/82/9d36a24c47ae4b93377332343b4f018c965e9c4835bbebaed951f99784d0/fonttools-4.58.5-cp310-cp310-win32.whl", hash = "sha256:1cde303422198fdc7f502dbdf1bf65306166cdb9446debd6c7fb826b4d66a530", size = 2203042 }, + { url = "https://files.pythonhosted.org/packages/b7/d1/c2c3582d575ef901cad6cfbe77aa5396debd652f51bf32b6963245f00dfa/fonttools-4.58.5-cp310-cp310-win_amd64.whl", hash = "sha256:75cf8c2812c898dd3d70d62b2b768df4eeb524a83fb987a512ddb3863d6a8c54", size = 2247338 }, + { url = "https://files.pythonhosted.org/packages/14/50/26c683bf6f30dcbde6955c8e07ec6af23764aab86ff06b36383654ab6739/fonttools-4.58.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cda226253bf14c559bc5a17c570d46abd70315c9a687d91c0e01147f87736182", size = 2769557 }, + { url = "https://files.pythonhosted.org/packages/b1/00/c3c75fb6196b9ff9988e6a82319ae23f4ae7098e1c01e2408e58d2e7d9c7/fonttools-4.58.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a96e4a4e65efd6c098da549ec34f328f08963acd2d7bc910ceba01d2dc73e6", size = 2329367 }, + { url = "https://files.pythonhosted.org/packages/59/e9/6946366c8e88650c199da9b284559de5d47a6e66ed6d175a166953347959/fonttools-4.58.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d172b92dff59ef8929b4452d5a7b19b8e92081aa87bfb2d82b03b1ff14fc667", size = 5019491 }, + { url = "https://files.pythonhosted.org/packages/76/12/2f3f7d09bba7a93bd48dcb54b170fba665f0b7e80e959ac831b907d40785/fonttools-4.58.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0bfddfd09aafbbfb3bd98ae67415fbe51eccd614c17db0c8844fe724fbc5d43d", size = 4961579 }, + { url = "https://files.pythonhosted.org/packages/2c/95/87e84071189e51c714074646dfac8275b2e9c6b2b118600529cc74f7451e/fonttools-4.58.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfde5045f1bc92ad11b4b7551807564045a1b38cb037eb3c2bc4e737cd3a8d0f", size = 4997792 }, + { url = "https://files.pythonhosted.org/packages/73/47/5c4df7473ecbeb8aa4e01373e4f614ca33f53227fe13ae673c6d5ca99be7/fonttools-4.58.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3515ac47a9a5ac025d2899d195198314023d89492340ba86e4ba79451f7518a8", size = 5109361 }, + { url = "https://files.pythonhosted.org/packages/06/00/31406853c570210232b845e08e5a566e15495910790381566ffdbdc7f9a2/fonttools-4.58.5-cp311-cp311-win32.whl", hash = "sha256:9f7e2ab9c10b6811b4f12a0768661325a48e664ec0a0530232c1605896a598db", size = 2201369 }, + { url = "https://files.pythonhosted.org/packages/c5/90/ac0facb57962cef53a5734d0be5d2f2936e55aa5c62647c38ca3497263d8/fonttools-4.58.5-cp311-cp311-win_amd64.whl", hash = "sha256:126c16ec4a672c9cb5c1c255dc438d15436b470afc8e9cac25a2d39dd2dc26eb", size = 2249021 }, + { url = "https://files.pythonhosted.org/packages/d6/68/66b498ee66f3e7e92fd68476c2509508082b7f57d68c0cdb4b8573f44331/fonttools-4.58.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c3af3fefaafb570a03051a0d6899b8374dcf8e6a4560e42575843aef33bdbad6", size = 2754751 }, + { url = "https://files.pythonhosted.org/packages/f1/1e/edbc14b79290980c3944a1f43098624bc8965f534964aa03d52041f24cb4/fonttools-4.58.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:688137789dbd44e8757ad77b49a771539d8069195ffa9a8bcf18176e90bbd86d", size = 2322342 }, + { url = "https://files.pythonhosted.org/packages/c1/d7/3c87cf147185d91c2e946460a5cf68c236427b4a23ab96793ccb7d8017c9/fonttools-4.58.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af65836cf84cd7cb882d0b353bdc73643a497ce23b7414c26499bb8128ca1af", size = 4897011 }, + { url = "https://files.pythonhosted.org/packages/a0/d6/fbb44cc85d4195fe54356658bd9f934328b4f74ae14addd90b4b5558b5c9/fonttools-4.58.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d79cfeb456bf438cb9fb87437634d4d6f228f27572ca5c5355e58472d5519d", size = 4942291 }, + { url = "https://files.pythonhosted.org/packages/4d/c8/453f82e21aedf25cdc2ae619c03a73512398cec9bd8b6c3b1c571e0b6632/fonttools-4.58.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0feac9dda9a48a7a342a593f35d50a5cee2dbd27a03a4c4a5192834a4853b204", size = 4886824 }, + { url = "https://files.pythonhosted.org/packages/40/54/e9190001b8e22d123f78925b2f508c866d9d18531694b979277ad45d59b0/fonttools-4.58.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36555230e168511e83ad8637232268649634b8dfff6ef58f46e1ebc057a041ad", size = 5038510 }, + { url = "https://files.pythonhosted.org/packages/cf/9c/07cdad4774841a6304aabae939f8cbb9538cb1d8e97f5016b334da98e73a/fonttools-4.58.5-cp312-cp312-win32.whl", hash = "sha256:26ec05319353842d127bd02516eacb25b97ca83966e40e9ad6fab85cab0576f4", size = 2188459 }, + { url = "https://files.pythonhosted.org/packages/0e/4d/1eaaad22781d55f49d1b184563842172aeb6a4fe53c029e503be81114314/fonttools-4.58.5-cp312-cp312-win_amd64.whl", hash = "sha256:778a632e538f82c1920579c0c01566a8f83dc24470c96efbf2fbac698907f569", size = 2236565 }, + { url = "https://files.pythonhosted.org/packages/3a/ee/764dd8b99891f815241f449345863cfed9e546923d9cef463f37fd1d7168/fonttools-4.58.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4b6f1360da13cecc88c0d60716145b31e1015fbe6a59e32f73a4404e2ea92cf", size = 2745867 }, + { url = "https://files.pythonhosted.org/packages/e2/23/8fef484c02fef55e226dfeac4339a015c5480b6a496064058491759ac71e/fonttools-4.58.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a036822e915692aa2c03e2decc60f49a8190f8111b639c947a4f4e5774d0d7a", size = 2317933 }, + { url = "https://files.pythonhosted.org/packages/ab/47/f92b135864fa777e11ad68420bf89446c91a572fe2782745586f8e6aac0c/fonttools-4.58.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d7709fcf4577b0f294ee6327088884ca95046e1eccde87c53bbba4d5008541", size = 4877844 }, + { url = "https://files.pythonhosted.org/packages/3e/65/6c1a83511d8ac32411930495645edb3f8dfabebcb78f08cf6009ba2585ec/fonttools-4.58.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9b5099ca99b79d6d67162778b1b1616fc0e1de02c1a178248a0da8d78a33852", size = 4940106 }, + { url = "https://files.pythonhosted.org/packages/fa/90/df8eb77d6cf266cbbba01866a1349a3e9121e0a63002cf8d6754e994f755/fonttools-4.58.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3f2c05a8d82a4d15aebfdb3506e90793aea16e0302cec385134dd960647a36c0", size = 4879458 }, + { url = "https://files.pythonhosted.org/packages/26/b1/e32f8de51b7afcfea6ad62780da2fa73212c43a32cd8cafcc852189d7949/fonttools-4.58.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79f0c4b1cc63839b61deeac646d8dba46f8ed40332c2ac1b9997281462c2e4ba", size = 5021917 }, + { url = "https://files.pythonhosted.org/packages/89/72/578aa7fe32918dd763c62f447aaed672d665ee10e3eeb1725f4d6493fe96/fonttools-4.58.5-cp313-cp313-win32.whl", hash = "sha256:a1a9a2c462760976882131cbab7d63407813413a2d32cd699e86a1ff22bf7aa5", size = 2186827 }, + { url = "https://files.pythonhosted.org/packages/71/a3/21e921b16cb9c029d3308e0cb79c9a937e9ff1fc1ee28c2419f0957b9e7c/fonttools-4.58.5-cp313-cp313-win_amd64.whl", hash = "sha256:bca61b14031a4b7dc87e14bf6ca34c275f8e4b9f7a37bc2fe746b532a924cf30", size = 2235706 }, + { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318 }, ] [[package]] name = "fsspec" version = "2025.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/02/0835e6ab9cfc03916fe3f78c0956cfcdb6ff2669ffa6651065d5ebf7fc98/fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58", size = 304432, upload-time = "2025-07-15T16:05:21.19Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/02/0835e6ab9cfc03916fe3f78c0956cfcdb6ff2669ffa6651065d5ebf7fc98/fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58", size = 304432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/e0/014d5d9d7a4564cf1c40b5039bc882db69fd881111e03ab3657ac0b218e2/fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21", size = 199597, upload-time = "2025-07-15T16:05:19.529Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e0/014d5d9d7a4564cf1c40b5039bc882db69fd881111e03ab3657ac0b218e2/fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21", size = 199597 }, ] [[package]] name = "hf-xet" version = "1.1.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/d4/7685999e85945ed0d7f0762b686ae7015035390de1161dcea9d5276c134c/hf_xet-1.1.5.tar.gz", hash = "sha256:69ebbcfd9ec44fdc2af73441619eeb06b94ee34511bbcf57cd423820090f5694", size = 495969, upload-time = "2025-06-20T21:48:38.007Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/d4/7685999e85945ed0d7f0762b686ae7015035390de1161dcea9d5276c134c/hf_xet-1.1.5.tar.gz", hash = "sha256:69ebbcfd9ec44fdc2af73441619eeb06b94ee34511bbcf57cd423820090f5694", size = 495969 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/89/a1119eebe2836cb25758e7661d6410d3eae982e2b5e974bcc4d250be9012/hf_xet-1.1.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f52c2fa3635b8c37c7764d8796dfa72706cc4eded19d638331161e82b0792e23", size = 2687929, upload-time = "2025-06-20T21:48:32.284Z" }, - { url = "https://files.pythonhosted.org/packages/de/5f/2c78e28f309396e71ec8e4e9304a6483dcbc36172b5cea8f291994163425/hf_xet-1.1.5-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:9fa6e3ee5d61912c4a113e0708eaaef987047616465ac7aa30f7121a48fc1af8", size = 2556338, upload-time = "2025-06-20T21:48:30.079Z" }, - { url = "https://files.pythonhosted.org/packages/6d/2f/6cad7b5fe86b7652579346cb7f85156c11761df26435651cbba89376cd2c/hf_xet-1.1.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc874b5c843e642f45fd85cda1ce599e123308ad2901ead23d3510a47ff506d1", size = 3102894, upload-time = "2025-06-20T21:48:28.114Z" }, - { url = "https://files.pythonhosted.org/packages/d0/54/0fcf2b619720a26fbb6cc941e89f2472a522cd963a776c089b189559447f/hf_xet-1.1.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dbba1660e5d810bd0ea77c511a99e9242d920790d0e63c0e4673ed36c4022d18", size = 3002134, upload-time = "2025-06-20T21:48:25.906Z" }, - { url = "https://files.pythonhosted.org/packages/f3/92/1d351ac6cef7c4ba8c85744d37ffbfac2d53d0a6c04d2cabeba614640a78/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ab34c4c3104133c495785d5d8bba3b1efc99de52c02e759cf711a91fd39d3a14", size = 3171009, upload-time = "2025-06-20T21:48:33.987Z" }, - { url = "https://files.pythonhosted.org/packages/c9/65/4b2ddb0e3e983f2508528eb4501288ae2f84963586fbdfae596836d5e57a/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:83088ecea236d5113de478acb2339f92c95b4fb0462acaa30621fac02f5a534a", size = 3279245, upload-time = "2025-06-20T21:48:36.051Z" }, - { url = "https://files.pythonhosted.org/packages/f0/55/ef77a85ee443ae05a9e9cba1c9f0dd9241eb42da2aeba1dc50f51154c81a/hf_xet-1.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:73e167d9807d166596b4b2f0b585c6d5bd84a26dea32843665a8b58f6edba245", size = 2738931, upload-time = "2025-06-20T21:48:39.482Z" }, + { url = "https://files.pythonhosted.org/packages/00/89/a1119eebe2836cb25758e7661d6410d3eae982e2b5e974bcc4d250be9012/hf_xet-1.1.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f52c2fa3635b8c37c7764d8796dfa72706cc4eded19d638331161e82b0792e23", size = 2687929 }, + { url = "https://files.pythonhosted.org/packages/de/5f/2c78e28f309396e71ec8e4e9304a6483dcbc36172b5cea8f291994163425/hf_xet-1.1.5-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:9fa6e3ee5d61912c4a113e0708eaaef987047616465ac7aa30f7121a48fc1af8", size = 2556338 }, + { url = "https://files.pythonhosted.org/packages/6d/2f/6cad7b5fe86b7652579346cb7f85156c11761df26435651cbba89376cd2c/hf_xet-1.1.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc874b5c843e642f45fd85cda1ce599e123308ad2901ead23d3510a47ff506d1", size = 3102894 }, + { url = "https://files.pythonhosted.org/packages/d0/54/0fcf2b619720a26fbb6cc941e89f2472a522cd963a776c089b189559447f/hf_xet-1.1.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dbba1660e5d810bd0ea77c511a99e9242d920790d0e63c0e4673ed36c4022d18", size = 3002134 }, + { url = "https://files.pythonhosted.org/packages/f3/92/1d351ac6cef7c4ba8c85744d37ffbfac2d53d0a6c04d2cabeba614640a78/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ab34c4c3104133c495785d5d8bba3b1efc99de52c02e759cf711a91fd39d3a14", size = 3171009 }, + { url = "https://files.pythonhosted.org/packages/c9/65/4b2ddb0e3e983f2508528eb4501288ae2f84963586fbdfae596836d5e57a/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:83088ecea236d5113de478acb2339f92c95b4fb0462acaa30621fac02f5a534a", size = 3279245 }, + { url = "https://files.pythonhosted.org/packages/f0/55/ef77a85ee443ae05a9e9cba1c9f0dd9241eb42da2aeba1dc50f51154c81a/hf_xet-1.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:73e167d9807d166596b4b2f0b585c6d5bd84a26dea32843665a8b58f6edba245", size = 2738931 }, ] [[package]] name = "huggingface-hub" -version = "0.33.4" +version = "0.34.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, @@ -368,9 +411,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4b/9e/9366b7349fc125dd68b9d384a0fea84d67b7497753fe92c71b67e13f47c4/huggingface_hub-0.33.4.tar.gz", hash = "sha256:6af13478deae120e765bfd92adad0ae1aec1ad8c439b46f23058ad5956cbca0a", size = 426674, upload-time = "2025-07-11T12:32:48.694Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/c9/bdbe19339f76d12985bc03572f330a01a93c04dffecaaea3061bdd7fb892/huggingface_hub-0.34.4.tar.gz", hash = "sha256:a4228daa6fb001be3f4f4bdaf9a0db00e1739235702848df00885c9b5742c85c", size = 459768 } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/7b/98daa50a2db034cab6cd23a3de04fa2358cb691593d28e9130203eb7a805/huggingface_hub-0.33.4-py3-none-any.whl", hash = "sha256:09f9f4e7ca62547c70f8b82767eefadd2667f4e116acba2e3e62a5a81815a7bb", size = 515339, upload-time = "2025-07-11T12:32:46.346Z" }, + { url = "https://files.pythonhosted.org/packages/39/7b/bb06b061991107cd8783f300adff3e7b7f284e330fd82f507f2a1417b11d/huggingface_hub-0.34.4-py3-none-any.whl", hash = "sha256:9b365d781739c93ff90c359844221beef048403f1bc1f1c123c191257c3c890a", size = 561452 }, ] [[package]] @@ -380,18 +423,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/11/102da08f88412d875fa2f1a9a469ff7ad4c874b0ca6fed0048fe385bdb3d/id-1.5.0.tar.gz", hash = "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d", size = 15237, upload-time = "2024-12-04T19:53:05.575Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/11/102da08f88412d875fa2f1a9a469ff7ad4c874b0ca6fed0048fe385bdb3d/id-1.5.0.tar.gz", hash = "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d", size = 15237 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/cb/18326d2d89ad3b0dd143da971e77afd1e6ca6674f1b1c3df4b6bec6279fc/id-1.5.0-py3-none-any.whl", hash = "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658", size = 13611, upload-time = "2024-12-04T19:53:03.02Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/18326d2d89ad3b0dd143da971e77afd1e6ca6674f1b1c3df4b6bec6279fc/id-1.5.0-py3-none-any.whl", hash = "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658", size = 13611 }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] @@ -401,18 +444,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -422,9 +465,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780, upload-time = "2024-03-31T07:27:36.643Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777, upload-time = "2024-03-31T07:27:34.792Z" }, + { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777 }, ] [[package]] @@ -434,9 +477,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backports-tarfile", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912, upload-time = "2024-08-20T03:39:27.358Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825, upload-time = "2024-08-20T03:39:25.966Z" }, + { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825 }, ] [[package]] @@ -446,18 +489,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/49/1c/831faaaa0f090b711c355c6d8b2abf277c72133aab472b6932b03322294c/jaraco_functools-4.2.1.tar.gz", hash = "sha256:be634abfccabce56fa3053f8c7ebe37b682683a4ee7793670ced17bab0087353", size = 19661, upload-time = "2025-06-21T19:22:03.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/1c/831faaaa0f090b711c355c6d8b2abf277c72133aab472b6932b03322294c/jaraco_functools-4.2.1.tar.gz", hash = "sha256:be634abfccabce56fa3053f8c7ebe37b682683a4ee7793670ced17bab0087353", size = 19661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/179a20f832824514df39a90bb0e5372b314fea99f217f5ab942b10a8a4e8/jaraco_functools-4.2.1-py3-none-any.whl", hash = "sha256:590486285803805f4b1f99c60ca9e94ed348d4added84b74c7a12885561e524e", size = 10349, upload-time = "2025-06-21T19:22:02.039Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fd/179a20f832824514df39a90bb0e5372b314fea99f217f5ab942b10a8a4e8/jaraco_functools-4.2.1-py3-none-any.whl", hash = "sha256:590486285803805f4b1f99c60ca9e94ed348d4added84b74c7a12885561e524e", size = 10349 }, ] [[package]] name = "jeepney" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758, upload-time = "2025-02-27T18:51:01.684Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010 }, ] [[package]] @@ -467,9 +510,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[package]] @@ -485,96 +528,96 @@ dependencies = [ { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, { name = "secretstorage", marker = "sys_platform == 'linux'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/09/d904a6e96f76ff214be59e7aa6ef7190008f52a0ab6689760a98de0bf37d/keyring-25.6.0.tar.gz", hash = "sha256:0b39998aa941431eb3d9b0d4b2460bc773b9df6fed7621c2dfb291a7e0187a66", size = 62750, upload-time = "2024-12-25T15:26:45.782Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/09/d904a6e96f76ff214be59e7aa6ef7190008f52a0ab6689760a98de0bf37d/keyring-25.6.0.tar.gz", hash = "sha256:0b39998aa941431eb3d9b0d4b2460bc773b9df6fed7621c2dfb291a7e0187a66", size = 62750 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl", hash = "sha256:552a3f7af126ece7ed5c89753650eec89c7eaae8617d0aa4d9ad2b75111266bd", size = 39085, upload-time = "2024-12-25T15:26:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl", hash = "sha256:552a3f7af126ece7ed5c89753650eec89c7eaae8617d0aa4d9ad2b75111266bd", size = 39085 }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload-time = "2024-12-24T18:28:17.687Z" }, - { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload-time = "2024-12-24T18:28:19.158Z" }, - { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload-time = "2024-12-24T18:28:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload-time = "2024-12-24T18:28:21.203Z" }, - { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload-time = "2024-12-24T18:28:23.851Z" }, - { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload-time = "2024-12-24T18:28:26.687Z" }, - { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload-time = "2024-12-24T18:28:30.538Z" }, - { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload-time = "2024-12-24T18:28:32.943Z" }, - { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload-time = "2024-12-24T18:28:35.641Z" }, - { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload-time = "2024-12-24T18:28:38.357Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload-time = "2024-12-24T18:28:40.941Z" }, - { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload-time = "2024-12-24T18:28:42.273Z" }, - { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload-time = "2024-12-24T18:28:44.87Z" }, - { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload-time = "2024-12-24T18:28:47.346Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload-time = "2024-12-24T18:28:49.651Z" }, - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload-time = "2024-12-24T18:29:45.368Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload-time = "2024-12-24T18:29:46.37Z" }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload-time = "2024-12-24T18:29:47.333Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload-time = "2024-12-24T18:29:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload-time = "2024-12-24T18:29:51.164Z" }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload-time = "2024-12-24T18:29:52.594Z" }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload-time = "2024-12-24T18:29:53.941Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload-time = "2024-12-24T18:29:56.523Z" }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload-time = "2024-12-24T18:29:57.989Z" }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload-time = "2024-12-24T18:29:59.393Z" }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload-time = "2024-12-24T18:30:01.338Z" }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload-time = "2024-12-24T18:30:04.574Z" }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload-time = "2024-12-24T18:30:06.25Z" }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload-time = "2024-12-24T18:30:07.535Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload-time = "2024-12-24T18:30:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload-time = "2024-12-24T18:30:09.508Z" }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload-time = "2024-12-24T18:30:11.039Z" }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload-time = "2024-12-24T18:30:14.886Z" }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload-time = "2024-12-24T18:30:18.927Z" }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload-time = "2024-12-24T18:30:22.102Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload-time = "2024-12-24T18:30:24.947Z" }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload-time = "2024-12-24T18:30:26.286Z" }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload-time = "2024-12-24T18:30:28.86Z" }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload-time = "2024-12-24T18:30:30.34Z" }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload-time = "2024-12-24T18:30:33.334Z" }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload-time = "2024-12-24T18:30:34.939Z" }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload-time = "2024-12-24T18:30:37.281Z" }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload-time = "2024-12-24T18:30:40.019Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload-time = "2024-12-24T18:30:41.372Z" }, - { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload-time = "2024-12-24T18:30:42.392Z" }, - { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload-time = "2024-12-24T18:30:44.703Z" }, - { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload-time = "2024-12-24T18:30:45.654Z" }, - { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload-time = "2024-12-24T18:30:47.951Z" }, - { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, + { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623 }, + { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720 }, + { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826 }, + { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231 }, + { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938 }, + { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799 }, + { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362 }, + { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695 }, + { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802 }, + { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646 }, + { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260 }, + { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633 }, + { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885 }, + { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175 }, + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, + { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403 }, + { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657 }, + { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948 }, + { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186 }, + { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279 }, + { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762 }, ] [[package]] @@ -584,67 +627,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, - { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, - { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, - { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, - { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, - { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, - { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, - { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, - { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -656,58 +699,58 @@ dependencies = [ { name = "cycler" }, { name = "fonttools" }, { name = "kiwisolver" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, { name = "packaging" }, { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/ea/2bba25d289d389c7451f331ecd593944b3705f06ddf593fa7be75037d308/matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7", size = 8167862, upload-time = "2025-05-08T19:09:39.563Z" }, - { url = "https://files.pythonhosted.org/packages/41/81/cc70b5138c926604e8c9ed810ed4c79e8116ba72e02230852f5c12c87ba2/matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb", size = 8042149, upload-time = "2025-05-08T19:09:42.413Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9a/0ff45b6bfa42bb16de597e6058edf2361c298ad5ef93b327728145161bbf/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb", size = 8453719, upload-time = "2025-05-08T19:09:44.901Z" }, - { url = "https://files.pythonhosted.org/packages/85/c7/1866e972fed6d71ef136efbc980d4d1854ab7ef1ea8152bbd995ca231c81/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30", size = 8590801, upload-time = "2025-05-08T19:09:47.404Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b9/748f6626d534ab7e255bdc39dc22634d337cf3ce200f261b5d65742044a1/matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8", size = 9402111, upload-time = "2025-05-08T19:09:49.474Z" }, - { url = "https://files.pythonhosted.org/packages/1f/78/8bf07bd8fb67ea5665a6af188e70b57fcb2ab67057daa06b85a08e59160a/matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd", size = 8057213, upload-time = "2025-05-08T19:09:51.489Z" }, - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload-time = "2025-05-08T19:10:20.426Z" }, - { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload-time = "2025-05-08T19:10:22.569Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload-time = "2025-05-08T19:10:24.749Z" }, - { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload-time = "2025-05-08T19:10:27.03Z" }, - { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload-time = "2025-05-08T19:10:29.056Z" }, - { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload-time = "2025-05-08T19:10:31.221Z" }, - { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload-time = "2025-05-08T19:10:33.114Z" }, - { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload-time = "2025-05-08T19:10:35.337Z" }, - { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload-time = "2025-05-08T19:10:37.611Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload-time = "2025-05-08T19:10:39.892Z" }, - { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload-time = "2025-05-08T19:10:42.376Z" }, - { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload-time = "2025-05-08T19:10:44.551Z" }, - { url = "https://files.pythonhosted.org/packages/3d/d1/f54d43e95384b312ffa4a74a4326c722f3b8187aaaa12e9a84cdf3037131/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4", size = 8162896, upload-time = "2025-05-08T19:10:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/24/a4/fbfc00c2346177c95b353dcf9b5a004106abe8730a62cb6f27e79df0a698/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751", size = 8039702, upload-time = "2025-05-08T19:10:49.634Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ea/2bba25d289d389c7451f331ecd593944b3705f06ddf593fa7be75037d308/matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7", size = 8167862 }, + { url = "https://files.pythonhosted.org/packages/41/81/cc70b5138c926604e8c9ed810ed4c79e8116ba72e02230852f5c12c87ba2/matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb", size = 8042149 }, + { url = "https://files.pythonhosted.org/packages/4a/9a/0ff45b6bfa42bb16de597e6058edf2361c298ad5ef93b327728145161bbf/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb", size = 8453719 }, + { url = "https://files.pythonhosted.org/packages/85/c7/1866e972fed6d71ef136efbc980d4d1854ab7ef1ea8152bbd995ca231c81/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30", size = 8590801 }, + { url = "https://files.pythonhosted.org/packages/5d/b9/748f6626d534ab7e255bdc39dc22634d337cf3ce200f261b5d65742044a1/matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8", size = 9402111 }, + { url = "https://files.pythonhosted.org/packages/1f/78/8bf07bd8fb67ea5665a6af188e70b57fcb2ab67057daa06b85a08e59160a/matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd", size = 8057213 }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, + { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318 }, + { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132 }, + { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633 }, + { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031 }, + { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988 }, + { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034 }, + { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223 }, + { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985 }, + { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109 }, + { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082 }, + { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699 }, + { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044 }, + { url = "https://files.pythonhosted.org/packages/3d/d1/f54d43e95384b312ffa4a74a4326c722f3b8187aaaa12e9a84cdf3037131/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4", size = 8162896 }, + { url = "https://files.pythonhosted.org/packages/24/a4/fbfc00c2346177c95b353dcf9b5a004106abe8730a62cb6f27e79df0a698/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751", size = 8039702 }, + { url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298 }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] @@ -715,16 +758,20 @@ name = "mflux" version = "0.10.0" source = { editable = "." } dependencies = [ + { name = "accelerate" }, + { name = "filelock" }, { name = "huggingface-hub" }, { name = "matplotlib" }, { name = "mlx" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, { name = "opencv-python" }, { name = "piexif" }, { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, { name = "platformdirs" }, + { name = "regex" }, + { name = "requests" }, { name = "safetensors" }, { name = "sentencepiece", version = "0.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, { name = "sentencepiece", version = "0.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, @@ -746,6 +793,8 @@ dev = [ [package.metadata] requires-dist = [ + { name = "accelerate", specifier = ">=0.31.0" }, + { name = "filelock", specifier = ">=3.18.0" }, { name = "huggingface-hub", specifier = ">=0.24.5,<1.0" }, { name = "matplotlib", specifier = ">=3.9.2,<4.0" }, { name = "mlx", specifier = ">=0.27.0,<0.28.0" }, @@ -753,48 +802,51 @@ requires-dist = [ { name = "numpy", specifier = ">=2.0.1,<3.0" }, { name = "opencv-python", specifier = ">=4.10.0,<5.0" }, { name = "piexif", specifier = ">=1.1.3,<2.0" }, + { name = "pillow", specifier = ">=10.4.0" }, { name = "pillow", marker = "python_full_version < '3.13'", specifier = ">=10.4.0,<11.0" }, { name = "pillow", marker = "python_full_version >= '3.13'", specifier = ">=11.0,<12.0" }, { name = "platformdirs", specifier = ">=4.0,<5.0" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.0,<9.0" }, { name = "pytest-timer", marker = "extra == 'dev'", specifier = ">=1.0,<2.0" }, + { name = "regex", specifier = ">=2024.11.6" }, + { name = "requests", specifier = ">=2.32.4" }, { name = "safetensors", specifier = ">=0.4.4,<1.0" }, { name = "sentencepiece", marker = "python_full_version < '3.13'", specifier = ">=0.2.0,<1.0" }, { name = "sentencepiece", marker = "python_full_version >= '3.13'", specifier = ">=0.2.1,<1.0" }, { name = "tokenizers", marker = "python_full_version >= '3.13'", specifier = ">=0.20.3" }, { name = "toml", specifier = ">=0.10.2,<1.0" }, + { name = "torch", specifier = ">=2.7.1" }, { name = "torch", marker = "python_full_version < '3.13'", specifier = ">=2.3.1,<3.0" }, { name = "torch", marker = "python_full_version >= '3.13'", specifier = ">=2.8.0,<3.0" }, { name = "tqdm", specifier = ">=4.66.5,<5.0" }, - { name = "transformers", specifier = ">=4.44.0,<5.0" }, + { name = "transformers", specifier = ">=4.55.0,<5.0" }, { name = "twine", specifier = ">=6.1.0,<7.0" }, ] -provides-extras = ["dev"] [[package]] name = "mlx" version = "0.27.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mlx-metal", marker = "sys_platform == 'darwin'" }, + { name = "mlx-metal", marker = "platform_system == 'Darwin'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/ed/07a7145c500914ed8ab704a7a3828a5134e85f8b4458e1fee887306867d6/mlx-0.27.1-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:a033b65fe46425ad5032867d5a71a556a5168108d89aa7092b457556c70d84fc", size = 557679, upload-time = "2025-07-25T22:55:31.942Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ae/b3e46904ea04b5badb77195169880733f09976a3dfc81c954b99f9adbbc4/mlx-0.27.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:2836c6fd9803dc0c6cd06f204e31b3e0191e6c5b6bc8570b28661d926908cba3", size = 530556, upload-time = "2025-07-25T22:56:13.171Z" }, - { url = "https://files.pythonhosted.org/packages/6e/24/85f5a7dfcf0b4974aa43a2f6dc0d59dfc04e4a1051aacebd7e7810b823ff/mlx-0.27.1-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:8b0566054c46d84c470cc99cda2afc3914ad6c7808fbb724dc1ec235e5b2a98c", size = 530559, upload-time = "2025-07-25T22:55:39.055Z" }, - { url = "https://files.pythonhosted.org/packages/14/bd/91ad900837a3760ba056863c1350f0deabc3e462c3999b4d5ea875368177/mlx-0.27.1-cp310-cp310-manylinux_2_35_x86_64.whl", hash = "sha256:91ef93ce09900c9a8ca662cf34e3c39ab5af2762822ecd6b12fecae518be167f", size = 628183, upload-time = "2025-07-25T22:58:11.553Z" }, - { url = "https://files.pythonhosted.org/packages/ac/63/88cb9a5019bea21244385eacc4c64deb4d074a8bc3b4b6d2d97cdacf97a2/mlx-0.27.1-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:d2e5dedbfbcbe558e51a5c476ca6a18e307676f9e49854eb27e53778bc474699", size = 557582, upload-time = "2025-07-25T22:55:22.243Z" }, - { url = "https://files.pythonhosted.org/packages/fa/87/c2d7343e7b054481c52e23a190911c40aed4f8c77a8dfeda1f48d5cb520a/mlx-0.27.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:9f04b9778897a879c9ca22e5413dfa1efc192d86d7211b184e079efec49dfb8b", size = 530820, upload-time = "2025-07-25T22:55:34.121Z" }, - { url = "https://files.pythonhosted.org/packages/06/bf/20497ca7411028baa56372c20e94a3eaddac973155b415f08fc12592c2cf/mlx-0.27.1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:01d794f9e390438ab4f942a18d9a8ca65bef10c2c2007ef38ca988d039d6d9d3", size = 530821, upload-time = "2025-07-25T22:55:28.847Z" }, - { url = "https://files.pythonhosted.org/packages/48/68/234a0d846576502ea1bf8ea478c764d87eec9042349e298d2aea58c4e8e9/mlx-0.27.1-cp311-cp311-manylinux_2_35_x86_64.whl", hash = "sha256:fae11432d0639789f1e172b19b35ac8987c8ab9716e55a23fc7a170d6545fc33", size = 628500, upload-time = "2025-07-25T22:57:59.556Z" }, - { url = "https://files.pythonhosted.org/packages/65/43/125102bbb2be6825880ae2dc8d8702f99cfa7753407f574457b36e422218/mlx-0.27.1-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:0c570c9afb57c697bd864504115be8a7c4de97f0b80557a597d496ee426a6812", size = 549869, upload-time = "2025-07-25T22:55:32.698Z" }, - { url = "https://files.pythonhosted.org/packages/f3/79/0bf681700fc8b165517e907f9ec777b5a5d628004a65a777148f68c6baa0/mlx-0.27.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ccff7bbbd9df302b26e79013ef6d0c3531c9ba5963ead521e2d85856811b86a0", size = 531671, upload-time = "2025-07-25T22:57:03.392Z" }, - { url = "https://files.pythonhosted.org/packages/ec/97/f1367b4892bef7f78e38737d3a28094e93124f11684a28a9e92ed5a13b2b/mlx-0.27.1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9ccadaed449c07dfeae484620992b904c17dfea7564f8df63095c60eed3af02b", size = 531672, upload-time = "2025-07-25T22:55:35.779Z" }, - { url = "https://files.pythonhosted.org/packages/9c/0f/3ebec0806ed2c5ba8ba151394cd62a46b4d83ea347da33af91b86d8969d4/mlx-0.27.1-cp312-cp312-manylinux_2_35_x86_64.whl", hash = "sha256:742c413e75605b71db69379a176da63e32ba19b9e9ad03b8763adbd1fcfcd394", size = 621661, upload-time = "2025-07-25T22:58:00.96Z" }, - { url = "https://files.pythonhosted.org/packages/86/f6/4324386b0764deb692e14a97282a348a9a938aa8b441bf8b6c7599f418d4/mlx-0.27.1-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:803669a28031766c2b0fe94c0a3bfd030184e706092f0a831b33620c1e2ef865", size = 549847, upload-time = "2025-07-25T22:55:17.581Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4b/3194ccb03527a050c04d837d731a11599f8620e6ce16d3971798caae1d44/mlx-0.27.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e9649b3d86ce564000797384510c9d07af38a9ce2a07df8e2f7c6a3e0f0f059e", size = 531664, upload-time = "2025-07-25T22:56:02.928Z" }, - { url = "https://files.pythonhosted.org/packages/cc/57/a6e0d8dc6e7ba08a64d71fb89d743e77446040113ea1dbb7950be8f60f39/mlx-0.27.1-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:5c501ceec7c6aa2ea1c850dd4e14e679f5416a142264b9d5d405a4e0aeb991b2", size = 531663, upload-time = "2025-07-25T22:55:38.62Z" }, - { url = "https://files.pythonhosted.org/packages/48/96/6932e0fa866d08cdf77a3fc37cf624e4cac8960d2e297c3fd80afb49417d/mlx-0.27.1-cp313-cp313-manylinux_2_35_x86_64.whl", hash = "sha256:42bfbabdcd0b7aa1c94748c8963e66680a3cf3f599b01036db14e496bf276eb8", size = 621609, upload-time = "2025-07-25T22:58:21.477Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/07a7145c500914ed8ab704a7a3828a5134e85f8b4458e1fee887306867d6/mlx-0.27.1-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:a033b65fe46425ad5032867d5a71a556a5168108d89aa7092b457556c70d84fc", size = 557679 }, + { url = "https://files.pythonhosted.org/packages/aa/ae/b3e46904ea04b5badb77195169880733f09976a3dfc81c954b99f9adbbc4/mlx-0.27.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:2836c6fd9803dc0c6cd06f204e31b3e0191e6c5b6bc8570b28661d926908cba3", size = 530556 }, + { url = "https://files.pythonhosted.org/packages/6e/24/85f5a7dfcf0b4974aa43a2f6dc0d59dfc04e4a1051aacebd7e7810b823ff/mlx-0.27.1-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:8b0566054c46d84c470cc99cda2afc3914ad6c7808fbb724dc1ec235e5b2a98c", size = 530559 }, + { url = "https://files.pythonhosted.org/packages/14/bd/91ad900837a3760ba056863c1350f0deabc3e462c3999b4d5ea875368177/mlx-0.27.1-cp310-cp310-manylinux_2_35_x86_64.whl", hash = "sha256:91ef93ce09900c9a8ca662cf34e3c39ab5af2762822ecd6b12fecae518be167f", size = 628183 }, + { url = "https://files.pythonhosted.org/packages/ac/63/88cb9a5019bea21244385eacc4c64deb4d074a8bc3b4b6d2d97cdacf97a2/mlx-0.27.1-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:d2e5dedbfbcbe558e51a5c476ca6a18e307676f9e49854eb27e53778bc474699", size = 557582 }, + { url = "https://files.pythonhosted.org/packages/fa/87/c2d7343e7b054481c52e23a190911c40aed4f8c77a8dfeda1f48d5cb520a/mlx-0.27.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:9f04b9778897a879c9ca22e5413dfa1efc192d86d7211b184e079efec49dfb8b", size = 530820 }, + { url = "https://files.pythonhosted.org/packages/06/bf/20497ca7411028baa56372c20e94a3eaddac973155b415f08fc12592c2cf/mlx-0.27.1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:01d794f9e390438ab4f942a18d9a8ca65bef10c2c2007ef38ca988d039d6d9d3", size = 530821 }, + { url = "https://files.pythonhosted.org/packages/48/68/234a0d846576502ea1bf8ea478c764d87eec9042349e298d2aea58c4e8e9/mlx-0.27.1-cp311-cp311-manylinux_2_35_x86_64.whl", hash = "sha256:fae11432d0639789f1e172b19b35ac8987c8ab9716e55a23fc7a170d6545fc33", size = 628500 }, + { url = "https://files.pythonhosted.org/packages/65/43/125102bbb2be6825880ae2dc8d8702f99cfa7753407f574457b36e422218/mlx-0.27.1-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:0c570c9afb57c697bd864504115be8a7c4de97f0b80557a597d496ee426a6812", size = 549869 }, + { url = "https://files.pythonhosted.org/packages/f3/79/0bf681700fc8b165517e907f9ec777b5a5d628004a65a777148f68c6baa0/mlx-0.27.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ccff7bbbd9df302b26e79013ef6d0c3531c9ba5963ead521e2d85856811b86a0", size = 531671 }, + { url = "https://files.pythonhosted.org/packages/ec/97/f1367b4892bef7f78e38737d3a28094e93124f11684a28a9e92ed5a13b2b/mlx-0.27.1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9ccadaed449c07dfeae484620992b904c17dfea7564f8df63095c60eed3af02b", size = 531672 }, + { url = "https://files.pythonhosted.org/packages/9c/0f/3ebec0806ed2c5ba8ba151394cd62a46b4d83ea347da33af91b86d8969d4/mlx-0.27.1-cp312-cp312-manylinux_2_35_x86_64.whl", hash = "sha256:742c413e75605b71db69379a176da63e32ba19b9e9ad03b8763adbd1fcfcd394", size = 621661 }, + { url = "https://files.pythonhosted.org/packages/86/f6/4324386b0764deb692e14a97282a348a9a938aa8b441bf8b6c7599f418d4/mlx-0.27.1-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:803669a28031766c2b0fe94c0a3bfd030184e706092f0a831b33620c1e2ef865", size = 549847 }, + { url = "https://files.pythonhosted.org/packages/cf/4b/3194ccb03527a050c04d837d731a11599f8620e6ce16d3971798caae1d44/mlx-0.27.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e9649b3d86ce564000797384510c9d07af38a9ce2a07df8e2f7c6a3e0f0f059e", size = 531664 }, + { url = "https://files.pythonhosted.org/packages/cc/57/a6e0d8dc6e7ba08a64d71fb89d743e77446040113ea1dbb7950be8f60f39/mlx-0.27.1-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:5c501ceec7c6aa2ea1c850dd4e14e679f5416a142264b9d5d405a4e0aeb991b2", size = 531663 }, + { url = "https://files.pythonhosted.org/packages/48/96/6932e0fa866d08cdf77a3fc37cf624e4cac8960d2e297c3fd80afb49417d/mlx-0.27.1-cp313-cp313-manylinux_2_35_x86_64.whl", hash = "sha256:42bfbabdcd0b7aa1c94748c8963e66680a3cf3f599b01036db14e496bf276eb8", size = 621609 }, ] [[package]] @@ -802,94 +854,69 @@ name = "mlx-metal" version = "0.27.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/77/89fa3327011f018638c9e943e1edc081ce9ca0ed296fe64d6daf93c6ff51/mlx_metal-0.27.1-py3-none-macosx_13_0_arm64.whl", hash = "sha256:c66d9b1adb3c0ea19492fba6493f672bc7542e65dd65f7e2995918815fbeb907", size = 33523035, upload-time = "2025-07-25T22:58:02.533Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a8/ac706ad6ce834834762d5146d791f77710efc896c13ef47fd7d672099056/mlx_metal-0.27.1-py3-none-macosx_14_0_arm64.whl", hash = "sha256:fe4415ddd242974d91c7ca0699cd01507d17da8a5ba304122ef137cdb5e7fff4", size = 32926383, upload-time = "2025-07-25T22:57:54.194Z" }, - { url = "https://files.pythonhosted.org/packages/78/77/6963681fb54ecaa0ae5de4209c15504a803a0edd1a33fd074e6c558fd5e0/mlx_metal-0.27.1-py3-none-macosx_15_0_arm64.whl", hash = "sha256:d025dea30bda8baa32c928cfa333eac64a5adc8d07656f8fc55072d99403ebc9", size = 32897065, upload-time = "2025-07-25T22:58:26.362Z" }, + { url = "https://files.pythonhosted.org/packages/8b/77/89fa3327011f018638c9e943e1edc081ce9ca0ed296fe64d6daf93c6ff51/mlx_metal-0.27.1-py3-none-macosx_13_0_arm64.whl", hash = "sha256:c66d9b1adb3c0ea19492fba6493f672bc7542e65dd65f7e2995918815fbeb907", size = 33523035 }, + { url = "https://files.pythonhosted.org/packages/d7/a8/ac706ad6ce834834762d5146d791f77710efc896c13ef47fd7d672099056/mlx_metal-0.27.1-py3-none-macosx_14_0_arm64.whl", hash = "sha256:fe4415ddd242974d91c7ca0699cd01507d17da8a5ba304122ef137cdb5e7fff4", size = 32926383 }, + { url = "https://files.pythonhosted.org/packages/78/77/6963681fb54ecaa0ae5de4209c15504a803a0edd1a33fd074e6c558fd5e0/mlx_metal-0.27.1-py3-none-macosx_15_0_arm64.whl", hash = "sha256:d025dea30bda8baa32c928cfa333eac64a5adc8d07656f8fc55072d99403ebc9", size = 32897065 }, ] [[package]] name = "more-itertools" version = "10.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ce/a0/834b0cebabbfc7e311f30b46c8188790a37f89fc8d756660346fe5abfd09/more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3", size = 127671, upload-time = "2025-04-22T14:17:41.838Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/a0/834b0cebabbfc7e311f30b46c8188790a37f89fc8d756660346fe5abfd09/more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3", size = 127671 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e", size = 65278, upload-time = "2025-04-22T14:17:40.49Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e", size = 65278 }, ] [[package]] name = "mpmath" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 }, ] [[package]] name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, -] - -[[package]] -name = "networkx" -version = "3.5" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 }, ] [[package]] name = "nh3" version = "0.2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2c/36/47a2b527c65321ffa4f3231dadccb995fb8737a07a9f837d4a72b4442ad6/nh3-0.2.22.tar.gz", hash = "sha256:dbfaa924ba226331c75896a64fe161a0cbd21172e4da687b2a69b5101db2c3e9", size = 18326, upload-time = "2025-07-15T13:01:46.395Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/36/47a2b527c65321ffa4f3231dadccb995fb8737a07a9f837d4a72b4442ad6/nh3-0.2.22.tar.gz", hash = "sha256:dbfaa924ba226331c75896a64fe161a0cbd21172e4da687b2a69b5101db2c3e9", size = 18326 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/cb/72c9173b4dcb86d1afbc0e39336c9272c5a8a468d3c0f931202d8d56e840/nh3-0.2.22-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4743c9132e2ccf2109af88ce16074c5a7068df85be8f7b9840dbe683e50b9461", size = 1376436, upload-time = "2025-07-15T13:01:13.722Z" }, - { url = "https://files.pythonhosted.org/packages/02/f7/6bc7f88dac93971eaad9d5f01576e946c920c479c7f1a3f32e25b470e17a/nh3-0.2.22-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca015dbd477e20a29bee8660a966523c677da0c34dfeb474c6acb64462fbfc15", size = 771664, upload-time = "2025-07-15T13:01:15.346Z" }, - { url = "https://files.pythonhosted.org/packages/11/06/b24ea80bcc3f1606f1152164ef7b0abc74d776cd1966912bd43e9d1fb232/nh3-0.2.22-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d10f4c195f3b84a8127417ec940e1393062a3e2f05d405270dde7846854e22c", size = 804369, upload-time = "2025-07-15T13:01:16.974Z" }, - { url = "https://files.pythonhosted.org/packages/18/74/7cfee6348a2afbbb6434c9d74131bba421d3e372d683bdf4b7961ff19069/nh3-0.2.22-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9bbeb3d253c1026a46e7b23bc2698fe1f00641b5a7bdad8e4c8937daaa1f2b51", size = 965567, upload-time = "2025-07-15T13:01:18.288Z" }, - { url = "https://files.pythonhosted.org/packages/91/f2/9250a435feebd078adccfcccf880ddce1923d653bcc6ac30eb5acb16c7e3/nh3-0.2.22-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:b71ea8e987923e2976a99e4bb17e39cc186c93a330712075650e6143cb2fa89b", size = 1043132, upload-time = "2025-07-15T13:01:19.629Z" }, - { url = "https://files.pythonhosted.org/packages/97/f2/87b10ba4706915292dc1aec63ef975abd30b22cbe7d75f750792174c207b/nh3-0.2.22-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:56b328457370401aaf2039a5039d7f587e72b2c08bc95dfe807ad96ae98e83e4", size = 965457, upload-time = "2025-07-15T13:01:21.541Z" }, - { url = "https://files.pythonhosted.org/packages/90/10/b03c17a142805b87fca4e6841a88cdc82830e697ef91faae23533eb25052/nh3-0.2.22-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e9762845ee47372df425b52ec4a133e994dbbedf95ad61eea4bfe6cb4d1401b4", size = 951401, upload-time = "2025-07-15T13:01:23.019Z" }, - { url = "https://files.pythonhosted.org/packages/54/8b/68e2ae236a9a1f3d68bda5cc1984630ecc7bf217b8416cc6a973d021e9cc/nh3-0.2.22-cp313-cp313t-win32.whl", hash = "sha256:c61fbfe4131ceff1c83ed0663c39aebb72bd26c6b22157b14da0b43287ea15ed", size = 566170, upload-time = "2025-07-15T13:01:24.144Z" }, - { url = "https://files.pythonhosted.org/packages/0a/88/4e04f39e0582f3f2b3d39d843fd0eacfcd5d3400c93a688d9035279ccd9b/nh3-0.2.22-cp313-cp313t-win_amd64.whl", hash = "sha256:4f47991a9819f644918aebc2a93d175562c7c0c2ec41cbc525fbdbf676793c03", size = 574528, upload-time = "2025-07-15T13:01:25.461Z" }, - { url = "https://files.pythonhosted.org/packages/2d/46/4061064aff600d0770a7bf1d11d66555a0000ce5fb9ea35963814061776d/nh3-0.2.22-cp313-cp313t-win_arm64.whl", hash = "sha256:29baf3c22d6e9d26325128600355baeddb52eecd6206780621f84537ad4db966", size = 558648, upload-time = "2025-07-15T13:01:26.89Z" }, - { url = "https://files.pythonhosted.org/packages/41/95/cc1dfd35caf08a1299659d29b7c705e09f71a3264c764b787a4d173c7ab0/nh3-0.2.22-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2a6e33de39218eded7187aaf05aea71884b1b8002d50d080a95df734d3ad3a44", size = 1390150, upload-time = "2025-07-15T13:01:28.362Z" }, - { url = "https://files.pythonhosted.org/packages/fc/89/877529f1f8fab696fc92eafed30165db7a4c9ececad797d5963527460c63/nh3-0.2.22-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb91663dcf139da2009d452aad23094e01579c45a6101b2a0b0c28181b8c496f", size = 796899, upload-time = "2025-07-15T13:01:29.523Z" }, - { url = "https://files.pythonhosted.org/packages/51/38/2795eaa63210a6128b799598ab478605004af3bd22c1c7df70e0041424a5/nh3-0.2.22-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f45f8a2347da8c9682f9b015cf9d492fdb8440cfb7bd523cceda1a705fd5a4bd", size = 783783, upload-time = "2025-07-15T13:01:30.721Z" }, - { url = "https://files.pythonhosted.org/packages/d5/fc/c32928682c0562a92bfb200919189387645e3bf09b79948ccfbb0fa13b5e/nh3-0.2.22-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f94ed44f433e2f8799f5285000f799e9f3ca66559328e40066c0f96c4fbad346", size = 994730, upload-time = "2025-07-15T13:01:31.841Z" }, - { url = "https://files.pythonhosted.org/packages/af/43/c382b1fca4e503f63f83d38897c73327f592e6d23a2c5b2689a8f2925478/nh3-0.2.22-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74039dfd41107bbb298fe814c4be5c39d66124855ff549d216e4947a69d3d9a1", size = 948349, upload-time = "2025-07-15T13:01:32.984Z" }, - { url = "https://files.pythonhosted.org/packages/36/21/15987b0809147caac82d9121d7459bed79f7720c3b1211ca7f9fa7b7cb0f/nh3-0.2.22-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:60e1d4429762745a5a346277dc3378aade0e24632f75077f0da3bfc29bf385fd", size = 897381, upload-time = "2025-07-15T13:01:34.104Z" }, - { url = "https://files.pythonhosted.org/packages/67/58/41ea85e83d239cd964b00a59ac88a5f9a5b95de8ceebb498b370e818da52/nh3-0.2.22-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9e93c67d1ec8db6d96e323832bd267cdfe94bdb8cc6adc88cbc0908ff59329", size = 777724, upload-time = "2025-07-15T13:01:35.268Z" }, - { url = "https://files.pythonhosted.org/packages/2f/c0/dc723ba6c84409ff5498ca023bd11f0066a9e6349e896fb5447f99fab5f5/nh3-0.2.22-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f186eea285ebf941fbaaecd1cd445e9506552a15435140ca73ca029334715da", size = 810348, upload-time = "2025-07-15T13:01:36.684Z" }, - { url = "https://files.pythonhosted.org/packages/f4/d7/6a83583072778aaee6895630fe78e0e35de2d8cabeddf3b42db39cbc2105/nh3-0.2.22-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87e532f885937c460ccbdc1b5ea03b0e420de8ef12dd5857621706298857b9aa", size = 972880, upload-time = "2025-07-15T13:01:38.163Z" }, - { url = "https://files.pythonhosted.org/packages/22/27/652cba516e29e761bda99523af498380f1b1eb92ef82a691225125055009/nh3-0.2.22-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:fee209eb0d93830908e4f6fc549c08766def701f5681de2779637a00d48f288f", size = 1048447, upload-time = "2025-07-15T13:01:39.31Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/1016f07ec672195803991ce5c91f059a10e438e6bdf3cd3abe304dea284f/nh3-0.2.22-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:10e8d0a833431860620f7f1434792607ca12cdfda81450a2678b8d69642eda69", size = 971729, upload-time = "2025-07-15T13:01:40.51Z" }, - { url = "https://files.pythonhosted.org/packages/99/cf/ea5fc35a5f5c4b5729c557cf95df8f124fa731bc1414ab338b71003d63af/nh3-0.2.22-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:adbb35826fad998f88f68b969e3936dff53b70052c9e6e951ef9e49db9590611", size = 956978, upload-time = "2025-07-15T13:01:41.56Z" }, - { url = "https://files.pythonhosted.org/packages/11/bf/dd35d217034564dc0cab66b20c17b918a646e50b2c498728021d878d5770/nh3-0.2.22-cp38-abi3-win32.whl", hash = "sha256:bcac2a186791c422ce55522cae332c8fa2135795b7b510e2475cb95a44f7b0ce", size = 572115, upload-time = "2025-07-15T13:01:42.659Z" }, - { url = "https://files.pythonhosted.org/packages/78/7b/fd742f962fef24f8432500381b339b220747ffdb2d654f15e620b22a9c9a/nh3-0.2.22-cp38-abi3-win_amd64.whl", hash = "sha256:a78a13f5bf5901f5de50580a74058a10734d3e836144cb090f0304ec5deb3df7", size = 578434, upload-time = "2025-07-15T13:01:44.022Z" }, - { url = "https://files.pythonhosted.org/packages/ed/50/5a5e05b011cb1feb28ee789bcb64d4e9f5fa145c6533001bffadec8448d7/nh3-0.2.22-cp38-abi3-win_arm64.whl", hash = "sha256:602ad5229c81a287c8632ea1bf2d6b3654b3e208b57b0bcab5beec93ff91866f", size = 563625, upload-time = "2025-07-15T13:01:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fb/cb/72c9173b4dcb86d1afbc0e39336c9272c5a8a468d3c0f931202d8d56e840/nh3-0.2.22-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4743c9132e2ccf2109af88ce16074c5a7068df85be8f7b9840dbe683e50b9461", size = 1376436 }, + { url = "https://files.pythonhosted.org/packages/02/f7/6bc7f88dac93971eaad9d5f01576e946c920c479c7f1a3f32e25b470e17a/nh3-0.2.22-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca015dbd477e20a29bee8660a966523c677da0c34dfeb474c6acb64462fbfc15", size = 771664 }, + { url = "https://files.pythonhosted.org/packages/11/06/b24ea80bcc3f1606f1152164ef7b0abc74d776cd1966912bd43e9d1fb232/nh3-0.2.22-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d10f4c195f3b84a8127417ec940e1393062a3e2f05d405270dde7846854e22c", size = 804369 }, + { url = "https://files.pythonhosted.org/packages/18/74/7cfee6348a2afbbb6434c9d74131bba421d3e372d683bdf4b7961ff19069/nh3-0.2.22-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9bbeb3d253c1026a46e7b23bc2698fe1f00641b5a7bdad8e4c8937daaa1f2b51", size = 965567 }, + { url = "https://files.pythonhosted.org/packages/91/f2/9250a435feebd078adccfcccf880ddce1923d653bcc6ac30eb5acb16c7e3/nh3-0.2.22-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:b71ea8e987923e2976a99e4bb17e39cc186c93a330712075650e6143cb2fa89b", size = 1043132 }, + { url = "https://files.pythonhosted.org/packages/97/f2/87b10ba4706915292dc1aec63ef975abd30b22cbe7d75f750792174c207b/nh3-0.2.22-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:56b328457370401aaf2039a5039d7f587e72b2c08bc95dfe807ad96ae98e83e4", size = 965457 }, + { url = "https://files.pythonhosted.org/packages/90/10/b03c17a142805b87fca4e6841a88cdc82830e697ef91faae23533eb25052/nh3-0.2.22-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e9762845ee47372df425b52ec4a133e994dbbedf95ad61eea4bfe6cb4d1401b4", size = 951401 }, + { url = "https://files.pythonhosted.org/packages/54/8b/68e2ae236a9a1f3d68bda5cc1984630ecc7bf217b8416cc6a973d021e9cc/nh3-0.2.22-cp313-cp313t-win32.whl", hash = "sha256:c61fbfe4131ceff1c83ed0663c39aebb72bd26c6b22157b14da0b43287ea15ed", size = 566170 }, + { url = "https://files.pythonhosted.org/packages/0a/88/4e04f39e0582f3f2b3d39d843fd0eacfcd5d3400c93a688d9035279ccd9b/nh3-0.2.22-cp313-cp313t-win_amd64.whl", hash = "sha256:4f47991a9819f644918aebc2a93d175562c7c0c2ec41cbc525fbdbf676793c03", size = 574528 }, + { url = "https://files.pythonhosted.org/packages/2d/46/4061064aff600d0770a7bf1d11d66555a0000ce5fb9ea35963814061776d/nh3-0.2.22-cp313-cp313t-win_arm64.whl", hash = "sha256:29baf3c22d6e9d26325128600355baeddb52eecd6206780621f84537ad4db966", size = 558648 }, + { url = "https://files.pythonhosted.org/packages/41/95/cc1dfd35caf08a1299659d29b7c705e09f71a3264c764b787a4d173c7ab0/nh3-0.2.22-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2a6e33de39218eded7187aaf05aea71884b1b8002d50d080a95df734d3ad3a44", size = 1390150 }, + { url = "https://files.pythonhosted.org/packages/fc/89/877529f1f8fab696fc92eafed30165db7a4c9ececad797d5963527460c63/nh3-0.2.22-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb91663dcf139da2009d452aad23094e01579c45a6101b2a0b0c28181b8c496f", size = 796899 }, + { url = "https://files.pythonhosted.org/packages/51/38/2795eaa63210a6128b799598ab478605004af3bd22c1c7df70e0041424a5/nh3-0.2.22-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f45f8a2347da8c9682f9b015cf9d492fdb8440cfb7bd523cceda1a705fd5a4bd", size = 783783 }, + { url = "https://files.pythonhosted.org/packages/d5/fc/c32928682c0562a92bfb200919189387645e3bf09b79948ccfbb0fa13b5e/nh3-0.2.22-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f94ed44f433e2f8799f5285000f799e9f3ca66559328e40066c0f96c4fbad346", size = 994730 }, + { url = "https://files.pythonhosted.org/packages/af/43/c382b1fca4e503f63f83d38897c73327f592e6d23a2c5b2689a8f2925478/nh3-0.2.22-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74039dfd41107bbb298fe814c4be5c39d66124855ff549d216e4947a69d3d9a1", size = 948349 }, + { url = "https://files.pythonhosted.org/packages/36/21/15987b0809147caac82d9121d7459bed79f7720c3b1211ca7f9fa7b7cb0f/nh3-0.2.22-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:60e1d4429762745a5a346277dc3378aade0e24632f75077f0da3bfc29bf385fd", size = 897381 }, + { url = "https://files.pythonhosted.org/packages/67/58/41ea85e83d239cd964b00a59ac88a5f9a5b95de8ceebb498b370e818da52/nh3-0.2.22-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9e93c67d1ec8db6d96e323832bd267cdfe94bdb8cc6adc88cbc0908ff59329", size = 777724 }, + { url = "https://files.pythonhosted.org/packages/2f/c0/dc723ba6c84409ff5498ca023bd11f0066a9e6349e896fb5447f99fab5f5/nh3-0.2.22-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f186eea285ebf941fbaaecd1cd445e9506552a15435140ca73ca029334715da", size = 810348 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/6a83583072778aaee6895630fe78e0e35de2d8cabeddf3b42db39cbc2105/nh3-0.2.22-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87e532f885937c460ccbdc1b5ea03b0e420de8ef12dd5857621706298857b9aa", size = 972880 }, + { url = "https://files.pythonhosted.org/packages/22/27/652cba516e29e761bda99523af498380f1b1eb92ef82a691225125055009/nh3-0.2.22-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:fee209eb0d93830908e4f6fc549c08766def701f5681de2779637a00d48f288f", size = 1048447 }, + { url = "https://files.pythonhosted.org/packages/21/81/1016f07ec672195803991ce5c91f059a10e438e6bdf3cd3abe304dea284f/nh3-0.2.22-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:10e8d0a833431860620f7f1434792607ca12cdfda81450a2678b8d69642eda69", size = 971729 }, + { url = "https://files.pythonhosted.org/packages/99/cf/ea5fc35a5f5c4b5729c557cf95df8f124fa731bc1414ab338b71003d63af/nh3-0.2.22-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:adbb35826fad998f88f68b969e3936dff53b70052c9e6e951ef9e49db9590611", size = 956978 }, + { url = "https://files.pythonhosted.org/packages/11/bf/dd35d217034564dc0cab66b20c17b918a646e50b2c498728021d878d5770/nh3-0.2.22-cp38-abi3-win32.whl", hash = "sha256:bcac2a186791c422ce55522cae332c8fa2135795b7b510e2475cb95a44f7b0ce", size = 572115 }, + { url = "https://files.pythonhosted.org/packages/78/7b/fd742f962fef24f8432500381b339b220747ffdb2d654f15e620b22a9c9a/nh3-0.2.22-cp38-abi3-win_amd64.whl", hash = "sha256:a78a13f5bf5901f5de50580a74058a10734d3e836144cb090f0304ec5deb3df7", size = 578434 }, + { url = "https://files.pythonhosted.org/packages/ed/50/5a5e05b011cb1feb28ee789bcb64d4e9f5fa145c6533001bffadec8448d7/nh3-0.2.22-cp38-abi3-win_arm64.whl", hash = "sha256:602ad5229c81a287c8632ea1bf2d6b3654b3e208b57b0bcab5beec93ff91866f", size = 563625 }, ] [[package]] @@ -897,66 +924,81 @@ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, - { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, - { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, - { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, - { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, - { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, - { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, - { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, - { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, - { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, - { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, - { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, - { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, - { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, - { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, - { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, - { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, - { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, - { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, - { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, - { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, - { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, - { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, - { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, - { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, - { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, - { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245 }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048 }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542 }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301 }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320 }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050 }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034 }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185 }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149 }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620 }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828 }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006 }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765 }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736 }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719 }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072 }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213 }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632 }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532 }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885 }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467 }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144 }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217 }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014 }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935 }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122 }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143 }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260 }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225 }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374 }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391 }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754 }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476 }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666 }, ] [[package]] @@ -964,68 +1006,77 @@ name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload-time = "2025-06-21T12:28:33.469Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/c7/87c64d7ab426156530676000c94784ef55676df2f13b2796f97722464124/numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070", size = 21199346, upload-time = "2025-06-21T11:47:47.57Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/0966c2f44beeac12af8d836e5b5f826a407cf34c45cb73ddcdfce9f5960b/numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae", size = 14361143, upload-time = "2025-06-21T11:48:10.766Z" }, - { url = "https://files.pythonhosted.org/packages/7d/31/6e35a247acb1bfc19226791dfc7d4c30002cd4e620e11e58b0ddf836fe52/numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a", size = 5378989, upload-time = "2025-06-21T11:48:19.998Z" }, - { url = "https://files.pythonhosted.org/packages/b0/25/93b621219bb6f5a2d4e713a824522c69ab1f06a57cd571cda70e2e31af44/numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e", size = 6912890, upload-time = "2025-06-21T11:48:31.376Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/6b06ed98d11fb32e27fb59468b42383f3877146d3ee639f733776b6ac596/numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db", size = 14569032, upload-time = "2025-06-21T11:48:52.563Z" }, - { url = "https://files.pythonhosted.org/packages/75/c9/9bec03675192077467a9c7c2bdd1f2e922bd01d3a69b15c3a0fdcd8548f6/numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb", size = 16930354, upload-time = "2025-06-21T11:49:17.473Z" }, - { url = "https://files.pythonhosted.org/packages/6a/e2/5756a00cabcf50a3f527a0c968b2b4881c62b1379223931853114fa04cda/numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93", size = 15879605, upload-time = "2025-06-21T11:49:41.161Z" }, - { url = "https://files.pythonhosted.org/packages/ff/86/a471f65f0a86f1ca62dcc90b9fa46174dd48f50214e5446bc16a775646c5/numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115", size = 18666994, upload-time = "2025-06-21T11:50:08.516Z" }, - { url = "https://files.pythonhosted.org/packages/43/a6/482a53e469b32be6500aaf61cfafd1de7a0b0d484babf679209c3298852e/numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369", size = 6603672, upload-time = "2025-06-21T11:50:19.584Z" }, - { url = "https://files.pythonhosted.org/packages/6b/fb/bb613f4122c310a13ec67585c70e14b03bfc7ebabd24f4d5138b97371d7c/numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff", size = 13024015, upload-time = "2025-06-21T11:50:39.139Z" }, - { url = "https://files.pythonhosted.org/packages/51/58/2d842825af9a0c041aca246dc92eb725e1bc5e1c9ac89712625db0c4e11c/numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a", size = 10456989, upload-time = "2025-06-21T11:50:55.616Z" }, - { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload-time = "2025-06-21T12:15:30.845Z" }, - { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload-time = "2025-06-21T12:15:52.23Z" }, - { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload-time = "2025-06-21T12:16:01.434Z" }, - { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload-time = "2025-06-21T12:16:11.895Z" }, - { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload-time = "2025-06-21T12:16:32.611Z" }, - { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload-time = "2025-06-21T12:16:57.439Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload-time = "2025-06-21T12:17:20.638Z" }, - { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload-time = "2025-06-21T12:17:47.938Z" }, - { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload-time = "2025-06-21T12:17:58.475Z" }, - { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload-time = "2025-06-21T12:18:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload-time = "2025-06-21T12:18:33.585Z" }, - { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload-time = "2025-06-21T12:19:04.103Z" }, - { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload-time = "2025-06-21T12:19:25.599Z" }, - { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload-time = "2025-06-21T12:19:34.782Z" }, - { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload-time = "2025-06-21T12:19:45.228Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload-time = "2025-06-21T12:20:06.544Z" }, - { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload-time = "2025-06-21T12:20:31.002Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload-time = "2025-06-21T12:20:54.322Z" }, - { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload-time = "2025-06-21T12:21:21.053Z" }, - { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload-time = "2025-06-21T12:25:07.447Z" }, - { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload-time = "2025-06-21T12:25:26.444Z" }, - { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload-time = "2025-06-21T12:25:42.196Z" }, - { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload-time = "2025-06-21T12:21:51.664Z" }, - { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload-time = "2025-06-21T12:22:13.583Z" }, - { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload-time = "2025-06-21T12:22:22.53Z" }, - { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload-time = "2025-06-21T12:22:33.629Z" }, - { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload-time = "2025-06-21T12:22:55.056Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload-time = "2025-06-21T12:23:20.53Z" }, - { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload-time = "2025-06-21T12:23:43.697Z" }, - { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload-time = "2025-06-21T12:24:10.708Z" }, - { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload-time = "2025-06-21T12:24:21.596Z" }, - { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload-time = "2025-06-21T12:24:40.644Z" }, - { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload-time = "2025-06-21T12:24:56.884Z" }, - { url = "https://files.pythonhosted.org/packages/e8/34/facc13b9b42ddca30498fc51f7f73c3d0f2be179943a4b4da8686e259740/numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3", size = 21070637, upload-time = "2025-06-21T12:26:12.518Z" }, - { url = "https://files.pythonhosted.org/packages/65/b6/41b705d9dbae04649b529fc9bd3387664c3281c7cd78b404a4efe73dcc45/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b", size = 5304087, upload-time = "2025-06-21T12:26:22.294Z" }, - { url = "https://files.pythonhosted.org/packages/7a/b4/fe3ac1902bff7a4934a22d49e1c9d71a623204d654d4cc43c6e8fe337fcb/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7", size = 6817588, upload-time = "2025-06-21T12:26:32.939Z" }, - { url = "https://files.pythonhosted.org/packages/ae/ee/89bedf69c36ace1ac8f59e97811c1f5031e179a37e4821c3a230bf750142/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df", size = 14399010, upload-time = "2025-06-21T12:26:54.086Z" }, - { url = "https://files.pythonhosted.org/packages/15/08/e00e7070ede29b2b176165eba18d6f9784d5349be3c0c1218338e79c27fd/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68", size = 16752042, upload-time = "2025-06-21T12:27:19.018Z" }, - { url = "https://files.pythonhosted.org/packages/48/6b/1c6b515a83d5564b1698a61efa245727c8feecf308f4091f565988519d20/numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb", size = 12927246, upload-time = "2025-06-21T12:27:38.618Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c7/87c64d7ab426156530676000c94784ef55676df2f13b2796f97722464124/numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070", size = 21199346 }, + { url = "https://files.pythonhosted.org/packages/58/0e/0966c2f44beeac12af8d836e5b5f826a407cf34c45cb73ddcdfce9f5960b/numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae", size = 14361143 }, + { url = "https://files.pythonhosted.org/packages/7d/31/6e35a247acb1bfc19226791dfc7d4c30002cd4e620e11e58b0ddf836fe52/numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a", size = 5378989 }, + { url = "https://files.pythonhosted.org/packages/b0/25/93b621219bb6f5a2d4e713a824522c69ab1f06a57cd571cda70e2e31af44/numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e", size = 6912890 }, + { url = "https://files.pythonhosted.org/packages/ef/60/6b06ed98d11fb32e27fb59468b42383f3877146d3ee639f733776b6ac596/numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db", size = 14569032 }, + { url = "https://files.pythonhosted.org/packages/75/c9/9bec03675192077467a9c7c2bdd1f2e922bd01d3a69b15c3a0fdcd8548f6/numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb", size = 16930354 }, + { url = "https://files.pythonhosted.org/packages/6a/e2/5756a00cabcf50a3f527a0c968b2b4881c62b1379223931853114fa04cda/numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93", size = 15879605 }, + { url = "https://files.pythonhosted.org/packages/ff/86/a471f65f0a86f1ca62dcc90b9fa46174dd48f50214e5446bc16a775646c5/numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115", size = 18666994 }, + { url = "https://files.pythonhosted.org/packages/43/a6/482a53e469b32be6500aaf61cfafd1de7a0b0d484babf679209c3298852e/numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369", size = 6603672 }, + { url = "https://files.pythonhosted.org/packages/6b/fb/bb613f4122c310a13ec67585c70e14b03bfc7ebabd24f4d5138b97371d7c/numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff", size = 13024015 }, + { url = "https://files.pythonhosted.org/packages/51/58/2d842825af9a0c041aca246dc92eb725e1bc5e1c9ac89712625db0c4e11c/numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a", size = 10456989 }, + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664 }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078 }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554 }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560 }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638 }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729 }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330 }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734 }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411 }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973 }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491 }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381 }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726 }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145 }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409 }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630 }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546 }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538 }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327 }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330 }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565 }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262 }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593 }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523 }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993 }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652 }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561 }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349 }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053 }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184 }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678 }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697 }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376 }, + { url = "https://files.pythonhosted.org/packages/e8/34/facc13b9b42ddca30498fc51f7f73c3d0f2be179943a4b4da8686e259740/numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3", size = 21070637 }, + { url = "https://files.pythonhosted.org/packages/65/b6/41b705d9dbae04649b529fc9bd3387664c3281c7cd78b404a4efe73dcc45/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b", size = 5304087 }, + { url = "https://files.pythonhosted.org/packages/7a/b4/fe3ac1902bff7a4934a22d49e1c9d71a623204d654d4cc43c6e8fe337fcb/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7", size = 6817588 }, + { url = "https://files.pythonhosted.org/packages/ae/ee/89bedf69c36ace1ac8f59e97811c1f5031e179a37e4821c3a230bf750142/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df", size = 14399010 }, + { url = "https://files.pythonhosted.org/packages/15/08/e00e7070ede29b2b176165eba18d6f9784d5349be3c0c1218338e79c27fd/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68", size = 16752042 }, + { url = "https://files.pythonhosted.org/packages/48/6b/1c6b515a83d5564b1698a61efa245727c8feecf308f4091f565988519d20/numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb", size = 12927246 }, ] [[package]] @@ -1033,12 +1084,16 @@ name = "nvidia-cublas-cu12" version = "12.6.4.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/af/eb/ff4b8c503fa1f1796679dce648854d58751982426e4e4b37d6fce49d259c/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08ed2686e9875d01b58e3cb379c6896df8e76c75e0d4a7f7dace3d7b6d9ef8eb", size = 393138322, upload-time = "2024-11-20T17:40:25.65Z" }, + { url = "https://files.pythonhosted.org/packages/af/eb/ff4b8c503fa1f1796679dce648854d58751982426e4e4b37d6fce49d259c/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08ed2686e9875d01b58e3cb379c6896df8e76c75e0d4a7f7dace3d7b6d9ef8eb", size = 393138322 }, + { url = "https://files.pythonhosted.org/packages/97/0d/f1f0cadbf69d5b9ef2e4f744c9466cb0a850741d08350736dfdb4aa89569/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:235f728d6e2a409eddf1df58d5b0921cf80cfa9e72b9f2775ccb7b4a87984668", size = 390794615 }, ] [[package]] @@ -1046,10 +1101,12 @@ name = "nvidia-cublas-cu12" version = "12.8.4.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, + { url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124 }, + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921 }, ] [[package]] @@ -1057,13 +1114,18 @@ name = "nvidia-cuda-cupti-cu12" version = "12.6.80" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/49/60/7b6497946d74bcf1de852a21824d63baad12cd417db4195fc1bfe59db953/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6768bad6cab4f19e8292125e5f1ac8aa7d1718704012a0e3272a6f61c4bce132", size = 8917980, upload-time = "2024-11-20T17:36:04.019Z" }, - { url = "https://files.pythonhosted.org/packages/a5/24/120ee57b218d9952c379d1e026c4479c9ece9997a4fb46303611ee48f038/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a3eff6cdfcc6a4c35db968a06fcadb061cbc7d6dde548609a941ff8701b98b73", size = 8917972, upload-time = "2024-10-01T16:58:06.036Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/2f6230cb715646c3a9425636e513227ce5c93c4d65823a734f4bb86d43c3/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:166ee35a3ff1587f2490364f90eeeb8da06cd867bd5b701bf7f9a02b78bc63fc", size = 8236764 }, + { url = "https://files.pythonhosted.org/packages/25/0f/acb326ac8fd26e13c799e0b4f3b2751543e1834f04d62e729485872198d4/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_aarch64.whl", hash = "sha256:358b4a1d35370353d52e12f0a7d1769fc01ff74a191689d3870b2123156184c4", size = 8236756 }, + { url = "https://files.pythonhosted.org/packages/49/60/7b6497946d74bcf1de852a21824d63baad12cd417db4195fc1bfe59db953/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6768bad6cab4f19e8292125e5f1ac8aa7d1718704012a0e3272a6f61c4bce132", size = 8917980 }, + { url = "https://files.pythonhosted.org/packages/a5/24/120ee57b218d9952c379d1e026c4479c9ece9997a4fb46303611ee48f038/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a3eff6cdfcc6a4c35db968a06fcadb061cbc7d6dde548609a941ff8701b98b73", size = 8917972 }, ] [[package]] @@ -1071,10 +1133,12 @@ name = "nvidia-cuda-cupti-cu12" version = "12.8.90" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1f/b3bd73445e5cb342727fd24fe1f7b748f690b460acadc27ea22f904502c8/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed", size = 9533318 }, + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621 }, ] [[package]] @@ -1082,12 +1146,16 @@ name = "nvidia-cuda-nvrtc-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/75/2e/46030320b5a80661e88039f59060d1790298b4718944a65a7f2aeda3d9e9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:35b0cc6ee3a9636d5409133e79273ce1f3fd087abb0532d2d2e8fff1fe9efc53", size = 23650380, upload-time = "2024-10-01T17:00:14.643Z" }, + { url = "https://files.pythonhosted.org/packages/f4/2f/72df534873235983cc0a5371c3661bebef7c4682760c275590b972c7b0f9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5847f1d6e5b757f1d2b3991a01082a44aad6f10ab3c5c0213fa3e25bddc25a13", size = 23162955 }, + { url = "https://files.pythonhosted.org/packages/75/2e/46030320b5a80661e88039f59060d1790298b4718944a65a7f2aeda3d9e9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:35b0cc6ee3a9636d5409133e79273ce1f3fd087abb0532d2d2e8fff1fe9efc53", size = 23650380 }, ] [[package]] @@ -1095,10 +1163,12 @@ name = "nvidia-cuda-nvrtc-cu12" version = "12.8.93" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029 }, + { url = "https://files.pythonhosted.org/packages/eb/d1/e50d0acaab360482034b84b6e27ee83c6738f7d32182b987f9c7a4e32962/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8", size = 43106076 }, ] [[package]] @@ -1106,13 +1176,18 @@ name = "nvidia-cuda-runtime-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/23/e717c5ac26d26cf39a27fbc076240fad2e3b817e5889d671b67f4f9f49c5/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba3b56a4f896141e25e19ab287cd71e52a6a0f4b29d0d31609f60e3b4d5219b7", size = 897690, upload-time = "2024-11-20T17:35:30.697Z" }, - { url = "https://files.pythonhosted.org/packages/f0/62/65c05e161eeddbafeca24dc461f47de550d9fa8a7e04eb213e32b55cfd99/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a84d15d5e1da416dd4774cb42edf5e954a3e60cc945698dc1d5be02321c44dc8", size = 897678, upload-time = "2024-10-01T16:57:33.821Z" }, + { url = "https://files.pythonhosted.org/packages/8f/ea/590b2ac00d772a8abd1c387a92b46486d2679ca6622fd25c18ff76265663/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6116fad3e049e04791c0256a9778c16237837c08b27ed8c8401e2e45de8d60cd", size = 908052 }, + { url = "https://files.pythonhosted.org/packages/b7/3d/159023799677126e20c8fd580cca09eeb28d5c5a624adc7f793b9aa8bbfa/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d461264ecb429c84c8879a7153499ddc7b19b5f8d84c204307491989a365588e", size = 908040 }, + { url = "https://files.pythonhosted.org/packages/e1/23/e717c5ac26d26cf39a27fbc076240fad2e3b817e5889d671b67f4f9f49c5/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba3b56a4f896141e25e19ab287cd71e52a6a0f4b29d0d31609f60e3b4d5219b7", size = 897690 }, + { url = "https://files.pythonhosted.org/packages/f0/62/65c05e161eeddbafeca24dc461f47de550d9fa8a7e04eb213e32b55cfd99/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a84d15d5e1da416dd4774cb42edf5e954a3e60cc945698dc1d5be02321c44dc8", size = 897678 }, ] [[package]] @@ -1120,10 +1195,12 @@ name = "nvidia-cuda-runtime-cu12" version = "12.8.90" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/f865a3b236e4647605ea34cc450900854ba123834a5f1598e160b9530c3a/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d", size = 965265 }, + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765 }, ] [[package]] @@ -1131,15 +1208,19 @@ name = "nvidia-cudnn-cu12" version = "9.5.1.17" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/78/4535c9c7f859a64781e43c969a3a7e84c54634e319a996d43ef32ce46f83/nvidia_cudnn_cu12-9.5.1.17-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:30ac3869f6db17d170e0e556dd6cc5eee02647abc31ca856634d5a40f82c15b2", size = 570988386, upload-time = "2024-10-25T19:54:26.39Z" }, + { url = "https://files.pythonhosted.org/packages/99/93/a201a12d3ec1caa8c6ac34c1c2f9eeb696b886f0c36ff23c638b46603bd0/nvidia_cudnn_cu12-9.5.1.17-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:9fd4584468533c61873e5fda8ca41bac3a38bcb2d12350830c69b0a96a7e4def", size = 570523509 }, + { url = "https://files.pythonhosted.org/packages/2a/78/4535c9c7f859a64781e43c969a3a7e84c54634e319a996d43ef32ce46f83/nvidia_cudnn_cu12-9.5.1.17-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:30ac3869f6db17d170e0e556dd6cc5eee02647abc31ca856634d5a40f82c15b2", size = 570988386 }, ] [[package]] @@ -1147,13 +1228,15 @@ name = "nvidia-cudnn-cu12" version = "9.10.2.21" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, + { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878 }, + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467 }, ] [[package]] @@ -1161,16 +1244,21 @@ name = "nvidia-cufft-cu12" version = "11.3.0.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/16/73727675941ab8e6ffd86ca3a4b7b47065edcca7a997920b831f8147c99d/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ccba62eb9cef5559abd5e0d54ceed2d9934030f51163df018532142a8ec533e5", size = 200221632, upload-time = "2024-11-20T17:41:32.357Z" }, - { url = "https://files.pythonhosted.org/packages/60/de/99ec247a07ea40c969d904fc14f3a356b3e2a704121675b75c366b694ee1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.whl", hash = "sha256:768160ac89f6f7b459bee747e8d175dbf53619cfe74b2a5636264163138013ca", size = 200221622, upload-time = "2024-10-01T17:03:58.79Z" }, + { url = "https://files.pythonhosted.org/packages/1f/37/c50d2b2f2c07e146776389e3080f4faf70bcc4fa6e19d65bb54ca174ebc3/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d16079550df460376455cba121db6564089176d9bac9e4f360493ca4741b22a6", size = 200164144 }, + { url = "https://files.pythonhosted.org/packages/ce/f5/188566814b7339e893f8d210d3a5332352b1409815908dad6a363dcceac1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8510990de9f96c803a051822618d42bf6cb8f069ff3f48d93a8486efdacb48fb", size = 200164135 }, + { url = "https://files.pythonhosted.org/packages/8f/16/73727675941ab8e6ffd86ca3a4b7b47065edcca7a997920b831f8147c99d/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ccba62eb9cef5559abd5e0d54ceed2d9934030f51163df018532142a8ec533e5", size = 200221632 }, + { url = "https://files.pythonhosted.org/packages/60/de/99ec247a07ea40c969d904fc14f3a356b3e2a704121675b75c366b694ee1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.whl", hash = "sha256:768160ac89f6f7b459bee747e8d175dbf53619cfe74b2a5636264163138013ca", size = 200221622 }, ] [[package]] @@ -1178,13 +1266,15 @@ name = "nvidia-cufft-cu12" version = "11.3.3.83" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, + { url = "https://files.pythonhosted.org/packages/60/bc/7771846d3a0272026c416fbb7e5f4c1f146d6d80704534d0b187dd6f4800/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a", size = 193109211 }, + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695 }, ] [[package]] @@ -1192,12 +1282,16 @@ name = "nvidia-cufile-cu12" version = "1.11.1.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/66/cc9876340ac68ae71b15c743ddb13f8b30d5244af344ec8322b449e35426/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc23469d1c7e52ce6c1d55253273d32c565dd22068647f3aa59b3c6b005bf159", size = 1142103, upload-time = "2024-11-20T17:42:11.83Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/cc9876340ac68ae71b15c743ddb13f8b30d5244af344ec8322b449e35426/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc23469d1c7e52ce6c1d55253273d32c565dd22068647f3aa59b3c6b005bf159", size = 1142103 }, + { url = "https://files.pythonhosted.org/packages/17/bf/cc834147263b929229ce4aadd62869f0b195e98569d4c28b23edc72b85d9/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8f57a0051dcf2543f6dc2b98a98cb2719c37d3cee1baba8965d57f3bbc90d4db", size = 1066155 }, ] [[package]] @@ -1205,10 +1299,12 @@ name = "nvidia-cufile-cu12" version = "1.13.1.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834 }, + { url = "https://files.pythonhosted.org/packages/1e/f5/5607710447a6fe9fd9b3283956fceeee8a06cda1d2f56ce31371f595db2a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a", size = 1120705 }, ] [[package]] @@ -1216,13 +1312,18 @@ name = "nvidia-curand-cu12" version = "10.3.7.77" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a42cd1344297f70b9e39a1e4f467a4e1c10f1da54ff7a85c12197f6c652c8bdf", size = 56279010, upload-time = "2024-11-20T17:42:50.958Z" }, - { url = "https://files.pythonhosted.org/packages/4a/aa/2c7ff0b5ee02eaef890c0ce7d4f74bc30901871c5e45dee1ae6d0083cd80/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:99f1a32f1ac2bd134897fc7a203f779303261268a65762a623bf30cc9fe79117", size = 56279000, upload-time = "2024-10-01T17:04:45.274Z" }, + { url = "https://files.pythonhosted.org/packages/42/ac/36543605358a355632f1a6faa3e2d5dfb91eab1e4bc7d552040e0383c335/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:6e82df077060ea28e37f48a3ec442a8f47690c7499bff392a5938614b56c98d8", size = 56289881 }, + { url = "https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a42cd1344297f70b9e39a1e4f467a4e1c10f1da54ff7a85c12197f6c652c8bdf", size = 56279010 }, + { url = "https://files.pythonhosted.org/packages/4a/aa/2c7ff0b5ee02eaef890c0ce7d4f74bc30901871c5e45dee1ae6d0083cd80/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:99f1a32f1ac2bd134897fc7a203f779303261268a65762a623bf30cc9fe79117", size = 56279000 }, + { url = "https://files.pythonhosted.org/packages/a6/02/5362a9396f23f7de1dd8a64369e87c85ffff8216fc8194ace0fa45ba27a5/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7b2ed8e95595c3591d984ea3603dd66fe6ce6812b886d59049988a712ed06b6e", size = 56289882 }, ] [[package]] @@ -1230,10 +1331,12 @@ name = "nvidia-curand-cu12" version = "10.3.9.90" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, + { url = "https://files.pythonhosted.org/packages/45/5e/92aa15eca622a388b80fbf8375d4760738df6285b1e92c43d37390a33a9a/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd", size = 63625754 }, + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976 }, ] [[package]] @@ -1241,18 +1344,23 @@ name = "nvidia-cusolver-cu12" version = "11.7.1.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, + { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/6e/c2cf12c9ff8b872e92b4a5740701e51ff17689c4d726fca91875b07f655d/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9e49843a7707e42022babb9bcfa33c29857a93b88020c4e4434656a655b698c", size = 158229790, upload-time = "2024-11-20T17:43:43.211Z" }, - { url = "https://files.pythonhosted.org/packages/9f/81/baba53585da791d043c10084cf9553e074548408e04ae884cfe9193bd484/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6cf28f17f64107a0c4d7802be5ff5537b2130bfc112f25d5a30df227058ca0e6", size = 158229780, upload-time = "2024-10-01T17:05:39.875Z" }, + { url = "https://files.pythonhosted.org/packages/93/17/dbe1aa865e4fdc7b6d4d0dd308fdd5aaab60f939abfc0ea1954eac4fb113/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0ce237ef60acde1efc457335a2ddadfd7610b892d94efee7b776c64bb1cac9e0", size = 157833628 }, + { url = "https://files.pythonhosted.org/packages/f0/6e/c2cf12c9ff8b872e92b4a5740701e51ff17689c4d726fca91875b07f655d/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9e49843a7707e42022babb9bcfa33c29857a93b88020c4e4434656a655b698c", size = 158229790 }, + { url = "https://files.pythonhosted.org/packages/9f/81/baba53585da791d043c10084cf9553e074548408e04ae884cfe9193bd484/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6cf28f17f64107a0c4d7802be5ff5537b2130bfc112f25d5a30df227058ca0e6", size = 158229780 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/07d0ba3b7f19be5a5ec32a8679fc9384cfd9fc6c869825e93be9f28d6690/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dbbe4fc38ec1289c7e5230e16248365e375c3673c9c8bac5796e2e20db07f56e", size = 157833630 }, ] [[package]] @@ -1260,15 +1368,17 @@ name = "nvidia-cusolver-cu12" version = "11.7.3.90" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, + { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, + { url = "https://files.pythonhosted.org/packages/c8/32/f7cd6ce8a7690544d084ea21c26e910a97e077c9b7f07bf5de623ee19981/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0", size = 267229841 }, + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905 }, ] [[package]] @@ -1276,16 +1386,21 @@ name = "nvidia-cusparse-cu12" version = "12.5.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/06/1e/b8b7c2f4099a37b96af5c9bb158632ea9e5d9d27d7391d7eb8fc45236674/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7556d9eca156e18184b94947ade0fba5bb47d69cec46bf8660fd2c71a4b48b73", size = 216561367, upload-time = "2024-11-20T17:44:54.824Z" }, - { url = "https://files.pythonhosted.org/packages/43/ac/64c4316ba163e8217a99680c7605f779accffc6a4bcd0c778c12948d3707/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:23749a6571191a215cb74d1cdbff4a86e7b19f1200c071b3fcf844a5bea23a2f", size = 216561357, upload-time = "2024-10-01T17:06:29.861Z" }, + { url = "https://files.pythonhosted.org/packages/eb/eb/6681efd0aa7df96b4f8067b3ce7246833dd36830bb4cec8896182773db7d/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d25b62fb18751758fe3c93a4a08eff08effedfe4edf1c6bb5afd0890fe88f887", size = 216451147 }, + { url = "https://files.pythonhosted.org/packages/d3/56/3af21e43014eb40134dea004e8d0f1ef19d9596a39e4d497d5a7de01669f/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7aa32fa5470cf754f72d1116c7cbc300b4e638d3ae5304cfa4a638a5b87161b1", size = 216451135 }, + { url = "https://files.pythonhosted.org/packages/06/1e/b8b7c2f4099a37b96af5c9bb158632ea9e5d9d27d7391d7eb8fc45236674/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7556d9eca156e18184b94947ade0fba5bb47d69cec46bf8660fd2c71a4b48b73", size = 216561367 }, + { url = "https://files.pythonhosted.org/packages/43/ac/64c4316ba163e8217a99680c7605f779accffc6a4bcd0c778c12948d3707/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:23749a6571191a215cb74d1cdbff4a86e7b19f1200c071b3fcf844a5bea23a2f", size = 216561357 }, ] [[package]] @@ -1293,13 +1408,15 @@ name = "nvidia-cusparse-cu12" version = "12.5.8.93" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f7/cd777c4109681367721b00a106f491e0d0d15cfa1fd59672ce580ce42a97/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc", size = 288117129 }, + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466 }, ] [[package]] @@ -1307,12 +1424,16 @@ name = "nvidia-cusparselt-cu12" version = "0.6.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/9a/72ef35b399b0e183bc2e8f6f558036922d453c4d8237dab26c666a04244b/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5c8a26c36445dd2e6812f1177978a24e2d37cacce7e090f297a688d1ec44f46", size = 156785796, upload-time = "2024-10-15T21:29:17.709Z" }, + { url = "https://files.pythonhosted.org/packages/62/da/4de092c61c6dea1fc9c936e69308a02531d122e12f1f649825934ad651b5/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8371549623ba601a06322af2133c4a44350575f5a3108fb75f3ef20b822ad5f1", size = 156402859 }, + { url = "https://files.pythonhosted.org/packages/3b/9a/72ef35b399b0e183bc2e8f6f558036922d453c4d8237dab26c666a04244b/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5c8a26c36445dd2e6812f1177978a24e2d37cacce7e090f297a688d1ec44f46", size = 156785796 }, ] [[package]] @@ -1320,10 +1441,12 @@ name = "nvidia-cusparselt-cu12" version = "0.7.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, + { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557 }, + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691 }, ] [[package]] @@ -1331,12 +1454,16 @@ name = "nvidia-nccl-cu12" version = "2.26.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/67/ca/f42388aed0fddd64ade7493dbba36e1f534d4e6fdbdd355c6a90030ae028/nvidia_nccl_cu12-2.26.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:694cf3879a206553cc9d7dbda76b13efaf610fdb70a50cba303de1b0d1530ac6", size = 201319755, upload-time = "2025-03-13T00:29:55.296Z" }, + { url = "https://files.pythonhosted.org/packages/69/5b/ca2f213f637305633814ae8c36b153220e40a07ea001966dcd87391f3acb/nvidia_nccl_cu12-2.26.2-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c196e95e832ad30fbbb50381eb3cbd1fadd5675e587a548563993609af19522", size = 291671495 }, + { url = "https://files.pythonhosted.org/packages/67/ca/f42388aed0fddd64ade7493dbba36e1f534d4e6fdbdd355c6a90030ae028/nvidia_nccl_cu12-2.26.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:694cf3879a206553cc9d7dbda76b13efaf610fdb70a50cba303de1b0d1530ac6", size = 201319755 }, ] [[package]] @@ -1344,10 +1471,12 @@ name = "nvidia-nccl-cu12" version = "2.27.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/5b/4e4fff7bad39adf89f735f2bc87248c81db71205b62bcc0d5ca5b606b3c3/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039", size = 322364134, upload-time = "2025-06-03T21:58:04.013Z" }, + { url = "https://files.pythonhosted.org/packages/4b/7b/8354b784cf73b0ba51e566b4baba3ddd44fe8288a3d39ef1e06cd5417226/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ddf1a245abc36c550870f26d537a9b6087fb2e2e3d6e0ef03374c6fd19d984f", size = 322397768 }, + { url = "https://files.pythonhosted.org/packages/5c/5b/4e4fff7bad39adf89f735f2bc87248c81db71205b62bcc0d5ca5b606b3c3/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039", size = 322364134 }, ] [[package]] @@ -1355,12 +1484,16 @@ name = "nvidia-nvjitlink-cu12" version = "12.6.85" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/d7/c5383e47c7e9bf1c99d5bd2a8c935af2b6d705ad831a7ec5c97db4d82f4f/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a", size = 19744971, upload-time = "2024-11-20T17:46:53.366Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d7/c5383e47c7e9bf1c99d5bd2a8c935af2b6d705ad831a7ec5c97db4d82f4f/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a", size = 19744971 }, + { url = "https://files.pythonhosted.org/packages/31/db/dc71113d441f208cdfe7ae10d4983884e13f464a6252450693365e166dcf/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cf4eaa7d4b6b543ffd69d6abfb11efdeb2db48270d94dfd3a452c24150829e41", size = 19270338 }, ] [[package]] @@ -1368,10 +1501,12 @@ name = "nvidia-nvjitlink-cu12" version = "12.8.93" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836 }, + { url = "https://files.pythonhosted.org/packages/2a/a2/8cee5da30d13430e87bf99bb33455d2724d0a4a9cb5d7926d80ccb96d008/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7", size = 38386204 }, ] [[package]] @@ -1379,13 +1514,18 @@ name = "nvidia-nvtx-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/56/9a/fff8376f8e3d084cd1530e1ef7b879bb7d6d265620c95c1b322725c694f4/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b90bed3df379fa79afbd21be8e04a0314336b8ae16768b58f2d34cb1d04cd7d2", size = 89276, upload-time = "2024-11-20T17:38:27.621Z" }, - { url = "https://files.pythonhosted.org/packages/9e/4e/0d0c945463719429b7bd21dece907ad0bde437a2ff12b9b12fee94722ab0/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6574241a3ec5fdc9334353ab8c479fe75841dbe8f4532a8fc97ce63503330ba1", size = 89265, upload-time = "2024-10-01T17:00:38.172Z" }, + { url = "https://files.pythonhosted.org/packages/b9/93/80f8a520375af9d7ee44571a6544653a176e53c2b8ccce85b97b83c2491b/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f44f8d86bb7d5629988d61c8d3ae61dddb2015dee142740536bc7481b022fe4b", size = 90549 }, + { url = "https://files.pythonhosted.org/packages/2b/53/36e2fd6c7068997169b49ffc8c12d5af5e5ff209df6e1a2c4d373b3a638f/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:adcaabb9d436c9761fca2b13959a2d237c5f9fd406c8e4b723c695409ff88059", size = 90539 }, + { url = "https://files.pythonhosted.org/packages/56/9a/fff8376f8e3d084cd1530e1ef7b879bb7d6d265620c95c1b322725c694f4/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b90bed3df379fa79afbd21be8e04a0314336b8ae16768b58f2d34cb1d04cd7d2", size = 89276 }, + { url = "https://files.pythonhosted.org/packages/9e/4e/0d0c945463719429b7bd21dece907ad0bde437a2ff12b9b12fee94722ab0/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6574241a3ec5fdc9334353ab8c479fe75841dbe8f4532a8fc97ce63503330ba1", size = 89265 }, ] [[package]] @@ -1393,10 +1533,12 @@ name = "nvidia-nvtx-cu12" version = "12.8.90" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/1b303feea90d296f6176f32a2a70b5ef230f9bdeb3a72bddb0dc922dc137/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615", size = 91161 }, + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954 }, ] [[package]] @@ -1404,35 +1546,35 @@ name = "opencv-python" version = "4.11.0.86" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } +sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, - { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, - { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322 }, + { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197 }, + { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439 }, + { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597 }, + { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "piexif" version = "1.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fa/84/a3f25cec7d0922bf60be8000c9739d28d24b6896717f44cc4cfb843b1487/piexif-1.1.3.zip", hash = "sha256:83cb35c606bf3a1ea1a8f0a25cb42cf17e24353fd82e87ae3884e74a302a5f1b", size = 1011134, upload-time = "2019-07-01T15:29:23.045Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/84/a3f25cec7d0922bf60be8000c9739d28d24b6896717f44cc4cfb843b1487/piexif-1.1.3.zip", hash = "sha256:83cb35c606bf3a1ea1a8f0a25cb42cf17e24353fd82e87ae3884e74a302a5f1b", size = 1011134 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/d8/6f63147dd73373d051c5eb049ecd841207f898f50a5a1d4378594178f6cf/piexif-1.1.3-py2.py3-none-any.whl", hash = "sha256:3bc435d171720150b81b15d27e05e54b8abbde7b4242cddd81ef160d283108b6", size = 20691, upload-time = "2019-07-01T15:43:20.907Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d8/6f63147dd73373d051c5eb049ecd841207f898f50a5a1d4378594178f6cf/piexif-1.1.3-py2.py3-none-any.whl", hash = "sha256:3bc435d171720150b81b15d27e05e54b8abbde7b4242cddd81ef160d283108b6", size = 20691 }, ] [[package]] @@ -1440,69 +1582,87 @@ name = "pillow" version = "10.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, - { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, - { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, - { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, - { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, - { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, - { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, - { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, - { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, - { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, - { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, - { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, - { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, - { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, - { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, - { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, - { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, - { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, - { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, - { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, - { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, - { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, - { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, - { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, - { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, - { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, - { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, - { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, - { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, - { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, - { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, - { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, - { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, - { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, - { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271 }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658 }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075 }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808 }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290 }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163 }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100 }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880 }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218 }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487 }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265 }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655 }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304 }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804 }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126 }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541 }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616 }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213 }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498 }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350 }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980 }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799 }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973 }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054 }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484 }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375 }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773 }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690 }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951 }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427 }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685 }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883 }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837 }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562 }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761 }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767 }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989 }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255 }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603 }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972 }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889 }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160 }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020 }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539 }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125 }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373 }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661 }, ] [[package]] @@ -1510,151 +1670,172 @@ name = "pillow" version = "11.3.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, - { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, - { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, - { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, - { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, - { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, - { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, - { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, - { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, - { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, - { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, - { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, - { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, - { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, - { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, - { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, - { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, - { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, - { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, - { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, - { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, - { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, - { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, - { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, - { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, - { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, - { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, - { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, - { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, - { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, - { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, - { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, - { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, - { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554 }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548 }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742 }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087 }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350 }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840 }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005 }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372 }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090 }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988 }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899 }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531 }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560 }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978 }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168 }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053 }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273 }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043 }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516 }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768 }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055 }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079 }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800 }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296 }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726 }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652 }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787 }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236 }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950 }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358 }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079 }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324 }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067 }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328 }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652 }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443 }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474 }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038 }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407 }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094 }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503 }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574 }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060 }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407 }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841 }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450 }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055 }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110 }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547 }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554 }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132 }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001 }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814 }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124 }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186 }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546 }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102 }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803 }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520 }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116 }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597 }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246 }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336 }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699 }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789 }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386 }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911 }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383 }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385 }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129 }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580 }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860 }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694 }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888 }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089 }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206 }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370 }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500 }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835 }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556 }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625 }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207 }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939 }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166 }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482 }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566 }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618 }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248 }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963 }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170 }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505 }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598 }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, ] [[package]] @@ -1670,9 +1851,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714 } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474 }, ] [[package]] @@ -1682,9 +1863,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/f7/bc223798d5cccf2f03ed224a6fdceae005d06ae33fbd302741da9eb9e95a/pytest-timer-1.0.0.tar.gz", hash = "sha256:c65a36970e4425c0fd43bdf63b60359b353382632b08418c7c25918ec18a3829", size = 5812, upload-time = "2023-12-26T22:21:42.447Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/f7/bc223798d5cccf2f03ed224a6fdceae005d06ae33fbd302741da9eb9e95a/pytest-timer-1.0.0.tar.gz", hash = "sha256:c65a36970e4425c0fd43bdf63b60359b353382632b08418c7c25918ec18a3829", size = 5812 } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/48/486b6ff8b910852affeab5b628910f8faa861450a37c21c19902b798ebda/pytest_timer-1.0.0-py3-none-any.whl", hash = "sha256:60f16a6d98dd5e8ce3e57ece829592f6e081e18be9f1b20e5bc93e5e7196b065", size = 5331, upload-time = "2023-12-26T22:21:40.947Z" }, + { url = "https://files.pythonhosted.org/packages/91/48/486b6ff8b910852affeab5b628910f8faa861450a37c21c19902b798ebda/pytest_timer-1.0.0-py3-none-any.whl", hash = "sha256:60f16a6d98dd5e8ce3e57ece829592f6e081e18be9f1b20e5bc93e5e7196b065", size = 5331 }, ] [[package]] @@ -1694,62 +1875,62 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] [[package]] name = "pywin32-ctypes" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471 } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, + { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756 }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -1761,78 +1942,78 @@ dependencies = [ { name = "nh3" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", size = 32056, upload-time = "2024-07-08T15:00:57.805Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", size = 32056 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310, upload-time = "2024-07-08T15:00:56.577Z" }, + { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310 }, ] [[package]] name = "regex" version = "2024.11.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, - { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, - { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, - { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, - { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, - { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, - { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, - { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, - { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, - { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, - { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, - { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, - { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, - { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, - { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, - { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, - { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, - { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, - { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, - { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, - { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, - { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, - { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, - { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, - { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, - { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, - { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, - { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, - { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, - { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, - { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, - { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, - { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, - { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, - { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, - { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, - { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, - { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, - { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, - { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, - { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, - { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, - { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, - { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, - { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, - { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, - { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, - { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, - { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, - { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, - { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, - { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, - { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, - { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674 }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511 }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149 }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707 }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702 }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976 }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397 }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726 }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098 }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325 }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277 }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197 }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714 }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042 }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121 }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275 }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257 }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727 }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667 }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963 }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700 }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592 }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929 }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213 }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734 }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052 }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, ] [[package]] @@ -1845,9 +2026,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, ] [[package]] @@ -1857,18 +2038,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, ] [[package]] name = "rfc3986" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload-time = "2022-01-10T00:52:30.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload-time = "2022-01-10T00:52:29.594Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, ] [[package]] @@ -1880,31 +2061,31 @@ dependencies = [ { name = "pygments" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload-time = "2025-03-30T14:15:14.23Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload-time = "2025-03-30T14:15:12.283Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, ] [[package]] name = "safetensors" version = "0.5.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/7e/2d5d6ee7b40c0682315367ec7475693d110f512922d582fef1bd4a63adc3/safetensors-0.5.3.tar.gz", hash = "sha256:b6b0d6ecacec39a4fdd99cc19f4576f5219ce858e6fd8dbe7609df0b8dc56965", size = 67210, upload-time = "2025-02-26T09:15:13.155Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/7e/2d5d6ee7b40c0682315367ec7475693d110f512922d582fef1bd4a63adc3/safetensors-0.5.3.tar.gz", hash = "sha256:b6b0d6ecacec39a4fdd99cc19f4576f5219ce858e6fd8dbe7609df0b8dc56965", size = 67210 } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/ae/88f6c49dbd0cc4da0e08610019a3c78a7d390879a919411a410a1876d03a/safetensors-0.5.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd20eb133db8ed15b40110b7c00c6df51655a2998132193de2f75f72d99c7073", size = 436917, upload-time = "2025-02-26T09:15:03.702Z" }, - { url = "https://files.pythonhosted.org/packages/b8/3b/11f1b4a2f5d2ab7da34ecc062b0bc301f2be024d110a6466726bec8c055c/safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:21d01c14ff6c415c485616b8b0bf961c46b3b343ca59110d38d744e577f9cce7", size = 418419, upload-time = "2025-02-26T09:15:01.765Z" }, - { url = "https://files.pythonhosted.org/packages/5d/9a/add3e6fef267658075c5a41573c26d42d80c935cdc992384dfae435feaef/safetensors-0.5.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11bce6164887cd491ca75c2326a113ba934be596e22b28b1742ce27b1d076467", size = 459493, upload-time = "2025-02-26T09:14:51.812Z" }, - { url = "https://files.pythonhosted.org/packages/df/5c/bf2cae92222513cc23b3ff85c4a1bb2811a2c3583ac0f8e8d502751de934/safetensors-0.5.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4a243be3590bc3301c821da7a18d87224ef35cbd3e5f5727e4e0728b8172411e", size = 472400, upload-time = "2025-02-26T09:14:53.549Z" }, - { url = "https://files.pythonhosted.org/packages/58/11/7456afb740bd45782d0f4c8e8e1bb9e572f1bf82899fb6ace58af47b4282/safetensors-0.5.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8bd84b12b1670a6f8e50f01e28156422a2bc07fb16fc4e98bded13039d688a0d", size = 522891, upload-time = "2025-02-26T09:14:55.717Z" }, - { url = "https://files.pythonhosted.org/packages/57/3d/fe73a9d2ace487e7285f6e157afee2383bd1ddb911b7cb44a55cf812eae3/safetensors-0.5.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:391ac8cab7c829452175f871fcaf414aa1e292b5448bd02620f675a7f3e7abb9", size = 537694, upload-time = "2025-02-26T09:14:57.036Z" }, - { url = "https://files.pythonhosted.org/packages/a6/f8/dae3421624fcc87a89d42e1898a798bc7ff72c61f38973a65d60df8f124c/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cead1fa41fc54b1e61089fa57452e8834f798cb1dc7a09ba3524f1eb08e0317a", size = 471642, upload-time = "2025-02-26T09:15:00.544Z" }, - { url = "https://files.pythonhosted.org/packages/ce/20/1fbe16f9b815f6c5a672f5b760951e20e17e43f67f231428f871909a37f6/safetensors-0.5.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1077f3e94182d72618357b04b5ced540ceb71c8a813d3319f1aba448e68a770d", size = 502241, upload-time = "2025-02-26T09:14:58.303Z" }, - { url = "https://files.pythonhosted.org/packages/5f/18/8e108846b506487aa4629fe4116b27db65c3dde922de2c8e0cc1133f3f29/safetensors-0.5.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:799021e78287bac619c7b3f3606730a22da4cda27759ddf55d37c8db7511c74b", size = 638001, upload-time = "2025-02-26T09:15:05.79Z" }, - { url = "https://files.pythonhosted.org/packages/82/5a/c116111d8291af6c8c8a8b40628fe833b9db97d8141c2a82359d14d9e078/safetensors-0.5.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df26da01aaac504334644e1b7642fa000bfec820e7cef83aeac4e355e03195ff", size = 734013, upload-time = "2025-02-26T09:15:07.892Z" }, - { url = "https://files.pythonhosted.org/packages/7d/ff/41fcc4d3b7de837963622e8610d998710705bbde9a8a17221d85e5d0baad/safetensors-0.5.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:32c3ef2d7af8b9f52ff685ed0bc43913cdcde135089ae322ee576de93eae5135", size = 670687, upload-time = "2025-02-26T09:15:09.979Z" }, - { url = "https://files.pythonhosted.org/packages/40/ad/2b113098e69c985a3d8fbda4b902778eae4a35b7d5188859b4a63d30c161/safetensors-0.5.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:37f1521be045e56fc2b54c606d4455573e717b2d887c579ee1dbba5f868ece04", size = 643147, upload-time = "2025-02-26T09:15:11.185Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0c/95aeb51d4246bd9a3242d3d8349c1112b4ee7611a4b40f0c5c93b05f001d/safetensors-0.5.3-cp38-abi3-win32.whl", hash = "sha256:cfc0ec0846dcf6763b0ed3d1846ff36008c6e7290683b61616c4b040f6a54ace", size = 296677, upload-time = "2025-02-26T09:15:16.554Z" }, - { url = "https://files.pythonhosted.org/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11", size = 308878, upload-time = "2025-02-26T09:15:14.99Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/88f6c49dbd0cc4da0e08610019a3c78a7d390879a919411a410a1876d03a/safetensors-0.5.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd20eb133db8ed15b40110b7c00c6df51655a2998132193de2f75f72d99c7073", size = 436917 }, + { url = "https://files.pythonhosted.org/packages/b8/3b/11f1b4a2f5d2ab7da34ecc062b0bc301f2be024d110a6466726bec8c055c/safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:21d01c14ff6c415c485616b8b0bf961c46b3b343ca59110d38d744e577f9cce7", size = 418419 }, + { url = "https://files.pythonhosted.org/packages/5d/9a/add3e6fef267658075c5a41573c26d42d80c935cdc992384dfae435feaef/safetensors-0.5.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11bce6164887cd491ca75c2326a113ba934be596e22b28b1742ce27b1d076467", size = 459493 }, + { url = "https://files.pythonhosted.org/packages/df/5c/bf2cae92222513cc23b3ff85c4a1bb2811a2c3583ac0f8e8d502751de934/safetensors-0.5.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4a243be3590bc3301c821da7a18d87224ef35cbd3e5f5727e4e0728b8172411e", size = 472400 }, + { url = "https://files.pythonhosted.org/packages/58/11/7456afb740bd45782d0f4c8e8e1bb9e572f1bf82899fb6ace58af47b4282/safetensors-0.5.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8bd84b12b1670a6f8e50f01e28156422a2bc07fb16fc4e98bded13039d688a0d", size = 522891 }, + { url = "https://files.pythonhosted.org/packages/57/3d/fe73a9d2ace487e7285f6e157afee2383bd1ddb911b7cb44a55cf812eae3/safetensors-0.5.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:391ac8cab7c829452175f871fcaf414aa1e292b5448bd02620f675a7f3e7abb9", size = 537694 }, + { url = "https://files.pythonhosted.org/packages/a6/f8/dae3421624fcc87a89d42e1898a798bc7ff72c61f38973a65d60df8f124c/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cead1fa41fc54b1e61089fa57452e8834f798cb1dc7a09ba3524f1eb08e0317a", size = 471642 }, + { url = "https://files.pythonhosted.org/packages/ce/20/1fbe16f9b815f6c5a672f5b760951e20e17e43f67f231428f871909a37f6/safetensors-0.5.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1077f3e94182d72618357b04b5ced540ceb71c8a813d3319f1aba448e68a770d", size = 502241 }, + { url = "https://files.pythonhosted.org/packages/5f/18/8e108846b506487aa4629fe4116b27db65c3dde922de2c8e0cc1133f3f29/safetensors-0.5.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:799021e78287bac619c7b3f3606730a22da4cda27759ddf55d37c8db7511c74b", size = 638001 }, + { url = "https://files.pythonhosted.org/packages/82/5a/c116111d8291af6c8c8a8b40628fe833b9db97d8141c2a82359d14d9e078/safetensors-0.5.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df26da01aaac504334644e1b7642fa000bfec820e7cef83aeac4e355e03195ff", size = 734013 }, + { url = "https://files.pythonhosted.org/packages/7d/ff/41fcc4d3b7de837963622e8610d998710705bbde9a8a17221d85e5d0baad/safetensors-0.5.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:32c3ef2d7af8b9f52ff685ed0bc43913cdcde135089ae322ee576de93eae5135", size = 670687 }, + { url = "https://files.pythonhosted.org/packages/40/ad/2b113098e69c985a3d8fbda4b902778eae4a35b7d5188859b4a63d30c161/safetensors-0.5.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:37f1521be045e56fc2b54c606d4455573e717b2d887c579ee1dbba5f868ece04", size = 643147 }, + { url = "https://files.pythonhosted.org/packages/0a/0c/95aeb51d4246bd9a3242d3d8349c1112b4ee7611a4b40f0c5c93b05f001d/safetensors-0.5.3-cp38-abi3-win32.whl", hash = "sha256:cfc0ec0846dcf6763b0ed3d1846ff36008c6e7290683b61616c4b040f6a54ace", size = 296677 }, + { url = "https://files.pythonhosted.org/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11", size = 308878 }, ] [[package]] @@ -1912,12 +2093,12 @@ name = "secretstorage" version = "3.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", marker = "sys_platform != 'darwin'" }, - { name = "jeepney", marker = "sys_platform != 'darwin'" }, + { name = "cryptography", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or (platform_system != 'Linux' and sys_platform != 'darwin') or (platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux')" }, + { name = "jeepney", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or (platform_system != 'Linux' and sys_platform != 'darwin') or (platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", size = 19739, upload-time = "2022-08-13T16:22:46.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", size = 19739 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221, upload-time = "2022-08-13T16:22:44.457Z" }, + { url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221 }, ] [[package]] @@ -1925,42 +2106,60 @@ name = "sentencepiece" version = "0.2.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/d2/b9c7ca067c26d8ff085d252c89b5f69609ca93fb85a00ede95f4857865d4/sentencepiece-0.2.0.tar.gz", hash = "sha256:a52c19171daaf2e697dc6cbe67684e0fa341b1248966f6aebb541de654d15843", size = 2632106, upload-time = "2024-02-19T17:06:47.428Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/d2/b9c7ca067c26d8ff085d252c89b5f69609ca93fb85a00ede95f4857865d4/sentencepiece-0.2.0.tar.gz", hash = "sha256:a52c19171daaf2e697dc6cbe67684e0fa341b1248966f6aebb541de654d15843", size = 2632106 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/71/98648c3b64b23edb5403f74bcc906ad21766872a6e1ada26ea3f1eb941ab/sentencepiece-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:188779e1298a1c8b8253c7d3ad729cb0a9891e5cef5e5d07ce4592c54869e227", size = 2408979, upload-time = "2024-02-19T17:05:34.651Z" }, - { url = "https://files.pythonhosted.org/packages/77/9f/7efbaa6d4c0c718a9affbecc536b03ca62f99f421bdffb531c16030e2d2b/sentencepiece-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bed9cf85b296fa2b76fc2547b9cbb691a523864cebaee86304c43a7b4cb1b452", size = 1238845, upload-time = "2024-02-19T17:05:37.371Z" }, - { url = "https://files.pythonhosted.org/packages/1c/e4/c2541027a43ec6962ba9b601805d17ba3f86b38bdeae0e8ac65a2981e248/sentencepiece-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7b67e724bead13f18db6e1d10b6bbdc454af574d70efbb36f27d90387be1ca3", size = 1181472, upload-time = "2024-02-19T17:05:39.775Z" }, - { url = "https://files.pythonhosted.org/packages/fd/46/316c1ba6c52b97de76aff7b9da678f7afbb52136afb2987c474d95630e65/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fde4b08cfe237be4484c6c7c2e2c75fb862cfeab6bd5449ce4caeafd97b767a", size = 1259151, upload-time = "2024-02-19T17:05:42.594Z" }, - { url = "https://files.pythonhosted.org/packages/aa/5a/3c48738a0835d76dd06c62b6ac48d39c923cde78dd0f587353bdcbb99851/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c378492056202d1c48a4979650981635fd97875a00eabb1f00c6a236b013b5e", size = 1355931, upload-time = "2024-02-19T17:05:44.695Z" }, - { url = "https://files.pythonhosted.org/packages/a6/27/33019685023221ca8ed98e8ceb7ae5e166032686fa3662c68f1f1edf334e/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1380ce6540a368de2ef6d7e6ba14ba8f3258df650d39ba7d833b79ee68a52040", size = 1301537, upload-time = "2024-02-19T17:05:46.713Z" }, - { url = "https://files.pythonhosted.org/packages/ca/e4/55f97cef14293171fef5f96e96999919ab5b4d1ce95b53547ad653d7e3bf/sentencepiece-0.2.0-cp310-cp310-win32.whl", hash = "sha256:a1151d6a6dd4b43e552394aed0edfe9292820272f0194bd56c7c1660a0c06c3d", size = 936747, upload-time = "2024-02-19T17:05:48.705Z" }, - { url = "https://files.pythonhosted.org/packages/85/f4/4ef1a6e0e9dbd8a60780a91df8b7452ada14cfaa0e17b3b8dfa42cecae18/sentencepiece-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:d490142b0521ef22bc1085f061d922a2a6666175bb6b42e588ff95c0db6819b2", size = 991525, upload-time = "2024-02-19T17:05:55.145Z" }, - { url = "https://files.pythonhosted.org/packages/32/43/8f8885168a47a02eba1455bd3f4f169f50ad5b8cebd2402d0f5e20854d04/sentencepiece-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17982700c4f6dbb55fa3594f3d7e5dd1c8659a274af3738e33c987d2a27c9d5c", size = 2409036, upload-time = "2024-02-19T17:05:58.021Z" }, - { url = "https://files.pythonhosted.org/packages/0f/35/e63ba28062af0a3d688a9f128e407a1a2608544b2f480cb49bf7f4b1cbb9/sentencepiece-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7c867012c0e8bcd5bdad0f791609101cb5c66acb303ab3270218d6debc68a65e", size = 1238921, upload-time = "2024-02-19T17:06:06.434Z" }, - { url = "https://files.pythonhosted.org/packages/de/42/ae30952c4a0bd773e90c9bf2579f5533037c886dfc8ec68133d5694f4dd2/sentencepiece-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd6071249c74f779c5b27183295b9202f8dedb68034e716784364443879eaa6", size = 1181477, upload-time = "2024-02-19T17:06:09.292Z" }, - { url = "https://files.pythonhosted.org/packages/e3/ac/2f2ab1d60bb2d795d054eebe5e3f24b164bc21b5a9b75fba7968b3b91b5a/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f90c55a65013cbb8f4d7aab0599bf925cde4adc67ae43a0d323677b5a1c6cb", size = 1259182, upload-time = "2024-02-19T17:06:16.459Z" }, - { url = "https://files.pythonhosted.org/packages/45/fb/14633c6ecf262c468759ffcdb55c3a7ee38fe4eda6a70d75ee7c7d63c58b/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b293734059ef656dcd65be62ff771507bea8fed0a711b6733976e1ed3add4553", size = 1355537, upload-time = "2024-02-19T17:06:19.274Z" }, - { url = "https://files.pythonhosted.org/packages/fb/12/2f5c8d4764b00033cf1c935b702d3bb878d10be9f0b87f0253495832d85f/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e58b47f933aca74c6a60a79dcb21d5b9e47416256c795c2d58d55cec27f9551d", size = 1301464, upload-time = "2024-02-19T17:06:21.796Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b1/67afc0bde24f6dcb3acdea0dd8dcdf4b8b0db240f6bacd39378bd32d09f8/sentencepiece-0.2.0-cp311-cp311-win32.whl", hash = "sha256:c581258cf346b327c62c4f1cebd32691826306f6a41d8c4bec43b010dee08e75", size = 936749, upload-time = "2024-02-19T17:06:24.167Z" }, - { url = "https://files.pythonhosted.org/packages/a2/f6/587c62fd21fc988555b85351f50bbde43a51524caafd63bc69240ded14fd/sentencepiece-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:0993dbc665f4113017892f1b87c3904a44d0640eda510abcacdfb07f74286d36", size = 991520, upload-time = "2024-02-19T17:06:26.936Z" }, - { url = "https://files.pythonhosted.org/packages/27/5a/141b227ed54293360a9ffbb7bf8252b4e5efc0400cdeac5809340e5d2b21/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ea5f536e32ea8ec96086ee00d7a4a131ce583a1b18d130711707c10e69601cb2", size = 2409370, upload-time = "2024-02-19T17:06:29.315Z" }, - { url = "https://files.pythonhosted.org/packages/2e/08/a4c135ad6fc2ce26798d14ab72790d66e813efc9589fd30a5316a88ca8d5/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0cb51f53b6aae3c36bafe41e86167c71af8370a039f542c43b0cce5ef24a68c", size = 1239288, upload-time = "2024-02-19T17:06:31.674Z" }, - { url = "https://files.pythonhosted.org/packages/49/0a/2fe387f825ac5aad5a0bfe221904882106cac58e1b693ba7818785a882b6/sentencepiece-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3212121805afc58d8b00ab4e7dd1f8f76c203ddb9dc94aa4079618a31cf5da0f", size = 1181597, upload-time = "2024-02-19T17:06:33.763Z" }, - { url = "https://files.pythonhosted.org/packages/cc/38/e4698ee2293fe4835dc033c49796a39b3eebd8752098f6bd0aa53a14af1f/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a3149e3066c2a75e0d68a43eb632d7ae728c7925b517f4c05c40f6f7280ce08", size = 1259220, upload-time = "2024-02-19T17:06:35.85Z" }, - { url = "https://files.pythonhosted.org/packages/12/24/fd7ef967c9dad2f6e6e5386d0cadaf65cda8b7be6e3861a9ab3121035139/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632f3594d3e7ac8b367bca204cb3fd05a01d5b21455acd097ea4c0e30e2f63d7", size = 1355962, upload-time = "2024-02-19T17:06:38.616Z" }, - { url = "https://files.pythonhosted.org/packages/4f/d2/18246f43ca730bb81918f87b7e886531eda32d835811ad9f4657c54eee35/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f295105c6bdbb05bd5e1b0cafbd78ff95036f5d3641e7949455a3f4e5e7c3109", size = 1301706, upload-time = "2024-02-19T17:06:40.712Z" }, - { url = "https://files.pythonhosted.org/packages/8a/47/ca237b562f420044ab56ddb4c278672f7e8c866e183730a20e413b38a989/sentencepiece-0.2.0-cp312-cp312-win32.whl", hash = "sha256:fb89f811e5efd18bab141afc3fea3de141c3f69f3fe9e898f710ae7fe3aab251", size = 936941, upload-time = "2024-02-19T17:06:42.802Z" }, - { url = "https://files.pythonhosted.org/packages/c6/97/d159c32642306ee2b70732077632895438867b3b6df282354bd550cf2a67/sentencepiece-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a673a72aab81fef5ebe755c6e0cc60087d1f3a4700835d40537183c1703a45f", size = 991994, upload-time = "2024-02-19T17:06:45.01Z" }, + { url = "https://files.pythonhosted.org/packages/f6/71/98648c3b64b23edb5403f74bcc906ad21766872a6e1ada26ea3f1eb941ab/sentencepiece-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:188779e1298a1c8b8253c7d3ad729cb0a9891e5cef5e5d07ce4592c54869e227", size = 2408979 }, + { url = "https://files.pythonhosted.org/packages/77/9f/7efbaa6d4c0c718a9affbecc536b03ca62f99f421bdffb531c16030e2d2b/sentencepiece-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bed9cf85b296fa2b76fc2547b9cbb691a523864cebaee86304c43a7b4cb1b452", size = 1238845 }, + { url = "https://files.pythonhosted.org/packages/1c/e4/c2541027a43ec6962ba9b601805d17ba3f86b38bdeae0e8ac65a2981e248/sentencepiece-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7b67e724bead13f18db6e1d10b6bbdc454af574d70efbb36f27d90387be1ca3", size = 1181472 }, + { url = "https://files.pythonhosted.org/packages/fd/46/316c1ba6c52b97de76aff7b9da678f7afbb52136afb2987c474d95630e65/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fde4b08cfe237be4484c6c7c2e2c75fb862cfeab6bd5449ce4caeafd97b767a", size = 1259151 }, + { url = "https://files.pythonhosted.org/packages/aa/5a/3c48738a0835d76dd06c62b6ac48d39c923cde78dd0f587353bdcbb99851/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c378492056202d1c48a4979650981635fd97875a00eabb1f00c6a236b013b5e", size = 1355931 }, + { url = "https://files.pythonhosted.org/packages/a6/27/33019685023221ca8ed98e8ceb7ae5e166032686fa3662c68f1f1edf334e/sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1380ce6540a368de2ef6d7e6ba14ba8f3258df650d39ba7d833b79ee68a52040", size = 1301537 }, + { url = "https://files.pythonhosted.org/packages/ca/e4/55f97cef14293171fef5f96e96999919ab5b4d1ce95b53547ad653d7e3bf/sentencepiece-0.2.0-cp310-cp310-win32.whl", hash = "sha256:a1151d6a6dd4b43e552394aed0edfe9292820272f0194bd56c7c1660a0c06c3d", size = 936747 }, + { url = "https://files.pythonhosted.org/packages/85/f4/4ef1a6e0e9dbd8a60780a91df8b7452ada14cfaa0e17b3b8dfa42cecae18/sentencepiece-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:d490142b0521ef22bc1085f061d922a2a6666175bb6b42e588ff95c0db6819b2", size = 991525 }, + { url = "https://files.pythonhosted.org/packages/32/43/8f8885168a47a02eba1455bd3f4f169f50ad5b8cebd2402d0f5e20854d04/sentencepiece-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17982700c4f6dbb55fa3594f3d7e5dd1c8659a274af3738e33c987d2a27c9d5c", size = 2409036 }, + { url = "https://files.pythonhosted.org/packages/0f/35/e63ba28062af0a3d688a9f128e407a1a2608544b2f480cb49bf7f4b1cbb9/sentencepiece-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7c867012c0e8bcd5bdad0f791609101cb5c66acb303ab3270218d6debc68a65e", size = 1238921 }, + { url = "https://files.pythonhosted.org/packages/de/42/ae30952c4a0bd773e90c9bf2579f5533037c886dfc8ec68133d5694f4dd2/sentencepiece-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd6071249c74f779c5b27183295b9202f8dedb68034e716784364443879eaa6", size = 1181477 }, + { url = "https://files.pythonhosted.org/packages/e3/ac/2f2ab1d60bb2d795d054eebe5e3f24b164bc21b5a9b75fba7968b3b91b5a/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f90c55a65013cbb8f4d7aab0599bf925cde4adc67ae43a0d323677b5a1c6cb", size = 1259182 }, + { url = "https://files.pythonhosted.org/packages/45/fb/14633c6ecf262c468759ffcdb55c3a7ee38fe4eda6a70d75ee7c7d63c58b/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b293734059ef656dcd65be62ff771507bea8fed0a711b6733976e1ed3add4553", size = 1355537 }, + { url = "https://files.pythonhosted.org/packages/fb/12/2f5c8d4764b00033cf1c935b702d3bb878d10be9f0b87f0253495832d85f/sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e58b47f933aca74c6a60a79dcb21d5b9e47416256c795c2d58d55cec27f9551d", size = 1301464 }, + { url = "https://files.pythonhosted.org/packages/4e/b1/67afc0bde24f6dcb3acdea0dd8dcdf4b8b0db240f6bacd39378bd32d09f8/sentencepiece-0.2.0-cp311-cp311-win32.whl", hash = "sha256:c581258cf346b327c62c4f1cebd32691826306f6a41d8c4bec43b010dee08e75", size = 936749 }, + { url = "https://files.pythonhosted.org/packages/a2/f6/587c62fd21fc988555b85351f50bbde43a51524caafd63bc69240ded14fd/sentencepiece-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:0993dbc665f4113017892f1b87c3904a44d0640eda510abcacdfb07f74286d36", size = 991520 }, + { url = "https://files.pythonhosted.org/packages/27/5a/141b227ed54293360a9ffbb7bf8252b4e5efc0400cdeac5809340e5d2b21/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ea5f536e32ea8ec96086ee00d7a4a131ce583a1b18d130711707c10e69601cb2", size = 2409370 }, + { url = "https://files.pythonhosted.org/packages/2e/08/a4c135ad6fc2ce26798d14ab72790d66e813efc9589fd30a5316a88ca8d5/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0cb51f53b6aae3c36bafe41e86167c71af8370a039f542c43b0cce5ef24a68c", size = 1239288 }, + { url = "https://files.pythonhosted.org/packages/49/0a/2fe387f825ac5aad5a0bfe221904882106cac58e1b693ba7818785a882b6/sentencepiece-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3212121805afc58d8b00ab4e7dd1f8f76c203ddb9dc94aa4079618a31cf5da0f", size = 1181597 }, + { url = "https://files.pythonhosted.org/packages/cc/38/e4698ee2293fe4835dc033c49796a39b3eebd8752098f6bd0aa53a14af1f/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a3149e3066c2a75e0d68a43eb632d7ae728c7925b517f4c05c40f6f7280ce08", size = 1259220 }, + { url = "https://files.pythonhosted.org/packages/12/24/fd7ef967c9dad2f6e6e5386d0cadaf65cda8b7be6e3861a9ab3121035139/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632f3594d3e7ac8b367bca204cb3fd05a01d5b21455acd097ea4c0e30e2f63d7", size = 1355962 }, + { url = "https://files.pythonhosted.org/packages/4f/d2/18246f43ca730bb81918f87b7e886531eda32d835811ad9f4657c54eee35/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f295105c6bdbb05bd5e1b0cafbd78ff95036f5d3641e7949455a3f4e5e7c3109", size = 1301706 }, + { url = "https://files.pythonhosted.org/packages/8a/47/ca237b562f420044ab56ddb4c278672f7e8c866e183730a20e413b38a989/sentencepiece-0.2.0-cp312-cp312-win32.whl", hash = "sha256:fb89f811e5efd18bab141afc3fea3de141c3f69f3fe9e898f710ae7fe3aab251", size = 936941 }, + { url = "https://files.pythonhosted.org/packages/c6/97/d159c32642306ee2b70732077632895438867b3b6df282354bd550cf2a67/sentencepiece-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a673a72aab81fef5ebe755c6e0cc60087d1f3a4700835d40537183c1703a45f", size = 991994 }, ] [[package]] @@ -1968,86 +2167,92 @@ name = "sentencepiece" version = "0.2.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] -sdist = { url = "https://files.pythonhosted.org/packages/15/15/2e7a025fc62d764b151ae6d0f2a92f8081755ebe8d4a64099accc6f77ba6/sentencepiece-0.2.1.tar.gz", hash = "sha256:8138cec27c2f2282f4a34d9a016e3374cd40e5c6e9cb335063db66a0a3b71fad", size = 3228515, upload-time = "2025-08-12T07:00:51.718Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/15/2e7a025fc62d764b151ae6d0f2a92f8081755ebe8d4a64099accc6f77ba6/sentencepiece-0.2.1.tar.gz", hash = "sha256:8138cec27c2f2282f4a34d9a016e3374cd40e5c6e9cb335063db66a0a3b71fad", size = 3228515 } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/31/5b7cccb307b485db1a2372d6d2980b0a65d067f8be5ca943a103b4acd5b3/sentencepiece-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e10fa50bdbaa5e2445dbd387979980d391760faf0ec99a09bd7780ff37eaec44", size = 1942557, upload-time = "2025-08-12T06:59:12.379Z" }, - { url = "https://files.pythonhosted.org/packages/1f/41/0ac923a8e685ad290c5afc8ae55c5844977b8d75076fcc04302b9a324274/sentencepiece-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f27ae6deea72efdb6f361750c92f6c21fd0ad087445082770cc34015213c526", size = 1325384, upload-time = "2025-08-12T06:59:14.334Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ef/3751555d67daf9003384978f169d31c775cb5c7baf28633caaf1eb2b2b4d/sentencepiece-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60937c959e6f44159fdd9f56fbdd302501f96114a5ba436829496d5f32d8de3f", size = 1253317, upload-time = "2025-08-12T06:59:16.247Z" }, - { url = "https://files.pythonhosted.org/packages/46/a5/742c69b7bd144eb32b6e5fd50dbd8abbbc7a95fce2fe16e50156fa400e3b/sentencepiece-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8b1d91545578852f128650b8cce4ec20f93d39b378ff554ebe66290f2dabb92", size = 1316379, upload-time = "2025-08-12T06:59:17.825Z" }, - { url = "https://files.pythonhosted.org/packages/c8/89/8deeafbba2871e8fa10f20f17447786f4ac38085925335728d360eaf4cae/sentencepiece-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:27e38eee653abc3d387862e67bc5c8b6f428cd604e688b85d29170b7e725c26c", size = 1387926, upload-time = "2025-08-12T06:59:19.395Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ca/67fe73005f0ab617c6a970b199754e28e524b6873aa7025224fad3cda252/sentencepiece-0.2.1-cp310-cp310-win32.whl", hash = "sha256:251874d720ac7f28024a168501f3c7bb15d1802245f6e66de565f18bbb9b5eaa", size = 999550, upload-time = "2025-08-12T06:59:20.844Z" }, - { url = "https://files.pythonhosted.org/packages/6d/33/dc5b54042050d2dda4229c3ce1f862541c99966390b6aa20f54d520d2dc2/sentencepiece-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e52144670738b4b477fade6c2a9b6af71a8d0094514c9853ac9f6fc1fcfabae7", size = 1054613, upload-time = "2025-08-12T06:59:22.255Z" }, - { url = "https://files.pythonhosted.org/packages/fa/19/1ea47f46ff97fe04422b78997da1a37cd632f414aae042d27a9009c5b733/sentencepiece-0.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:9076430ac25dfa7147d9d05751dbc66a04bc1aaac371c07f84952979ea59f0d0", size = 1033884, upload-time = "2025-08-12T06:59:24.194Z" }, - { url = "https://files.pythonhosted.org/packages/d8/15/46afbab00733d81788b64be430ca1b93011bb9388527958e26cc31832de5/sentencepiece-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6356d0986b8b8dc351b943150fcd81a1c6e6e4d439772e8584c64230e58ca987", size = 1942560, upload-time = "2025-08-12T06:59:25.82Z" }, - { url = "https://files.pythonhosted.org/packages/fa/79/7c01b8ef98a0567e9d84a4e7a910f8e7074fcbf398a5cd76f93f4b9316f9/sentencepiece-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f8ba89a3acb3dc1ae90f65ec1894b0b9596fdb98ab003ff38e058f898b39bc7", size = 1325385, upload-time = "2025-08-12T06:59:27.722Z" }, - { url = "https://files.pythonhosted.org/packages/bb/88/2b41e07bd24f33dcf2f18ec3b74247aa4af3526bad8907b8727ea3caba03/sentencepiece-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:02593eca45440ef39247cee8c47322a34bdcc1d8ae83ad28ba5a899a2cf8d79a", size = 1253319, upload-time = "2025-08-12T06:59:29.306Z" }, - { url = "https://files.pythonhosted.org/packages/a0/54/38a1af0c6210a3c6f95aa46d23d6640636d020fba7135cd0d9a84ada05a7/sentencepiece-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a0d15781a171d188b661ae4bde1d998c303f6bd8621498c50c671bd45a4798e", size = 1316162, upload-time = "2025-08-12T06:59:30.914Z" }, - { url = "https://files.pythonhosted.org/packages/ef/66/fb191403ade791ad2c3c1e72fe8413e63781b08cfa3aa4c9dfc536d6e795/sentencepiece-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f5a3e0d9f445ed9d66c0fec47d4b23d12cfc858b407a03c194c1b26c2ac2a63", size = 1387785, upload-time = "2025-08-12T06:59:32.491Z" }, - { url = "https://files.pythonhosted.org/packages/a9/2d/3bd9b08e70067b2124518b308db6a84a4f8901cc8a4317e2e4288cdd9b4d/sentencepiece-0.2.1-cp311-cp311-win32.whl", hash = "sha256:6d297a1748d429ba8534eebe5535448d78b8acc32d00a29b49acf28102eeb094", size = 999555, upload-time = "2025-08-12T06:59:34.475Z" }, - { url = "https://files.pythonhosted.org/packages/32/b8/f709977f5fda195ae1ea24f24e7c581163b6f142b1005bc3d0bbfe4d7082/sentencepiece-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:82d9ead6591015f009cb1be1cb1c015d5e6f04046dbb8c9588b931e869a29728", size = 1054617, upload-time = "2025-08-12T06:59:36.461Z" }, - { url = "https://files.pythonhosted.org/packages/7a/40/a1fc23be23067da0f703709797b464e8a30a1c78cc8a687120cd58d4d509/sentencepiece-0.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:39f8651bd10974eafb9834ce30d9bcf5b73e1fc798a7f7d2528f9820ca86e119", size = 1033877, upload-time = "2025-08-12T06:59:38.391Z" }, - { url = "https://files.pythonhosted.org/packages/4a/be/32ce495aa1d0e0c323dcb1ba87096037358edee539cac5baf8755a6bd396/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57cae326c8727de58c85977b175af132a7138d84c764635d7e71bbee7e774133", size = 1943152, upload-time = "2025-08-12T06:59:40.048Z" }, - { url = "https://files.pythonhosted.org/packages/88/7e/ff23008899a58678e98c6ff592bf4d368eee5a71af96d0df6b38a039dd4f/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:56dd39a3c4d6493db3cdca7e8cc68c6b633f0d4195495cbadfcf5af8a22d05a6", size = 1325651, upload-time = "2025-08-12T06:59:41.536Z" }, - { url = "https://files.pythonhosted.org/packages/19/84/42eb3ce4796777a1b5d3699dfd4dca85113e68b637f194a6c8d786f16a04/sentencepiece-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9381351182ff9888cc80e41c632e7e274b106f450de33d67a9e8f6043da6f76", size = 1253645, upload-time = "2025-08-12T06:59:42.903Z" }, - { url = "https://files.pythonhosted.org/packages/89/fa/d3d5ebcba3cb9e6d3775a096251860c41a6bc53a1b9461151df83fe93255/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99f955df238021bf11f0fc37cdb54fd5e5b5f7fd30ecc3d93fb48b6815437167", size = 1316273, upload-time = "2025-08-12T06:59:44.476Z" }, - { url = "https://files.pythonhosted.org/packages/04/88/14f2f4a2b922d8b39be45bf63d79e6cd3a9b2f248b2fcb98a69b12af12f5/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cdfecef430d985f1c2bcbfff3defd1d95dae876fbd0173376012d2d7d24044b", size = 1387881, upload-time = "2025-08-12T06:59:46.09Z" }, - { url = "https://files.pythonhosted.org/packages/fd/b8/903e5ccb77b4ef140605d5d71b4f9e0ad95d456d6184688073ed11712809/sentencepiece-0.2.1-cp312-cp312-win32.whl", hash = "sha256:a483fd29a34c3e34c39ac5556b0a90942bec253d260235729e50976f5dba1068", size = 999540, upload-time = "2025-08-12T06:59:48.023Z" }, - { url = "https://files.pythonhosted.org/packages/2d/81/92df5673c067148c2545b1bfe49adfd775bcc3a169a047f5a0e6575ddaca/sentencepiece-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4cdc7c36234fda305e85c32949c5211faaf8dd886096c7cea289ddc12a2d02de", size = 1054671, upload-time = "2025-08-12T06:59:49.895Z" }, - { url = "https://files.pythonhosted.org/packages/fe/02/c5e3bc518655d714622bec87d83db9cdba1cd0619a4a04e2109751c4f47f/sentencepiece-0.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:daeb5e9e9fcad012324807856113708614d534f596d5008638eb9b40112cd9e4", size = 1033923, upload-time = "2025-08-12T06:59:51.952Z" }, - { url = "https://files.pythonhosted.org/packages/ba/4a/85fbe1706d4d04a7e826b53f327c4b80f849cf1c7b7c5e31a20a97d8f28b/sentencepiece-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dcd8161eee7b41aae57ded06272905dbd680a0a04b91edd0f64790c796b2f706", size = 1943150, upload-time = "2025-08-12T06:59:53.588Z" }, - { url = "https://files.pythonhosted.org/packages/c2/83/4cfb393e287509fc2155480b9d184706ef8d9fa8cbf5505d02a5792bf220/sentencepiece-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c6c8f42949f419ff8c7e9960dbadcfbc982d7b5efc2f6748210d3dd53a7de062", size = 1325651, upload-time = "2025-08-12T06:59:55.073Z" }, - { url = "https://files.pythonhosted.org/packages/8d/de/5a007fb53b1ab0aafc69d11a5a3dd72a289d5a3e78dcf2c3a3d9b14ffe93/sentencepiece-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:097f3394e99456e9e4efba1737c3749d7e23563dd1588ce71a3d007f25475fff", size = 1253641, upload-time = "2025-08-12T06:59:56.562Z" }, - { url = "https://files.pythonhosted.org/packages/2c/d2/f552be5928105588f4f4d66ee37dd4c61460d8097e62d0e2e0eec41bc61d/sentencepiece-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7b670879c370d350557edabadbad1f6561a9e6968126e6debca4029e5547820", size = 1316271, upload-time = "2025-08-12T06:59:58.109Z" }, - { url = "https://files.pythonhosted.org/packages/96/df/0cfe748ace5485be740fed9476dee7877f109da32ed0d280312c94ec259f/sentencepiece-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7f0fd2f2693309e6628aeeb2e2faf6edd221134dfccac3308ca0de01f8dab47", size = 1387882, upload-time = "2025-08-12T07:00:00.701Z" }, - { url = "https://files.pythonhosted.org/packages/ac/dd/f7774d42a881ced8e1739f393ab1e82ece39fc9abd4779e28050c2e975b5/sentencepiece-0.2.1-cp313-cp313-win32.whl", hash = "sha256:92b3816aa2339355fda2c8c4e021a5de92180b00aaccaf5e2808972e77a4b22f", size = 999541, upload-time = "2025-08-12T07:00:02.709Z" }, - { url = "https://files.pythonhosted.org/packages/dd/e9/932b9eae6fd7019548321eee1ab8d5e3b3d1294df9d9a0c9ac517c7b636d/sentencepiece-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:10ed3dab2044c47f7a2e7b4969b0c430420cdd45735d78c8f853191fa0e3148b", size = 1054669, upload-time = "2025-08-12T07:00:04.915Z" }, - { url = "https://files.pythonhosted.org/packages/c9/3a/76488a00ea7d6931689cda28726a1447d66bf1a4837943489314593d5596/sentencepiece-0.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac650534e2251083c5f75dde4ff28896ce7c8904133dc8fef42780f4d5588fcd", size = 1033922, upload-time = "2025-08-12T07:00:06.496Z" }, - { url = "https://files.pythonhosted.org/packages/4a/b6/08fe2ce819e02ccb0296f4843e3f195764ce9829cbda61b7513f29b95718/sentencepiece-0.2.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:8dd4b477a7b069648d19363aad0cab9bad2f4e83b2d179be668efa672500dc94", size = 1946052, upload-time = "2025-08-12T07:00:08.136Z" }, - { url = "https://files.pythonhosted.org/packages/ab/d9/1ea0e740591ff4c6fc2b6eb1d7510d02f3fb885093f19b2f3abd1363b402/sentencepiece-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0c0f672da370cc490e4c59d89e12289778310a0e71d176c541e4834759e1ae07", size = 1327408, upload-time = "2025-08-12T07:00:09.572Z" }, - { url = "https://files.pythonhosted.org/packages/99/7e/1fb26e8a21613f6200e1ab88824d5d203714162cf2883248b517deb500b7/sentencepiece-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad8493bea8432dae8d6830365352350f3b4144415a1d09c4c8cb8d30cf3b6c3c", size = 1254857, upload-time = "2025-08-12T07:00:11.021Z" }, - { url = "https://files.pythonhosted.org/packages/bc/85/c72fd1f3c7a6010544d6ae07f8ddb38b5e2a7e33bd4318f87266c0bbafbf/sentencepiece-0.2.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b81a24733726e3678d2db63619acc5a8dccd074f7aa7a54ecd5ca33ca6d2d596", size = 1315722, upload-time = "2025-08-12T07:00:12.989Z" }, - { url = "https://files.pythonhosted.org/packages/4a/e8/661e5bd82a8aa641fd6c1020bd0e890ef73230a2b7215ddf9c8cd8e941c2/sentencepiece-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0a81799d0a68d618e89063fb423c3001a034c893069135ffe51fee439ae474d6", size = 1387452, upload-time = "2025-08-12T07:00:15.088Z" }, - { url = "https://files.pythonhosted.org/packages/99/5e/ae66c361023a470afcbc1fbb8da722c72ea678a2fcd9a18f1a12598c7501/sentencepiece-0.2.1-cp313-cp313t-win32.whl", hash = "sha256:89a3ea015517c42c0341d0d962f3e6aaf2cf10d71b1932d475c44ba48d00aa2b", size = 1002501, upload-time = "2025-08-12T07:00:16.966Z" }, - { url = "https://files.pythonhosted.org/packages/c1/03/d332828c4ff764e16c1b56c2c8f9a33488bbe796b53fb6b9c4205ddbf167/sentencepiece-0.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:33f068c9382dc2e7c228eedfd8163b52baa86bb92f50d0488bf2b7da7032e484", size = 1057555, upload-time = "2025-08-12T07:00:18.573Z" }, - { url = "https://files.pythonhosted.org/packages/88/14/5aee0bf0864df9bd82bd59e7711362908e4935e3f9cdc1f57246b5d5c9b9/sentencepiece-0.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:b3616ad246f360e52c85781e47682d31abfb6554c779e42b65333d4b5f44ecc0", size = 1036042, upload-time = "2025-08-12T07:00:20.209Z" }, - { url = "https://files.pythonhosted.org/packages/24/9c/89eb8b2052f720a612478baf11c8227dcf1dc28cd4ea4c0c19506b5af2a2/sentencepiece-0.2.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:5d0350b686c320068702116276cfb26c066dc7e65cfef173980b11bb4d606719", size = 1943147, upload-time = "2025-08-12T07:00:21.809Z" }, - { url = "https://files.pythonhosted.org/packages/82/0b/a1432bc87f97c2ace36386ca23e8bd3b91fb40581b5e6148d24b24186419/sentencepiece-0.2.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c7f54a31cde6fa5cb030370566f68152a742f433f8d2be458463d06c208aef33", size = 1325624, upload-time = "2025-08-12T07:00:23.289Z" }, - { url = "https://files.pythonhosted.org/packages/ea/99/bbe054ebb5a5039457c590e0a4156ed073fb0fe9ce4f7523404dd5b37463/sentencepiece-0.2.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c83b85ab2d6576607f31df77ff86f28182be4a8de6d175d2c33ca609925f5da1", size = 1253670, upload-time = "2025-08-12T07:00:24.69Z" }, - { url = "https://files.pythonhosted.org/packages/19/ad/d5c7075f701bd97971d7c2ac2904f227566f51ef0838dfbdfdccb58cd212/sentencepiece-0.2.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1855f57db07b51fb51ed6c9c452f570624d2b169b36f0f79ef71a6e6c618cd8b", size = 1316247, upload-time = "2025-08-12T07:00:26.435Z" }, - { url = "https://files.pythonhosted.org/packages/fb/03/35fbe5f3d9a7435eebd0b473e09584bd3cc354ce118b960445b060d33781/sentencepiece-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01e6912125cb45d3792f530a4d38f8e21bf884d6b4d4ade1b2de5cf7a8d2a52b", size = 1387894, upload-time = "2025-08-12T07:00:28.339Z" }, - { url = "https://files.pythonhosted.org/packages/dc/aa/956ef729aafb6c8f9c443104c9636489093bb5c61d6b90fc27aa1a865574/sentencepiece-0.2.1-cp314-cp314-win32.whl", hash = "sha256:c415c9de1447e0a74ae3fdb2e52f967cb544113a3a5ce3a194df185cbc1f962f", size = 1096698, upload-time = "2025-08-12T07:00:29.764Z" }, - { url = "https://files.pythonhosted.org/packages/b8/cb/fe400d8836952cc535c81a0ce47dc6875160e5fedb71d2d9ff0e9894c2a6/sentencepiece-0.2.1-cp314-cp314-win_amd64.whl", hash = "sha256:881b2e44b14fc19feade3cbed314be37de639fc415375cefaa5bc81a4be137fd", size = 1155115, upload-time = "2025-08-12T07:00:32.865Z" }, - { url = "https://files.pythonhosted.org/packages/32/89/047921cf70f36c7b6b6390876b2399b3633ab73b8d0cb857e5a964238941/sentencepiece-0.2.1-cp314-cp314-win_arm64.whl", hash = "sha256:2005242a16d2dc3ac5fe18aa7667549134d37854823df4c4db244752453b78a8", size = 1133890, upload-time = "2025-08-12T07:00:34.763Z" }, - { url = "https://files.pythonhosted.org/packages/a1/11/5b414b9fae6255b5fb1e22e2ed3dc3a72d3a694e5703910e640ac78346bb/sentencepiece-0.2.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:a19adcec27c524cb7069a1c741060add95f942d1cbf7ad0d104dffa0a7d28a2b", size = 1946081, upload-time = "2025-08-12T07:00:36.97Z" }, - { url = "https://files.pythonhosted.org/packages/77/eb/7a5682bb25824db8545f8e5662e7f3e32d72a508fdce086029d89695106b/sentencepiece-0.2.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e37e4b4c4a11662b5db521def4e44d4d30ae69a1743241412a93ae40fdcab4bb", size = 1327406, upload-time = "2025-08-12T07:00:38.669Z" }, - { url = "https://files.pythonhosted.org/packages/03/b0/811dae8fb9f2784e138785d481469788f2e0d0c109c5737372454415f55f/sentencepiece-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:477c81505db072b3ab627e7eab972ea1025331bd3a92bacbf798df2b75ea86ec", size = 1254846, upload-time = "2025-08-12T07:00:40.611Z" }, - { url = "https://files.pythonhosted.org/packages/ef/23/195b2e7ec85ebb6a547969f60b723c7aca5a75800ece6cc3f41da872d14e/sentencepiece-0.2.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:010f025a544ef770bb395091d57cb94deb9652d8972e0d09f71d85d5a0816c8c", size = 1315721, upload-time = "2025-08-12T07:00:42.914Z" }, - { url = "https://files.pythonhosted.org/packages/7e/aa/553dbe4178b5f23eb28e59393dddd64186178b56b81d9b8d5c3ff1c28395/sentencepiece-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:733e59ff1794d26db706cd41fc2d7ca5f6c64a820709cb801dc0ea31780d64ab", size = 1387458, upload-time = "2025-08-12T07:00:44.56Z" }, - { url = "https://files.pythonhosted.org/packages/66/7c/08ff0012507297a4dd74a5420fdc0eb9e3e80f4e88cab1538d7f28db303d/sentencepiece-0.2.1-cp314-cp314t-win32.whl", hash = "sha256:d3233770f78e637dc8b1fda2cd7c3b99ec77e7505041934188a4e7fe751de3b0", size = 1099765, upload-time = "2025-08-12T07:00:46.058Z" }, - { url = "https://files.pythonhosted.org/packages/91/d5/2a69e1ce15881beb9ddfc7e3f998322f5cedcd5e4d244cb74dade9441663/sentencepiece-0.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:5e4366c97b68218fd30ea72d70c525e6e78a6c0a88650f57ac4c43c63b234a9d", size = 1157807, upload-time = "2025-08-12T07:00:47.673Z" }, - { url = "https://files.pythonhosted.org/packages/f3/16/54f611fcfc2d1c46cbe3ec4169780b2cfa7cf63708ef2b71611136db7513/sentencepiece-0.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:105e36e75cbac1292642045458e8da677b2342dcd33df503e640f0b457cb6751", size = 1136264, upload-time = "2025-08-12T07:00:49.485Z" }, + { url = "https://files.pythonhosted.org/packages/af/31/5b7cccb307b485db1a2372d6d2980b0a65d067f8be5ca943a103b4acd5b3/sentencepiece-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e10fa50bdbaa5e2445dbd387979980d391760faf0ec99a09bd7780ff37eaec44", size = 1942557 }, + { url = "https://files.pythonhosted.org/packages/1f/41/0ac923a8e685ad290c5afc8ae55c5844977b8d75076fcc04302b9a324274/sentencepiece-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f27ae6deea72efdb6f361750c92f6c21fd0ad087445082770cc34015213c526", size = 1325384 }, + { url = "https://files.pythonhosted.org/packages/fc/ef/3751555d67daf9003384978f169d31c775cb5c7baf28633caaf1eb2b2b4d/sentencepiece-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60937c959e6f44159fdd9f56fbdd302501f96114a5ba436829496d5f32d8de3f", size = 1253317 }, + { url = "https://files.pythonhosted.org/packages/46/a5/742c69b7bd144eb32b6e5fd50dbd8abbbc7a95fce2fe16e50156fa400e3b/sentencepiece-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8b1d91545578852f128650b8cce4ec20f93d39b378ff554ebe66290f2dabb92", size = 1316379 }, + { url = "https://files.pythonhosted.org/packages/c8/89/8deeafbba2871e8fa10f20f17447786f4ac38085925335728d360eaf4cae/sentencepiece-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:27e38eee653abc3d387862e67bc5c8b6f428cd604e688b85d29170b7e725c26c", size = 1387926 }, + { url = "https://files.pythonhosted.org/packages/c3/ca/67fe73005f0ab617c6a970b199754e28e524b6873aa7025224fad3cda252/sentencepiece-0.2.1-cp310-cp310-win32.whl", hash = "sha256:251874d720ac7f28024a168501f3c7bb15d1802245f6e66de565f18bbb9b5eaa", size = 999550 }, + { url = "https://files.pythonhosted.org/packages/6d/33/dc5b54042050d2dda4229c3ce1f862541c99966390b6aa20f54d520d2dc2/sentencepiece-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e52144670738b4b477fade6c2a9b6af71a8d0094514c9853ac9f6fc1fcfabae7", size = 1054613 }, + { url = "https://files.pythonhosted.org/packages/fa/19/1ea47f46ff97fe04422b78997da1a37cd632f414aae042d27a9009c5b733/sentencepiece-0.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:9076430ac25dfa7147d9d05751dbc66a04bc1aaac371c07f84952979ea59f0d0", size = 1033884 }, + { url = "https://files.pythonhosted.org/packages/d8/15/46afbab00733d81788b64be430ca1b93011bb9388527958e26cc31832de5/sentencepiece-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6356d0986b8b8dc351b943150fcd81a1c6e6e4d439772e8584c64230e58ca987", size = 1942560 }, + { url = "https://files.pythonhosted.org/packages/fa/79/7c01b8ef98a0567e9d84a4e7a910f8e7074fcbf398a5cd76f93f4b9316f9/sentencepiece-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f8ba89a3acb3dc1ae90f65ec1894b0b9596fdb98ab003ff38e058f898b39bc7", size = 1325385 }, + { url = "https://files.pythonhosted.org/packages/bb/88/2b41e07bd24f33dcf2f18ec3b74247aa4af3526bad8907b8727ea3caba03/sentencepiece-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:02593eca45440ef39247cee8c47322a34bdcc1d8ae83ad28ba5a899a2cf8d79a", size = 1253319 }, + { url = "https://files.pythonhosted.org/packages/a0/54/38a1af0c6210a3c6f95aa46d23d6640636d020fba7135cd0d9a84ada05a7/sentencepiece-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a0d15781a171d188b661ae4bde1d998c303f6bd8621498c50c671bd45a4798e", size = 1316162 }, + { url = "https://files.pythonhosted.org/packages/ef/66/fb191403ade791ad2c3c1e72fe8413e63781b08cfa3aa4c9dfc536d6e795/sentencepiece-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f5a3e0d9f445ed9d66c0fec47d4b23d12cfc858b407a03c194c1b26c2ac2a63", size = 1387785 }, + { url = "https://files.pythonhosted.org/packages/a9/2d/3bd9b08e70067b2124518b308db6a84a4f8901cc8a4317e2e4288cdd9b4d/sentencepiece-0.2.1-cp311-cp311-win32.whl", hash = "sha256:6d297a1748d429ba8534eebe5535448d78b8acc32d00a29b49acf28102eeb094", size = 999555 }, + { url = "https://files.pythonhosted.org/packages/32/b8/f709977f5fda195ae1ea24f24e7c581163b6f142b1005bc3d0bbfe4d7082/sentencepiece-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:82d9ead6591015f009cb1be1cb1c015d5e6f04046dbb8c9588b931e869a29728", size = 1054617 }, + { url = "https://files.pythonhosted.org/packages/7a/40/a1fc23be23067da0f703709797b464e8a30a1c78cc8a687120cd58d4d509/sentencepiece-0.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:39f8651bd10974eafb9834ce30d9bcf5b73e1fc798a7f7d2528f9820ca86e119", size = 1033877 }, + { url = "https://files.pythonhosted.org/packages/4a/be/32ce495aa1d0e0c323dcb1ba87096037358edee539cac5baf8755a6bd396/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57cae326c8727de58c85977b175af132a7138d84c764635d7e71bbee7e774133", size = 1943152 }, + { url = "https://files.pythonhosted.org/packages/88/7e/ff23008899a58678e98c6ff592bf4d368eee5a71af96d0df6b38a039dd4f/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:56dd39a3c4d6493db3cdca7e8cc68c6b633f0d4195495cbadfcf5af8a22d05a6", size = 1325651 }, + { url = "https://files.pythonhosted.org/packages/19/84/42eb3ce4796777a1b5d3699dfd4dca85113e68b637f194a6c8d786f16a04/sentencepiece-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9381351182ff9888cc80e41c632e7e274b106f450de33d67a9e8f6043da6f76", size = 1253645 }, + { url = "https://files.pythonhosted.org/packages/89/fa/d3d5ebcba3cb9e6d3775a096251860c41a6bc53a1b9461151df83fe93255/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99f955df238021bf11f0fc37cdb54fd5e5b5f7fd30ecc3d93fb48b6815437167", size = 1316273 }, + { url = "https://files.pythonhosted.org/packages/04/88/14f2f4a2b922d8b39be45bf63d79e6cd3a9b2f248b2fcb98a69b12af12f5/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cdfecef430d985f1c2bcbfff3defd1d95dae876fbd0173376012d2d7d24044b", size = 1387881 }, + { url = "https://files.pythonhosted.org/packages/fd/b8/903e5ccb77b4ef140605d5d71b4f9e0ad95d456d6184688073ed11712809/sentencepiece-0.2.1-cp312-cp312-win32.whl", hash = "sha256:a483fd29a34c3e34c39ac5556b0a90942bec253d260235729e50976f5dba1068", size = 999540 }, + { url = "https://files.pythonhosted.org/packages/2d/81/92df5673c067148c2545b1bfe49adfd775bcc3a169a047f5a0e6575ddaca/sentencepiece-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4cdc7c36234fda305e85c32949c5211faaf8dd886096c7cea289ddc12a2d02de", size = 1054671 }, + { url = "https://files.pythonhosted.org/packages/fe/02/c5e3bc518655d714622bec87d83db9cdba1cd0619a4a04e2109751c4f47f/sentencepiece-0.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:daeb5e9e9fcad012324807856113708614d534f596d5008638eb9b40112cd9e4", size = 1033923 }, + { url = "https://files.pythonhosted.org/packages/ba/4a/85fbe1706d4d04a7e826b53f327c4b80f849cf1c7b7c5e31a20a97d8f28b/sentencepiece-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dcd8161eee7b41aae57ded06272905dbd680a0a04b91edd0f64790c796b2f706", size = 1943150 }, + { url = "https://files.pythonhosted.org/packages/c2/83/4cfb393e287509fc2155480b9d184706ef8d9fa8cbf5505d02a5792bf220/sentencepiece-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c6c8f42949f419ff8c7e9960dbadcfbc982d7b5efc2f6748210d3dd53a7de062", size = 1325651 }, + { url = "https://files.pythonhosted.org/packages/8d/de/5a007fb53b1ab0aafc69d11a5a3dd72a289d5a3e78dcf2c3a3d9b14ffe93/sentencepiece-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:097f3394e99456e9e4efba1737c3749d7e23563dd1588ce71a3d007f25475fff", size = 1253641 }, + { url = "https://files.pythonhosted.org/packages/2c/d2/f552be5928105588f4f4d66ee37dd4c61460d8097e62d0e2e0eec41bc61d/sentencepiece-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7b670879c370d350557edabadbad1f6561a9e6968126e6debca4029e5547820", size = 1316271 }, + { url = "https://files.pythonhosted.org/packages/96/df/0cfe748ace5485be740fed9476dee7877f109da32ed0d280312c94ec259f/sentencepiece-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7f0fd2f2693309e6628aeeb2e2faf6edd221134dfccac3308ca0de01f8dab47", size = 1387882 }, + { url = "https://files.pythonhosted.org/packages/ac/dd/f7774d42a881ced8e1739f393ab1e82ece39fc9abd4779e28050c2e975b5/sentencepiece-0.2.1-cp313-cp313-win32.whl", hash = "sha256:92b3816aa2339355fda2c8c4e021a5de92180b00aaccaf5e2808972e77a4b22f", size = 999541 }, + { url = "https://files.pythonhosted.org/packages/dd/e9/932b9eae6fd7019548321eee1ab8d5e3b3d1294df9d9a0c9ac517c7b636d/sentencepiece-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:10ed3dab2044c47f7a2e7b4969b0c430420cdd45735d78c8f853191fa0e3148b", size = 1054669 }, + { url = "https://files.pythonhosted.org/packages/c9/3a/76488a00ea7d6931689cda28726a1447d66bf1a4837943489314593d5596/sentencepiece-0.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac650534e2251083c5f75dde4ff28896ce7c8904133dc8fef42780f4d5588fcd", size = 1033922 }, + { url = "https://files.pythonhosted.org/packages/4a/b6/08fe2ce819e02ccb0296f4843e3f195764ce9829cbda61b7513f29b95718/sentencepiece-0.2.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:8dd4b477a7b069648d19363aad0cab9bad2f4e83b2d179be668efa672500dc94", size = 1946052 }, + { url = "https://files.pythonhosted.org/packages/ab/d9/1ea0e740591ff4c6fc2b6eb1d7510d02f3fb885093f19b2f3abd1363b402/sentencepiece-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0c0f672da370cc490e4c59d89e12289778310a0e71d176c541e4834759e1ae07", size = 1327408 }, + { url = "https://files.pythonhosted.org/packages/99/7e/1fb26e8a21613f6200e1ab88824d5d203714162cf2883248b517deb500b7/sentencepiece-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad8493bea8432dae8d6830365352350f3b4144415a1d09c4c8cb8d30cf3b6c3c", size = 1254857 }, + { url = "https://files.pythonhosted.org/packages/bc/85/c72fd1f3c7a6010544d6ae07f8ddb38b5e2a7e33bd4318f87266c0bbafbf/sentencepiece-0.2.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b81a24733726e3678d2db63619acc5a8dccd074f7aa7a54ecd5ca33ca6d2d596", size = 1315722 }, + { url = "https://files.pythonhosted.org/packages/4a/e8/661e5bd82a8aa641fd6c1020bd0e890ef73230a2b7215ddf9c8cd8e941c2/sentencepiece-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0a81799d0a68d618e89063fb423c3001a034c893069135ffe51fee439ae474d6", size = 1387452 }, + { url = "https://files.pythonhosted.org/packages/99/5e/ae66c361023a470afcbc1fbb8da722c72ea678a2fcd9a18f1a12598c7501/sentencepiece-0.2.1-cp313-cp313t-win32.whl", hash = "sha256:89a3ea015517c42c0341d0d962f3e6aaf2cf10d71b1932d475c44ba48d00aa2b", size = 1002501 }, + { url = "https://files.pythonhosted.org/packages/c1/03/d332828c4ff764e16c1b56c2c8f9a33488bbe796b53fb6b9c4205ddbf167/sentencepiece-0.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:33f068c9382dc2e7c228eedfd8163b52baa86bb92f50d0488bf2b7da7032e484", size = 1057555 }, + { url = "https://files.pythonhosted.org/packages/88/14/5aee0bf0864df9bd82bd59e7711362908e4935e3f9cdc1f57246b5d5c9b9/sentencepiece-0.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:b3616ad246f360e52c85781e47682d31abfb6554c779e42b65333d4b5f44ecc0", size = 1036042 }, + { url = "https://files.pythonhosted.org/packages/24/9c/89eb8b2052f720a612478baf11c8227dcf1dc28cd4ea4c0c19506b5af2a2/sentencepiece-0.2.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:5d0350b686c320068702116276cfb26c066dc7e65cfef173980b11bb4d606719", size = 1943147 }, + { url = "https://files.pythonhosted.org/packages/82/0b/a1432bc87f97c2ace36386ca23e8bd3b91fb40581b5e6148d24b24186419/sentencepiece-0.2.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c7f54a31cde6fa5cb030370566f68152a742f433f8d2be458463d06c208aef33", size = 1325624 }, + { url = "https://files.pythonhosted.org/packages/ea/99/bbe054ebb5a5039457c590e0a4156ed073fb0fe9ce4f7523404dd5b37463/sentencepiece-0.2.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c83b85ab2d6576607f31df77ff86f28182be4a8de6d175d2c33ca609925f5da1", size = 1253670 }, + { url = "https://files.pythonhosted.org/packages/19/ad/d5c7075f701bd97971d7c2ac2904f227566f51ef0838dfbdfdccb58cd212/sentencepiece-0.2.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1855f57db07b51fb51ed6c9c452f570624d2b169b36f0f79ef71a6e6c618cd8b", size = 1316247 }, + { url = "https://files.pythonhosted.org/packages/fb/03/35fbe5f3d9a7435eebd0b473e09584bd3cc354ce118b960445b060d33781/sentencepiece-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01e6912125cb45d3792f530a4d38f8e21bf884d6b4d4ade1b2de5cf7a8d2a52b", size = 1387894 }, + { url = "https://files.pythonhosted.org/packages/dc/aa/956ef729aafb6c8f9c443104c9636489093bb5c61d6b90fc27aa1a865574/sentencepiece-0.2.1-cp314-cp314-win32.whl", hash = "sha256:c415c9de1447e0a74ae3fdb2e52f967cb544113a3a5ce3a194df185cbc1f962f", size = 1096698 }, + { url = "https://files.pythonhosted.org/packages/b8/cb/fe400d8836952cc535c81a0ce47dc6875160e5fedb71d2d9ff0e9894c2a6/sentencepiece-0.2.1-cp314-cp314-win_amd64.whl", hash = "sha256:881b2e44b14fc19feade3cbed314be37de639fc415375cefaa5bc81a4be137fd", size = 1155115 }, + { url = "https://files.pythonhosted.org/packages/32/89/047921cf70f36c7b6b6390876b2399b3633ab73b8d0cb857e5a964238941/sentencepiece-0.2.1-cp314-cp314-win_arm64.whl", hash = "sha256:2005242a16d2dc3ac5fe18aa7667549134d37854823df4c4db244752453b78a8", size = 1133890 }, + { url = "https://files.pythonhosted.org/packages/a1/11/5b414b9fae6255b5fb1e22e2ed3dc3a72d3a694e5703910e640ac78346bb/sentencepiece-0.2.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:a19adcec27c524cb7069a1c741060add95f942d1cbf7ad0d104dffa0a7d28a2b", size = 1946081 }, + { url = "https://files.pythonhosted.org/packages/77/eb/7a5682bb25824db8545f8e5662e7f3e32d72a508fdce086029d89695106b/sentencepiece-0.2.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e37e4b4c4a11662b5db521def4e44d4d30ae69a1743241412a93ae40fdcab4bb", size = 1327406 }, + { url = "https://files.pythonhosted.org/packages/03/b0/811dae8fb9f2784e138785d481469788f2e0d0c109c5737372454415f55f/sentencepiece-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:477c81505db072b3ab627e7eab972ea1025331bd3a92bacbf798df2b75ea86ec", size = 1254846 }, + { url = "https://files.pythonhosted.org/packages/ef/23/195b2e7ec85ebb6a547969f60b723c7aca5a75800ece6cc3f41da872d14e/sentencepiece-0.2.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:010f025a544ef770bb395091d57cb94deb9652d8972e0d09f71d85d5a0816c8c", size = 1315721 }, + { url = "https://files.pythonhosted.org/packages/7e/aa/553dbe4178b5f23eb28e59393dddd64186178b56b81d9b8d5c3ff1c28395/sentencepiece-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:733e59ff1794d26db706cd41fc2d7ca5f6c64a820709cb801dc0ea31780d64ab", size = 1387458 }, + { url = "https://files.pythonhosted.org/packages/66/7c/08ff0012507297a4dd74a5420fdc0eb9e3e80f4e88cab1538d7f28db303d/sentencepiece-0.2.1-cp314-cp314t-win32.whl", hash = "sha256:d3233770f78e637dc8b1fda2cd7c3b99ec77e7505041934188a4e7fe751de3b0", size = 1099765 }, + { url = "https://files.pythonhosted.org/packages/91/d5/2a69e1ce15881beb9ddfc7e3f998322f5cedcd5e4d244cb74dade9441663/sentencepiece-0.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:5e4366c97b68218fd30ea72d70c525e6e78a6c0a88650f57ac4c43c63b234a9d", size = 1157807 }, + { url = "https://files.pythonhosted.org/packages/f3/16/54f611fcfc2d1c46cbe3ec4169780b2cfa7cf63708ef2b71611136db7513/sentencepiece-0.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:105e36e75cbac1292642045458e8da677b2342dcd33df503e640f0b457cb6751", size = 1136264 }, ] [[package]] name = "setuptools" version = "80.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] @@ -2057,9 +2262,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mpmath" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353 }, ] [[package]] @@ -2069,70 +2274,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/2d/b0fce2b8201635f60e8c95990080f58461cc9ca3d5026de2e900f38a7f21/tokenizers-0.21.2.tar.gz", hash = "sha256:fdc7cffde3e2113ba0e6cc7318c40e3438a4d74bbc62bf04bcc63bdfb082ac77", size = 351545, upload-time = "2025-06-24T10:24:52.449Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/2d/b0fce2b8201635f60e8c95990080f58461cc9ca3d5026de2e900f38a7f21/tokenizers-0.21.2.tar.gz", hash = "sha256:fdc7cffde3e2113ba0e6cc7318c40e3438a4d74bbc62bf04bcc63bdfb082ac77", size = 351545 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/cc/2936e2d45ceb130a21d929743f1e9897514691bec123203e10837972296f/tokenizers-0.21.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:342b5dfb75009f2255ab8dec0041287260fed5ce00c323eb6bab639066fef8ec", size = 2875206, upload-time = "2025-06-24T10:24:42.755Z" }, - { url = "https://files.pythonhosted.org/packages/6c/e6/33f41f2cc7861faeba8988e7a77601407bf1d9d28fc79c5903f8f77df587/tokenizers-0.21.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:126df3205d6f3a93fea80c7a8a266a78c1bd8dd2fe043386bafdd7736a23e45f", size = 2732655, upload-time = "2025-06-24T10:24:41.56Z" }, - { url = "https://files.pythonhosted.org/packages/33/2b/1791eb329c07122a75b01035b1a3aa22ad139f3ce0ece1b059b506d9d9de/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a32cd81be21168bd0d6a0f0962d60177c447a1aa1b1e48fa6ec9fc728ee0b12", size = 3019202, upload-time = "2025-06-24T10:24:31.791Z" }, - { url = "https://files.pythonhosted.org/packages/05/15/fd2d8104faa9f86ac68748e6f7ece0b5eb7983c7efc3a2c197cb98c99030/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8bd8999538c405133c2ab999b83b17c08b7fc1b48c1ada2469964605a709ef91", size = 2934539, upload-time = "2025-06-24T10:24:34.567Z" }, - { url = "https://files.pythonhosted.org/packages/a5/2e/53e8fd053e1f3ffbe579ca5f9546f35ac67cf0039ed357ad7ec57f5f5af0/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e9944e61239b083a41cf8fc42802f855e1dca0f499196df37a8ce219abac6eb", size = 3248665, upload-time = "2025-06-24T10:24:39.024Z" }, - { url = "https://files.pythonhosted.org/packages/00/15/79713359f4037aa8f4d1f06ffca35312ac83629da062670e8830917e2153/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:514cd43045c5d546f01142ff9c79a96ea69e4b5cda09e3027708cb2e6d5762ab", size = 3451305, upload-time = "2025-06-24T10:24:36.133Z" }, - { url = "https://files.pythonhosted.org/packages/38/5f/959f3a8756fc9396aeb704292777b84f02a5c6f25c3fc3ba7530db5feb2c/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1b9405822527ec1e0f7d8d2fdb287a5730c3a6518189c968254a8441b21faae", size = 3214757, upload-time = "2025-06-24T10:24:37.784Z" }, - { url = "https://files.pythonhosted.org/packages/c5/74/f41a432a0733f61f3d21b288de6dfa78f7acff309c6f0f323b2833e9189f/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed9a4d51c395103ad24f8e7eb976811c57fbec2af9f133df471afcd922e5020", size = 3121887, upload-time = "2025-06-24T10:24:40.293Z" }, - { url = "https://files.pythonhosted.org/packages/3c/6a/bc220a11a17e5d07b0dfb3b5c628621d4dcc084bccd27cfaead659963016/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c41862df3d873665ec78b6be36fcc30a26e3d4902e9dd8608ed61d49a48bc19", size = 9091965, upload-time = "2025-06-24T10:24:44.431Z" }, - { url = "https://files.pythonhosted.org/packages/6c/bd/ac386d79c4ef20dc6f39c4706640c24823dca7ebb6f703bfe6b5f0292d88/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ed21dc7e624e4220e21758b2e62893be7101453525e3d23264081c9ef9a6d00d", size = 9053372, upload-time = "2025-06-24T10:24:46.455Z" }, - { url = "https://files.pythonhosted.org/packages/63/7b/5440bf203b2a5358f074408f7f9c42884849cd9972879e10ee6b7a8c3b3d/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:0e73770507e65a0e0e2a1affd6b03c36e3bc4377bd10c9ccf51a82c77c0fe365", size = 9298632, upload-time = "2025-06-24T10:24:48.446Z" }, - { url = "https://files.pythonhosted.org/packages/a4/d2/faa1acac3f96a7427866e94ed4289949b2524f0c1878512516567d80563c/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:106746e8aa9014a12109e58d540ad5465b4c183768ea96c03cbc24c44d329958", size = 9470074, upload-time = "2025-06-24T10:24:50.378Z" }, - { url = "https://files.pythonhosted.org/packages/d8/a5/896e1ef0707212745ae9f37e84c7d50269411aef2e9ccd0de63623feecdf/tokenizers-0.21.2-cp39-abi3-win32.whl", hash = "sha256:cabda5a6d15d620b6dfe711e1af52205266d05b379ea85a8a301b3593c60e962", size = 2330115, upload-time = "2025-06-24T10:24:55.069Z" }, - { url = "https://files.pythonhosted.org/packages/13/c3/cc2755ee10be859c4338c962a35b9a663788c0c0b50c0bdd8078fb6870cf/tokenizers-0.21.2-cp39-abi3-win_amd64.whl", hash = "sha256:58747bb898acdb1007f37a7bbe614346e98dc28708ffb66a3fd50ce169ac6c98", size = 2509918, upload-time = "2025-06-24T10:24:53.71Z" }, + { url = "https://files.pythonhosted.org/packages/1d/cc/2936e2d45ceb130a21d929743f1e9897514691bec123203e10837972296f/tokenizers-0.21.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:342b5dfb75009f2255ab8dec0041287260fed5ce00c323eb6bab639066fef8ec", size = 2875206 }, + { url = "https://files.pythonhosted.org/packages/6c/e6/33f41f2cc7861faeba8988e7a77601407bf1d9d28fc79c5903f8f77df587/tokenizers-0.21.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:126df3205d6f3a93fea80c7a8a266a78c1bd8dd2fe043386bafdd7736a23e45f", size = 2732655 }, + { url = "https://files.pythonhosted.org/packages/33/2b/1791eb329c07122a75b01035b1a3aa22ad139f3ce0ece1b059b506d9d9de/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a32cd81be21168bd0d6a0f0962d60177c447a1aa1b1e48fa6ec9fc728ee0b12", size = 3019202 }, + { url = "https://files.pythonhosted.org/packages/05/15/fd2d8104faa9f86ac68748e6f7ece0b5eb7983c7efc3a2c197cb98c99030/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8bd8999538c405133c2ab999b83b17c08b7fc1b48c1ada2469964605a709ef91", size = 2934539 }, + { url = "https://files.pythonhosted.org/packages/a5/2e/53e8fd053e1f3ffbe579ca5f9546f35ac67cf0039ed357ad7ec57f5f5af0/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e9944e61239b083a41cf8fc42802f855e1dca0f499196df37a8ce219abac6eb", size = 3248665 }, + { url = "https://files.pythonhosted.org/packages/00/15/79713359f4037aa8f4d1f06ffca35312ac83629da062670e8830917e2153/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:514cd43045c5d546f01142ff9c79a96ea69e4b5cda09e3027708cb2e6d5762ab", size = 3451305 }, + { url = "https://files.pythonhosted.org/packages/38/5f/959f3a8756fc9396aeb704292777b84f02a5c6f25c3fc3ba7530db5feb2c/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1b9405822527ec1e0f7d8d2fdb287a5730c3a6518189c968254a8441b21faae", size = 3214757 }, + { url = "https://files.pythonhosted.org/packages/c5/74/f41a432a0733f61f3d21b288de6dfa78f7acff309c6f0f323b2833e9189f/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed9a4d51c395103ad24f8e7eb976811c57fbec2af9f133df471afcd922e5020", size = 3121887 }, + { url = "https://files.pythonhosted.org/packages/3c/6a/bc220a11a17e5d07b0dfb3b5c628621d4dcc084bccd27cfaead659963016/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c41862df3d873665ec78b6be36fcc30a26e3d4902e9dd8608ed61d49a48bc19", size = 9091965 }, + { url = "https://files.pythonhosted.org/packages/6c/bd/ac386d79c4ef20dc6f39c4706640c24823dca7ebb6f703bfe6b5f0292d88/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ed21dc7e624e4220e21758b2e62893be7101453525e3d23264081c9ef9a6d00d", size = 9053372 }, + { url = "https://files.pythonhosted.org/packages/63/7b/5440bf203b2a5358f074408f7f9c42884849cd9972879e10ee6b7a8c3b3d/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:0e73770507e65a0e0e2a1affd6b03c36e3bc4377bd10c9ccf51a82c77c0fe365", size = 9298632 }, + { url = "https://files.pythonhosted.org/packages/a4/d2/faa1acac3f96a7427866e94ed4289949b2524f0c1878512516567d80563c/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:106746e8aa9014a12109e58d540ad5465b4c183768ea96c03cbc24c44d329958", size = 9470074 }, + { url = "https://files.pythonhosted.org/packages/d8/a5/896e1ef0707212745ae9f37e84c7d50269411aef2e9ccd0de63623feecdf/tokenizers-0.21.2-cp39-abi3-win32.whl", hash = "sha256:cabda5a6d15d620b6dfe711e1af52205266d05b379ea85a8a301b3593c60e962", size = 2330115 }, + { url = "https://files.pythonhosted.org/packages/13/c3/cc2755ee10be859c4338c962a35b9a663788c0c0b50c0bdd8078fb6870cf/tokenizers-0.21.2-cp39-abi3-win_amd64.whl", hash = "sha256:58747bb898acdb1007f37a7bbe614346e98dc28708ffb66a3fd50ce169ac6c98", size = 2509918 }, ] [[package]] name = "toml" version = "0.10.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] [[package]] @@ -2140,62 +2345,79 @@ name = "torch" version = "2.7.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "filelock", marker = "python_full_version < '3.13'" }, { name = "fsspec", marker = "python_full_version < '3.13'" }, { name = "jinja2", marker = "python_full_version < '3.13'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, - { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", version = "12.6.80", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", version = "9.5.1.17", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", version = "11.3.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", version = "1.11.1.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", version = "10.3.7.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", version = "11.7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", version = "0.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", version = "2.26.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "networkx", marker = "python_full_version < '3.13'" }, + { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-cupti-cu12", version = "12.6.80", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-runtime-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cudnn-cu12", version = "9.5.1.17", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufft-cu12", version = "11.3.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufile-cu12", version = "1.11.1.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-curand-cu12", version = "10.3.7.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusolver-cu12", version = "11.7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparselt-cu12", version = "0.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nccl-cu12", version = "2.26.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvtx-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, { name = "setuptools", marker = "python_full_version == '3.12.*'" }, { name = "sympy", marker = "python_full_version < '3.13'" }, - { name = "triton", version = "3.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "triton", version = "3.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/27/2e06cb52adf89fe6e020963529d17ed51532fc73c1e6d1b18420ef03338c/torch-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:a103b5d782af5bd119b81dbcc7ffc6fa09904c423ff8db397a1e6ea8fd71508f", size = 99089441, upload-time = "2025-06-04T17:38:48.268Z" }, - { url = "https://files.pythonhosted.org/packages/0a/7c/0a5b3aee977596459ec45be2220370fde8e017f651fecc40522fd478cb1e/torch-2.7.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:fe955951bdf32d182ee8ead6c3186ad54781492bf03d547d31771a01b3d6fb7d", size = 821154516, upload-time = "2025-06-04T17:36:28.556Z" }, - { url = "https://files.pythonhosted.org/packages/f9/91/3d709cfc5e15995fb3fe7a6b564ce42280d3a55676dad672205e94f34ac9/torch-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:885453d6fba67d9991132143bf7fa06b79b24352f4506fd4d10b309f53454162", size = 216093147, upload-time = "2025-06-04T17:39:38.132Z" }, - { url = "https://files.pythonhosted.org/packages/92/f6/5da3918414e07da9866ecb9330fe6ffdebe15cb9a4c5ada7d4b6e0a6654d/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:d72acfdb86cee2a32c0ce0101606f3758f0d8bb5f8f31e7920dc2809e963aa7c", size = 68630914, upload-time = "2025-06-04T17:39:31.162Z" }, - { url = "https://files.pythonhosted.org/packages/11/56/2eae3494e3d375533034a8e8cf0ba163363e996d85f0629441fa9d9843fe/torch-2.7.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:236f501f2e383f1cb861337bdf057712182f910f10aeaf509065d54d339e49b2", size = 99093039, upload-time = "2025-06-04T17:39:06.963Z" }, - { url = "https://files.pythonhosted.org/packages/e5/94/34b80bd172d0072c9979708ccd279c2da2f55c3ef318eceec276ab9544a4/torch-2.7.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:06eea61f859436622e78dd0cdd51dbc8f8c6d76917a9cf0555a333f9eac31ec1", size = 821174704, upload-time = "2025-06-04T17:37:03.799Z" }, - { url = "https://files.pythonhosted.org/packages/50/9e/acf04ff375b0b49a45511c55d188bcea5c942da2aaf293096676110086d1/torch-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:8273145a2e0a3c6f9fd2ac36762d6ee89c26d430e612b95a99885df083b04e52", size = 216095937, upload-time = "2025-06-04T17:39:24.83Z" }, - { url = "https://files.pythonhosted.org/packages/5b/2b/d36d57c66ff031f93b4fa432e86802f84991477e522adcdffd314454326b/torch-2.7.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:aea4fc1bf433d12843eb2c6b2204861f43d8364597697074c8d38ae2507f8730", size = 68640034, upload-time = "2025-06-04T17:39:17.989Z" }, - { url = "https://files.pythonhosted.org/packages/87/93/fb505a5022a2e908d81fe9a5e0aa84c86c0d5f408173be71c6018836f34e/torch-2.7.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:27ea1e518df4c9de73af7e8a720770f3628e7f667280bce2be7a16292697e3fa", size = 98948276, upload-time = "2025-06-04T17:39:12.852Z" }, - { url = "https://files.pythonhosted.org/packages/56/7e/67c3fe2b8c33f40af06326a3d6ae7776b3e3a01daa8f71d125d78594d874/torch-2.7.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c33360cfc2edd976c2633b3b66c769bdcbbf0e0b6550606d188431c81e7dd1fc", size = 821025792, upload-time = "2025-06-04T17:34:58.747Z" }, - { url = "https://files.pythonhosted.org/packages/a1/37/a37495502bc7a23bf34f89584fa5a78e25bae7b8da513bc1b8f97afb7009/torch-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:d8bf6e1856ddd1807e79dc57e54d3335f2b62e6f316ed13ed3ecfe1fc1df3d8b", size = 216050349, upload-time = "2025-06-04T17:38:59.709Z" }, - { url = "https://files.pythonhosted.org/packages/3a/60/04b77281c730bb13460628e518c52721257814ac6c298acd25757f6a175c/torch-2.7.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:787687087412c4bd68d315e39bc1223f08aae1d16a9e9771d95eabbb04ae98fb", size = 68645146, upload-time = "2025-06-04T17:38:52.97Z" }, - { url = "https://files.pythonhosted.org/packages/66/81/e48c9edb655ee8eb8c2a6026abdb6f8d2146abd1f150979ede807bb75dcb/torch-2.7.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:03563603d931e70722dce0e11999d53aa80a375a3d78e6b39b9f6805ea0a8d28", size = 98946649, upload-time = "2025-06-04T17:38:43.031Z" }, - { url = "https://files.pythonhosted.org/packages/3a/24/efe2f520d75274fc06b695c616415a1e8a1021d87a13c68ff9dce733d088/torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:d632f5417b6980f61404a125b999ca6ebd0b8b4bbdbb5fbbba44374ab619a412", size = 821033192, upload-time = "2025-06-04T17:38:09.146Z" }, - { url = "https://files.pythonhosted.org/packages/dd/d9/9c24d230333ff4e9b6807274f6f8d52a864210b52ec794c5def7925f4495/torch-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:23660443e13995ee93e3d844786701ea4ca69f337027b05182f5ba053ce43b38", size = 216055668, upload-time = "2025-06-04T17:38:36.253Z" }, - { url = "https://files.pythonhosted.org/packages/95/bf/e086ee36ddcef9299f6e708d3b6c8487c1651787bb9ee2939eb2a7f74911/torch-2.7.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0da4f4dba9f65d0d203794e619fe7ca3247a55ffdcbd17ae8fb83c8b2dc9b585", size = 68925988, upload-time = "2025-06-04T17:38:29.273Z" }, - { url = "https://files.pythonhosted.org/packages/69/6a/67090dcfe1cf9048448b31555af6efb149f7afa0a310a366adbdada32105/torch-2.7.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e08d7e6f21a617fe38eeb46dd2213ded43f27c072e9165dc27300c9ef9570934", size = 99028857, upload-time = "2025-06-04T17:37:50.956Z" }, - { url = "https://files.pythonhosted.org/packages/90/1c/48b988870823d1cc381f15ec4e70ed3d65e043f43f919329b0045ae83529/torch-2.7.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:30207f672328a42df4f2174b8f426f354b2baa0b7cca3a0adb3d6ab5daf00dc8", size = 821098066, upload-time = "2025-06-04T17:37:33.939Z" }, - { url = "https://files.pythonhosted.org/packages/7b/eb/10050d61c9d5140c5dc04a89ed3257ef1a6b93e49dd91b95363d757071e0/torch-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:79042feca1c634aaf6603fe6feea8c6b30dfa140a6bbc0b973e2260c7e79a22e", size = 216336310, upload-time = "2025-06-04T17:36:09.862Z" }, - { url = "https://files.pythonhosted.org/packages/b1/29/beb45cdf5c4fc3ebe282bf5eafc8dfd925ead7299b3c97491900fe5ed844/torch-2.7.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:988b0cbc4333618a1056d2ebad9eb10089637b659eb645434d0809d8d937b946", size = 68645708, upload-time = "2025-06-04T17:34:39.852Z" }, + { url = "https://files.pythonhosted.org/packages/6a/27/2e06cb52adf89fe6e020963529d17ed51532fc73c1e6d1b18420ef03338c/torch-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:a103b5d782af5bd119b81dbcc7ffc6fa09904c423ff8db397a1e6ea8fd71508f", size = 99089441 }, + { url = "https://files.pythonhosted.org/packages/0a/7c/0a5b3aee977596459ec45be2220370fde8e017f651fecc40522fd478cb1e/torch-2.7.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:fe955951bdf32d182ee8ead6c3186ad54781492bf03d547d31771a01b3d6fb7d", size = 821154516 }, + { url = "https://files.pythonhosted.org/packages/f9/91/3d709cfc5e15995fb3fe7a6b564ce42280d3a55676dad672205e94f34ac9/torch-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:885453d6fba67d9991132143bf7fa06b79b24352f4506fd4d10b309f53454162", size = 216093147 }, + { url = "https://files.pythonhosted.org/packages/92/f6/5da3918414e07da9866ecb9330fe6ffdebe15cb9a4c5ada7d4b6e0a6654d/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:d72acfdb86cee2a32c0ce0101606f3758f0d8bb5f8f31e7920dc2809e963aa7c", size = 68630914 }, + { url = "https://files.pythonhosted.org/packages/11/56/2eae3494e3d375533034a8e8cf0ba163363e996d85f0629441fa9d9843fe/torch-2.7.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:236f501f2e383f1cb861337bdf057712182f910f10aeaf509065d54d339e49b2", size = 99093039 }, + { url = "https://files.pythonhosted.org/packages/e5/94/34b80bd172d0072c9979708ccd279c2da2f55c3ef318eceec276ab9544a4/torch-2.7.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:06eea61f859436622e78dd0cdd51dbc8f8c6d76917a9cf0555a333f9eac31ec1", size = 821174704 }, + { url = "https://files.pythonhosted.org/packages/50/9e/acf04ff375b0b49a45511c55d188bcea5c942da2aaf293096676110086d1/torch-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:8273145a2e0a3c6f9fd2ac36762d6ee89c26d430e612b95a99885df083b04e52", size = 216095937 }, + { url = "https://files.pythonhosted.org/packages/5b/2b/d36d57c66ff031f93b4fa432e86802f84991477e522adcdffd314454326b/torch-2.7.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:aea4fc1bf433d12843eb2c6b2204861f43d8364597697074c8d38ae2507f8730", size = 68640034 }, + { url = "https://files.pythonhosted.org/packages/87/93/fb505a5022a2e908d81fe9a5e0aa84c86c0d5f408173be71c6018836f34e/torch-2.7.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:27ea1e518df4c9de73af7e8a720770f3628e7f667280bce2be7a16292697e3fa", size = 98948276 }, + { url = "https://files.pythonhosted.org/packages/56/7e/67c3fe2b8c33f40af06326a3d6ae7776b3e3a01daa8f71d125d78594d874/torch-2.7.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c33360cfc2edd976c2633b3b66c769bdcbbf0e0b6550606d188431c81e7dd1fc", size = 821025792 }, + { url = "https://files.pythonhosted.org/packages/a1/37/a37495502bc7a23bf34f89584fa5a78e25bae7b8da513bc1b8f97afb7009/torch-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:d8bf6e1856ddd1807e79dc57e54d3335f2b62e6f316ed13ed3ecfe1fc1df3d8b", size = 216050349 }, + { url = "https://files.pythonhosted.org/packages/3a/60/04b77281c730bb13460628e518c52721257814ac6c298acd25757f6a175c/torch-2.7.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:787687087412c4bd68d315e39bc1223f08aae1d16a9e9771d95eabbb04ae98fb", size = 68645146 }, + { url = "https://files.pythonhosted.org/packages/66/81/e48c9edb655ee8eb8c2a6026abdb6f8d2146abd1f150979ede807bb75dcb/torch-2.7.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:03563603d931e70722dce0e11999d53aa80a375a3d78e6b39b9f6805ea0a8d28", size = 98946649 }, + { url = "https://files.pythonhosted.org/packages/3a/24/efe2f520d75274fc06b695c616415a1e8a1021d87a13c68ff9dce733d088/torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:d632f5417b6980f61404a125b999ca6ebd0b8b4bbdbb5fbbba44374ab619a412", size = 821033192 }, + { url = "https://files.pythonhosted.org/packages/dd/d9/9c24d230333ff4e9b6807274f6f8d52a864210b52ec794c5def7925f4495/torch-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:23660443e13995ee93e3d844786701ea4ca69f337027b05182f5ba053ce43b38", size = 216055668 }, + { url = "https://files.pythonhosted.org/packages/95/bf/e086ee36ddcef9299f6e708d3b6c8487c1651787bb9ee2939eb2a7f74911/torch-2.7.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0da4f4dba9f65d0d203794e619fe7ca3247a55ffdcbd17ae8fb83c8b2dc9b585", size = 68925988 }, + { url = "https://files.pythonhosted.org/packages/69/6a/67090dcfe1cf9048448b31555af6efb149f7afa0a310a366adbdada32105/torch-2.7.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e08d7e6f21a617fe38eeb46dd2213ded43f27c072e9165dc27300c9ef9570934", size = 99028857 }, + { url = "https://files.pythonhosted.org/packages/90/1c/48b988870823d1cc381f15ec4e70ed3d65e043f43f919329b0045ae83529/torch-2.7.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:30207f672328a42df4f2174b8f426f354b2baa0b7cca3a0adb3d6ab5daf00dc8", size = 821098066 }, + { url = "https://files.pythonhosted.org/packages/7b/eb/10050d61c9d5140c5dc04a89ed3257ef1a6b93e49dd91b95363d757071e0/torch-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:79042feca1c634aaf6603fe6feea8c6b30dfa140a6bbc0b973e2260c7e79a22e", size = 216336310 }, + { url = "https://files.pythonhosted.org/packages/b1/29/beb45cdf5c4fc3ebe282bf5eafc8dfd925ead7299b3c97491900fe5ed844/torch-2.7.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:988b0cbc4333618a1056d2ebad9eb10089637b659eb645434d0809d8d937b946", size = 68645708 }, ] [[package]] @@ -2203,55 +2425,61 @@ name = "torch" version = "2.8.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "filelock", marker = "python_full_version >= '3.13'" }, { name = "fsspec", marker = "python_full_version >= '3.13'" }, { name = "jinja2", marker = "python_full_version >= '3.13'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, - { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", version = "9.10.2.21", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", version = "11.3.3.83", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", version = "1.13.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", version = "10.3.9.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", version = "11.7.3.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", version = "0.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", version = "2.27.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "networkx", marker = "python_full_version >= '3.13'" }, + { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-cupti-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-runtime-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cudnn-cu12", version = "9.10.2.21", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufft-cu12", version = "11.3.3.83", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufile-cu12", version = "1.13.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-curand-cu12", version = "10.3.9.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusolver-cu12", version = "11.7.3.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparselt-cu12", version = "0.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nccl-cu12", version = "2.27.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvtx-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, { name = "setuptools", marker = "python_full_version >= '3.13'" }, { name = "sympy", marker = "python_full_version >= '3.13'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" }, { name = "typing-extensions", marker = "python_full_version >= '3.13'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/63/28/110f7274254f1b8476c561dada127173f994afa2b1ffc044efb773c15650/torch-2.8.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:0be92c08b44009d4131d1ff7a8060d10bafdb7ddcb7359ef8d8c5169007ea905", size = 102052793, upload-time = "2025-08-06T14:53:15.852Z" }, - { url = "https://files.pythonhosted.org/packages/70/1c/58da560016f81c339ae14ab16c98153d51c941544ae568da3cb5b1ceb572/torch-2.8.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:89aa9ee820bb39d4d72b794345cccef106b574508dd17dbec457949678c76011", size = 888025420, upload-time = "2025-08-06T14:54:18.014Z" }, - { url = "https://files.pythonhosted.org/packages/70/87/f69752d0dd4ba8218c390f0438130c166fa264a33b7025adb5014b92192c/torch-2.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e8e5bf982e87e2b59d932769938b698858c64cc53753894be25629bdf5cf2f46", size = 241363614, upload-time = "2025-08-06T14:53:31.496Z" }, - { url = "https://files.pythonhosted.org/packages/ef/d6/e6d4c57e61c2b2175d3aafbfb779926a2cfd7c32eeda7c543925dceec923/torch-2.8.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a3f16a58a9a800f589b26d47ee15aca3acf065546137fc2af039876135f4c760", size = 73611154, upload-time = "2025-08-06T14:53:10.919Z" }, - { url = "https://files.pythonhosted.org/packages/8f/c4/3e7a3887eba14e815e614db70b3b529112d1513d9dae6f4d43e373360b7f/torch-2.8.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:220a06fd7af8b653c35d359dfe1aaf32f65aa85befa342629f716acb134b9710", size = 102073391, upload-time = "2025-08-06T14:53:20.937Z" }, - { url = "https://files.pythonhosted.org/packages/5a/63/4fdc45a0304536e75a5e1b1bbfb1b56dd0e2743c48ee83ca729f7ce44162/torch-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c12fa219f51a933d5f80eeb3a7a5d0cbe9168c0a14bbb4055f1979431660879b", size = 888063640, upload-time = "2025-08-06T14:55:05.325Z" }, - { url = "https://files.pythonhosted.org/packages/84/57/2f64161769610cf6b1c5ed782bd8a780e18a3c9d48931319f2887fa9d0b1/torch-2.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c7ef765e27551b2fbfc0f41bcf270e1292d9bf79f8e0724848b1682be6e80aa", size = 241366752, upload-time = "2025-08-06T14:53:38.692Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5e/05a5c46085d9b97e928f3f037081d3d2b87fb4b4195030fc099aaec5effc/torch-2.8.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:5ae0524688fb6707c57a530c2325e13bb0090b745ba7b4a2cd6a3ce262572916", size = 73621174, upload-time = "2025-08-06T14:53:25.44Z" }, - { url = "https://files.pythonhosted.org/packages/49/0c/2fd4df0d83a495bb5e54dca4474c4ec5f9c62db185421563deeb5dabf609/torch-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705", size = 101906089, upload-time = "2025-08-06T14:53:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/99/a8/6acf48d48838fb8fe480597d98a0668c2beb02ee4755cc136de92a0a956f/torch-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c", size = 887913624, upload-time = "2025-08-06T14:56:44.33Z" }, - { url = "https://files.pythonhosted.org/packages/af/8a/5c87f08e3abd825c7dfecef5a0f1d9aa5df5dd0e3fd1fa2f490a8e512402/torch-2.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e", size = 241326087, upload-time = "2025-08-06T14:53:46.503Z" }, - { url = "https://files.pythonhosted.org/packages/be/66/5c9a321b325aaecb92d4d1855421e3a055abd77903b7dab6575ca07796db/torch-2.8.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0", size = 73630478, upload-time = "2025-08-06T14:53:57.144Z" }, - { url = "https://files.pythonhosted.org/packages/10/4e/469ced5a0603245d6a19a556e9053300033f9c5baccf43a3d25ba73e189e/torch-2.8.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2b2f96814e0345f5a5aed9bf9734efa913678ed19caf6dc2cddb7930672d6128", size = 101936856, upload-time = "2025-08-06T14:54:01.526Z" }, - { url = "https://files.pythonhosted.org/packages/16/82/3948e54c01b2109238357c6f86242e6ecbf0c63a1af46906772902f82057/torch-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:65616ca8ec6f43245e1f5f296603e33923f4c30f93d65e103d9e50c25b35150b", size = 887922844, upload-time = "2025-08-06T14:55:50.78Z" }, - { url = "https://files.pythonhosted.org/packages/e3/54/941ea0a860f2717d86a811adf0c2cd01b3983bdd460d0803053c4e0b8649/torch-2.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:659df54119ae03e83a800addc125856effda88b016dfc54d9f65215c3975be16", size = 241330968, upload-time = "2025-08-06T14:54:45.293Z" }, - { url = "https://files.pythonhosted.org/packages/de/69/8b7b13bba430f5e21d77708b616f767683629fc4f8037564a177d20f90ed/torch-2.8.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767", size = 73915128, upload-time = "2025-08-06T14:54:34.769Z" }, - { url = "https://files.pythonhosted.org/packages/15/0e/8a800e093b7f7430dbaefa80075aee9158ec22e4c4fc3c1a66e4fb96cb4f/torch-2.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:83c13411a26fac3d101fe8035a6b0476ae606deb8688e904e796a3534c197def", size = 102020139, upload-time = "2025-08-06T14:54:39.047Z" }, - { url = "https://files.pythonhosted.org/packages/4a/15/5e488ca0bc6162c86a33b58642bc577c84ded17c7b72d97e49b5833e2d73/torch-2.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8f0a9d617a66509ded240add3754e462430a6c1fc5589f86c17b433dd808f97a", size = 887990692, upload-time = "2025-08-06T14:56:18.286Z" }, - { url = "https://files.pythonhosted.org/packages/b4/a8/6a04e4b54472fc5dba7ca2341ab219e529f3c07b6941059fbf18dccac31f/torch-2.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a7242b86f42be98ac674b88a4988643b9bc6145437ec8f048fea23f72feb5eca", size = 241603453, upload-time = "2025-08-06T14:55:22.945Z" }, - { url = "https://files.pythonhosted.org/packages/04/6e/650bb7f28f771af0cb791b02348db8b7f5f64f40f6829ee82aa6ce99aabe/torch-2.8.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211", size = 73632395, upload-time = "2025-08-06T14:55:28.645Z" }, + { url = "https://files.pythonhosted.org/packages/63/28/110f7274254f1b8476c561dada127173f994afa2b1ffc044efb773c15650/torch-2.8.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:0be92c08b44009d4131d1ff7a8060d10bafdb7ddcb7359ef8d8c5169007ea905", size = 102052793 }, + { url = "https://files.pythonhosted.org/packages/70/1c/58da560016f81c339ae14ab16c98153d51c941544ae568da3cb5b1ceb572/torch-2.8.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:89aa9ee820bb39d4d72b794345cccef106b574508dd17dbec457949678c76011", size = 888025420 }, + { url = "https://files.pythonhosted.org/packages/70/87/f69752d0dd4ba8218c390f0438130c166fa264a33b7025adb5014b92192c/torch-2.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e8e5bf982e87e2b59d932769938b698858c64cc53753894be25629bdf5cf2f46", size = 241363614 }, + { url = "https://files.pythonhosted.org/packages/ef/d6/e6d4c57e61c2b2175d3aafbfb779926a2cfd7c32eeda7c543925dceec923/torch-2.8.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a3f16a58a9a800f589b26d47ee15aca3acf065546137fc2af039876135f4c760", size = 73611154 }, + { url = "https://files.pythonhosted.org/packages/8f/c4/3e7a3887eba14e815e614db70b3b529112d1513d9dae6f4d43e373360b7f/torch-2.8.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:220a06fd7af8b653c35d359dfe1aaf32f65aa85befa342629f716acb134b9710", size = 102073391 }, + { url = "https://files.pythonhosted.org/packages/5a/63/4fdc45a0304536e75a5e1b1bbfb1b56dd0e2743c48ee83ca729f7ce44162/torch-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c12fa219f51a933d5f80eeb3a7a5d0cbe9168c0a14bbb4055f1979431660879b", size = 888063640 }, + { url = "https://files.pythonhosted.org/packages/84/57/2f64161769610cf6b1c5ed782bd8a780e18a3c9d48931319f2887fa9d0b1/torch-2.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c7ef765e27551b2fbfc0f41bcf270e1292d9bf79f8e0724848b1682be6e80aa", size = 241366752 }, + { url = "https://files.pythonhosted.org/packages/a4/5e/05a5c46085d9b97e928f3f037081d3d2b87fb4b4195030fc099aaec5effc/torch-2.8.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:5ae0524688fb6707c57a530c2325e13bb0090b745ba7b4a2cd6a3ce262572916", size = 73621174 }, + { url = "https://files.pythonhosted.org/packages/49/0c/2fd4df0d83a495bb5e54dca4474c4ec5f9c62db185421563deeb5dabf609/torch-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705", size = 101906089 }, + { url = "https://files.pythonhosted.org/packages/99/a8/6acf48d48838fb8fe480597d98a0668c2beb02ee4755cc136de92a0a956f/torch-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c", size = 887913624 }, + { url = "https://files.pythonhosted.org/packages/af/8a/5c87f08e3abd825c7dfecef5a0f1d9aa5df5dd0e3fd1fa2f490a8e512402/torch-2.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e", size = 241326087 }, + { url = "https://files.pythonhosted.org/packages/be/66/5c9a321b325aaecb92d4d1855421e3a055abd77903b7dab6575ca07796db/torch-2.8.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0", size = 73630478 }, + { url = "https://files.pythonhosted.org/packages/10/4e/469ced5a0603245d6a19a556e9053300033f9c5baccf43a3d25ba73e189e/torch-2.8.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2b2f96814e0345f5a5aed9bf9734efa913678ed19caf6dc2cddb7930672d6128", size = 101936856 }, + { url = "https://files.pythonhosted.org/packages/16/82/3948e54c01b2109238357c6f86242e6ecbf0c63a1af46906772902f82057/torch-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:65616ca8ec6f43245e1f5f296603e33923f4c30f93d65e103d9e50c25b35150b", size = 887922844 }, + { url = "https://files.pythonhosted.org/packages/e3/54/941ea0a860f2717d86a811adf0c2cd01b3983bdd460d0803053c4e0b8649/torch-2.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:659df54119ae03e83a800addc125856effda88b016dfc54d9f65215c3975be16", size = 241330968 }, + { url = "https://files.pythonhosted.org/packages/de/69/8b7b13bba430f5e21d77708b616f767683629fc4f8037564a177d20f90ed/torch-2.8.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767", size = 73915128 }, + { url = "https://files.pythonhosted.org/packages/15/0e/8a800e093b7f7430dbaefa80075aee9158ec22e4c4fc3c1a66e4fb96cb4f/torch-2.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:83c13411a26fac3d101fe8035a6b0476ae606deb8688e904e796a3534c197def", size = 102020139 }, + { url = "https://files.pythonhosted.org/packages/4a/15/5e488ca0bc6162c86a33b58642bc577c84ded17c7b72d97e49b5833e2d73/torch-2.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8f0a9d617a66509ded240add3754e462430a6c1fc5589f86c17b433dd808f97a", size = 887990692 }, + { url = "https://files.pythonhosted.org/packages/b4/a8/6a04e4b54472fc5dba7ca2341ab219e529f3c07b6941059fbf18dccac31f/torch-2.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a7242b86f42be98ac674b88a4988643b9bc6145437ec8f048fea23f72feb5eca", size = 241603453 }, + { url = "https://files.pythonhosted.org/packages/04/6e/650bb7f28f771af0cb791b02348db8b7f5f64f40f6829ee82aa6ce99aabe/torch-2.8.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211", size = 73632395 }, ] [[package]] @@ -2259,22 +2487,22 @@ name = "tqdm" version = "4.67.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, ] [[package]] name = "transformers" -version = "4.53.2" +version = "4.55.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "huggingface-hub" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or python_full_version >= '3.13'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and python_full_version < '3.13'" }, { name = "packaging" }, { name = "pyyaml" }, { name = "regex" }, @@ -2283,9 +2511,9 @@ dependencies = [ { name = "tokenizers" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4c/67/80f51466ec447028fd84469b208eb742533ce06cc8fad2e3181380199e5c/transformers-4.53.2.tar.gz", hash = "sha256:6c3ed95edfb1cba71c4245758f1b4878c93bf8cde77d076307dacb2cbbd72be2", size = 9201233, upload-time = "2025-07-11T12:39:08.742Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/43/3cb831d5f28cc723516e5bb43a8c6042aca3038bb36b6bd6016b40dfd1e8/transformers-4.55.4.tar.gz", hash = "sha256:574a30559bc273c7a4585599ff28ab6b676e96dc56ffd2025ecfce2fd0ab915d", size = 9573015 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/88/beb33a79a382fcd2aed0be5222bdc47f41e4bfe7aaa90ae1374f1d8ea2af/transformers-4.53.2-py3-none-any.whl", hash = "sha256:db8f4819bb34f000029c73c3c557e7d06fc1b8e612ec142eecdae3947a9c78bf", size = 10826609, upload-time = "2025-07-11T12:39:05.461Z" }, + { url = "https://files.pythonhosted.org/packages/fa/0a/8791a6ee0529c45f669566969e99b75e2ab20eb0bfee8794ce295c18bdad/transformers-4.55.4-py3-none-any.whl", hash = "sha256:df28f3849665faba4af5106f0db4510323277c4bb595055340544f7e59d06458", size = 11269659 }, ] [[package]] @@ -2293,19 +2521,22 @@ name = "triton" version = "3.3.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "setuptools", marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "setuptools", marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/a9/549e51e9b1b2c9b854fd761a1d23df0ba2fbc60bd0c13b489ffa518cfcb7/triton-3.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b74db445b1c562844d3cfad6e9679c72e93fdfb1a90a24052b03bb5c49d1242e", size = 155600257, upload-time = "2025-05-29T23:39:36.085Z" }, - { url = "https://files.pythonhosted.org/packages/21/2f/3e56ea7b58f80ff68899b1dbe810ff257c9d177d288c6b0f55bf2fe4eb50/triton-3.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b31e3aa26f8cb3cc5bf4e187bf737cbacf17311e1112b781d4a059353dfd731b", size = 155689937, upload-time = "2025-05-29T23:39:44.182Z" }, - { url = "https://files.pythonhosted.org/packages/24/5f/950fb373bf9c01ad4eb5a8cd5eaf32cdf9e238c02f9293557a2129b9c4ac/triton-3.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9999e83aba21e1a78c1f36f21bce621b77bcaa530277a50484a7cb4a822f6e43", size = 155669138, upload-time = "2025-05-29T23:39:51.771Z" }, - { url = "https://files.pythonhosted.org/packages/74/1f/dfb531f90a2d367d914adfee771babbd3f1a5b26c3f5fbc458dee21daa78/triton-3.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b89d846b5a4198317fec27a5d3a609ea96b6d557ff44b56c23176546023c4240", size = 155673035, upload-time = "2025-05-29T23:40:02.468Z" }, - { url = "https://files.pythonhosted.org/packages/28/71/bd20ffcb7a64c753dc2463489a61bf69d531f308e390ad06390268c4ea04/triton-3.3.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3198adb9d78b77818a5388bff89fa72ff36f9da0bc689db2f0a651a67ce6a42", size = 155735832, upload-time = "2025-05-29T23:40:10.522Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a9/549e51e9b1b2c9b854fd761a1d23df0ba2fbc60bd0c13b489ffa518cfcb7/triton-3.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b74db445b1c562844d3cfad6e9679c72e93fdfb1a90a24052b03bb5c49d1242e", size = 155600257 }, + { url = "https://files.pythonhosted.org/packages/21/2f/3e56ea7b58f80ff68899b1dbe810ff257c9d177d288c6b0f55bf2fe4eb50/triton-3.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b31e3aa26f8cb3cc5bf4e187bf737cbacf17311e1112b781d4a059353dfd731b", size = 155689937 }, + { url = "https://files.pythonhosted.org/packages/24/5f/950fb373bf9c01ad4eb5a8cd5eaf32cdf9e238c02f9293557a2129b9c4ac/triton-3.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9999e83aba21e1a78c1f36f21bce621b77bcaa530277a50484a7cb4a822f6e43", size = 155669138 }, + { url = "https://files.pythonhosted.org/packages/74/1f/dfb531f90a2d367d914adfee771babbd3f1a5b26c3f5fbc458dee21daa78/triton-3.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b89d846b5a4198317fec27a5d3a609ea96b6d557ff44b56c23176546023c4240", size = 155673035 }, + { url = "https://files.pythonhosted.org/packages/28/71/bd20ffcb7a64c753dc2463489a61bf69d531f308e390ad06390268c4ea04/triton-3.3.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3198adb9d78b77818a5388bff89fa72ff36f9da0bc689db2f0a651a67ce6a42", size = 155735832 }, ] [[package]] @@ -2313,17 +2544,18 @@ name = "triton" version = "3.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "setuptools", marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "setuptools", marker = "(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/62/ee/0ee5f64a87eeda19bbad9bc54ae5ca5b98186ed00055281fd40fb4beb10e/triton-3.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ff2785de9bc02f500e085420273bb5cc9c9bb767584a4aa28d6e360cec70128", size = 155430069, upload-time = "2025-07-30T19:58:21.715Z" }, - { url = "https://files.pythonhosted.org/packages/7d/39/43325b3b651d50187e591eefa22e236b2981afcebaefd4f2fc0ea99df191/triton-3.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b70f5e6a41e52e48cfc087436c8a28c17ff98db369447bcaff3b887a3ab4467", size = 155531138, upload-time = "2025-07-30T19:58:29.908Z" }, - { url = "https://files.pythonhosted.org/packages/d0/66/b1eb52839f563623d185f0927eb3530ee4d5ffe9d377cdaf5346b306689e/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04", size = 155560068, upload-time = "2025-07-30T19:58:37.081Z" }, - { url = "https://files.pythonhosted.org/packages/30/7b/0a685684ed5322d2af0bddefed7906674f67974aa88b0fae6e82e3b766f6/triton-3.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00be2964616f4c619193cb0d1b29a99bd4b001d7dc333816073f92cf2a8ccdeb", size = 155569223, upload-time = "2025-07-30T19:58:44.017Z" }, - { url = "https://files.pythonhosted.org/packages/20/63/8cb444ad5cdb25d999b7d647abac25af0ee37d292afc009940c05b82dda0/triton-3.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7936b18a3499ed62059414d7df563e6c163c5e16c3773678a3ee3d417865035d", size = 155659780, upload-time = "2025-07-30T19:58:51.171Z" }, + { url = "https://files.pythonhosted.org/packages/62/ee/0ee5f64a87eeda19bbad9bc54ae5ca5b98186ed00055281fd40fb4beb10e/triton-3.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ff2785de9bc02f500e085420273bb5cc9c9bb767584a4aa28d6e360cec70128", size = 155430069 }, + { url = "https://files.pythonhosted.org/packages/7d/39/43325b3b651d50187e591eefa22e236b2981afcebaefd4f2fc0ea99df191/triton-3.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b70f5e6a41e52e48cfc087436c8a28c17ff98db369447bcaff3b887a3ab4467", size = 155531138 }, + { url = "https://files.pythonhosted.org/packages/d0/66/b1eb52839f563623d185f0927eb3530ee4d5ffe9d377cdaf5346b306689e/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04", size = 155560068 }, + { url = "https://files.pythonhosted.org/packages/30/7b/0a685684ed5322d2af0bddefed7906674f67974aa88b0fae6e82e3b766f6/triton-3.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00be2964616f4c619193cb0d1b29a99bd4b001d7dc333816073f92cf2a8ccdeb", size = 155569223 }, + { url = "https://files.pythonhosted.org/packages/20/63/8cb444ad5cdb25d999b7d647abac25af0ee37d292afc009940c05b82dda0/triton-3.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7936b18a3499ed62059414d7df563e6c163c5e16c3773678a3ee3d417865035d", size = 155659780 }, ] [[package]] @@ -2341,34 +2573,34 @@ dependencies = [ { name = "rich" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c8/a2/6df94fc5c8e2170d21d7134a565c3a8fb84f9797c1dd65a5976aaf714418/twine-6.1.0.tar.gz", hash = "sha256:be324f6272eff91d07ee93f251edf232fc647935dd585ac003539b42404a8dbd", size = 168404, upload-time = "2025-01-21T18:45:26.758Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/a2/6df94fc5c8e2170d21d7134a565c3a8fb84f9797c1dd65a5976aaf714418/twine-6.1.0.tar.gz", hash = "sha256:be324f6272eff91d07ee93f251edf232fc647935dd585ac003539b42404a8dbd", size = 168404 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/b6/74e927715a285743351233f33ea3c684528a0d374d2e43ff9ce9585b73fe/twine-6.1.0-py3-none-any.whl", hash = "sha256:a47f973caf122930bf0fbbf17f80b83bc1602c9ce393c7845f289a3001dc5384", size = 40791, upload-time = "2025-01-21T18:45:24.584Z" }, + { url = "https://files.pythonhosted.org/packages/7c/b6/74e927715a285743351233f33ea3c684528a0d374d2e43ff9ce9585b73fe/twine-6.1.0-py3-none-any.whl", hash = "sha256:a47f973caf122930bf0fbbf17f80b83bc1602c9ce393c7845f289a3001dc5384", size = 40791 }, ] [[package]] name = "typing-extensions" version = "4.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906 }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, ] [[package]] name = "zipp" version = "3.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276 }, ]