fake-bge-module 20250312__py3-none-any.whl → 20260203__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {animsys_refactor → _animsys_refactor}/__init__.pyi +7 -6
- {bl_console_utils → _bl_console_utils}/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_calltip/__init__.pyi +1 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_import/__init__.pyi +1 -5
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_namespace/__init__.pyi +3 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/intellisense/__init__.pyi +1 -10
- {bl_i18n_utils → _bl_i18n_utils}/__init__.pyi +2 -0
- _bl_i18n_utils/bl_extract_messages/__init__.pyi +28 -0
- {bl_i18n_utils → _bl_i18n_utils}/merge_po/__init__.pyi +2 -1
- {bl_i18n_utils → _bl_i18n_utils}/settings/__init__.pyi +10 -7
- {bl_i18n_utils → _bl_i18n_utils}/utils/__init__.pyi +53 -50
- _bl_i18n_utils/utils_cli/__init__.pyi +11 -0
- _bl_i18n_utils/utils_languages_menu/__init__.pyi +6 -0
- {bl_i18n_utils → _bl_i18n_utils}/utils_rtl/__init__.pyi +3 -2
- _bl_i18n_utils/utils_spell_check/__init__.pyi +22 -0
- {bl_previews_utils → _bl_previews_utils}/__init__.pyi +1 -0
- _bl_previews_utils/bl_previews_render/__init__.pyi +14 -0
- {bl_rna_utils → _bl_rna_utils}/__init__.pyi +1 -0
- {bl_rna_utils → _bl_rna_utils}/data_path/__init__.pyi +3 -2
- {bl_text_utils → _bl_text_utils}/__init__.pyi +1 -0
- _bl_text_utils/external_editor/__init__.pyi +6 -0
- {bl_ui_utils → _bl_ui_utils}/__init__.pyi +1 -0
- {bl_ui_utils → _bl_ui_utils}/layout/__init__.pyi +2 -1
- _blendfile_header/__init__.pyi +48 -0
- _bpy_internal/__init__.pyi +5 -1
- _bpy_internal/addons/__init__.pyi +1 -0
- _bpy_internal/addons/cli/__init__.pyi +2 -1
- _bpy_internal/assets/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/blender_asset_library_openapi/__init__.pyi +13 -0
- _bpy_internal/disk_file_hash_service/__init__.pyi +19 -0
- _bpy_internal/disk_file_hash_service/backend_sqlite/__init__.pyi +48 -0
- _bpy_internal/disk_file_hash_service/hash_service/__init__.pyi +64 -0
- _bpy_internal/disk_file_hash_service/types/__init__.pyi +53 -0
- _bpy_internal/extensions/__init__.pyi +1 -0
- _bpy_internal/extensions/junction_module/__init__.pyi +8 -7
- _bpy_internal/extensions/stale_file_manager/__init__.pyi +9 -8
- _bpy_internal/extensions/wheel_manager/__init__.pyi +6 -5
- {bl_i18n_utils/utils_languages_menu → _bpy_internal/filesystem}/__init__.pyi +2 -2
- _bpy_internal/filesystem/locking/__init__.pyi +28 -0
- _bpy_internal/grease_pencil/__init__.pyi +1 -0
- _bpy_internal/grease_pencil/stroke/__init__.pyi +22 -6
- _bpy_internal/platform/__init__.pyi +5 -0
- _bpy_internal/platform/freedesktop/__init__.pyi +21 -0
- _bpy_internal/system_info/__init__.pyi +1 -0
- _bpy_internal/system_info/text_generate_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_startup/__init__.pyi +3 -2
- {bpy_restrict_state → _bpy_restrict_state}/__init__.pyi +1 -0
- _bpy_types/__init__.pyi +1635 -0
- {console_python → _console_python}/__init__.pyi +8 -7
- _console_shell/__init__.pyi +10 -0
- {graphviz_export → _graphviz_export}/__init__.pyi +3 -2
- _keyingsets_utils/__init__.pyi +21 -0
- {rna_info → _rna_info}/__init__.pyi +32 -27
- {rna_xml → _rna_xml}/__init__.pyi +7 -6
- addon_utils/__init__.pyi +13 -25
- aud/__init__.pyi +133 -155
- bge/__init__.pyi +1 -0
- bge/app/__init__.pyi +1 -0
- bge/constraints/__init__.pyi +22 -51
- bge/types/__init__.pyi +618 -1913
- bge_extras/__init__.pyi +1 -0
- bge_extras/logger/__init__.pyi +4 -3
- bgui/__init__.pyi +1 -0
- bgui/frame/__init__.pyi +1 -0
- bgui/frame_button/__init__.pyi +1 -0
- bgui/image/__init__.pyi +1 -1
- bgui/image_button/__init__.pyi +1 -0
- bgui/label/__init__.pyi +1 -0
- bgui/list_box/__init__.pyi +1 -1
- bgui/progress_bar/__init__.pyi +2 -1
- bgui/system/__init__.pyi +3 -5
- bgui/text_block/__init__.pyi +1 -0
- bgui/text_input/__init__.pyi +9 -8
- bgui/theme/__init__.pyi +4 -3
- bgui/widget/__init__.pyi +5 -4
- bl_app_override/__init__.pyi +4 -3
- bl_app_override/helpers/__init__.pyi +3 -2
- bl_app_template_utils/__init__.pyi +5 -4
- bl_app_templates_system/Game_Engine/__init__.pyi +5 -4
- bl_app_templates_system/Storyboarding/__init__.pyi +11 -0
- bl_app_templates_system/__init__.pyi +2 -0
- bl_keymap_utils/__init__.pyi +1 -0
- bl_keymap_utils/io/__init__.pyi +10 -9
- bl_keymap_utils/keymap_from_toolbar/__init__.pyi +2 -1
- bl_keymap_utils/keymap_hierarchy/__init__.pyi +2 -1
- bl_keymap_utils/platform_helpers/__init__.pyi +3 -2
- bl_keymap_utils/versioning/__init__.pyi +2 -1
- bl_math/__init__.pyi +4 -13
- bl_operators/__init__.pyi +4 -2
- bl_operators/add_mesh_torus/__init__.pyi +9 -9
- bl_operators/anim/__init__.pyi +90 -62
- bl_operators/assets/__init__.pyi +14 -18
- bl_operators/bmesh/__init__.pyi +1 -0
- bl_operators/bmesh/find_adjacent/__init__.pyi +12 -9
- bl_operators/bone_selection_sets/__init__.pyi +34 -60
- bl_operators/clip/__init__.pyi +39 -57
- bl_operators/connect_to_output/__init__.pyi +20 -18
- bl_operators/console/__init__.pyi +17 -25
- bl_operators/constraint/__init__.pyi +15 -21
- bl_operators/copy_global_transform/__init__.pyi +261 -0
- bl_operators/file/__init__.pyi +13 -17
- bl_operators/freestyle/__init__.pyi +15 -21
- bl_operators/geometry_nodes/__init__.pyi +30 -36
- bl_operators/grease_pencil/__init__.pyi +5 -5
- bl_operators/image/__init__.pyi +14 -22
- bl_operators/image_as_planes/__init__.pyi +36 -42
- bl_operators/mesh/__init__.pyi +8 -53
- bl_operators/node/__init__.pyi +375 -92
- bl_operators/node_editor/__init__.pyi +1 -0
- bl_operators/node_editor/node_functions/__init__.pyi +10 -9
- bl_operators/object/__init__.pyi +57 -98
- bl_operators/object_align/__init__.pyi +8 -8
- bl_operators/object_quick_effects/__init__.pyi +15 -21
- bl_operators/object_randomize_transform/__init__.pyi +6 -6
- bl_operators/presets/__init__.pyi +46 -94
- bl_operators/rigidbody/__init__.pyi +12 -16
- bl_operators/screen_play_rendered_anim/__init__.pyi +5 -5
- bl_operators/sequencer/__init__.pyi +40 -54
- bl_operators/spreadsheet/__init__.pyi +7 -7
- bl_operators/userpref/__init__.pyi +69 -117
- bl_operators/uvcalc_follow_active/__init__.pyi +8 -8
- bl_operators/uvcalc_lightmap/__init__.pyi +12 -12
- bl_operators/uvcalc_transform/__init__.pyi +39 -28
- bl_operators/vertexpaint_dirt/__init__.pyi +7 -7
- bl_operators/view3d/__init__.pyi +31 -43
- bl_operators/wm/__init__.pyi +139 -231
- bl_operators/world/__init__.pyi +6 -6
- bl_ui/__init__.pyi +18 -17
- bl_ui/anim/__init__.pyi +5 -5
- bl_ui/asset_shelf/__init__.pyi +5 -5
- bl_ui/generic_ui_list/__init__.pyi +12 -26
- bl_ui/node_add_menu/__init__.pyi +281 -12
- bl_ui/node_add_menu_compositor/__init__.pyi +135 -91
- bl_ui/node_add_menu_geometry/__init__.pyi +407 -263
- bl_ui/node_add_menu_shader/__init__.pyi +67 -67
- bl_ui/node_add_menu_texture/__init__.pyi +25 -69
- bl_ui/properties_animviz/__init__.pyi +3 -2
- bl_ui/properties_collection/__init__.pyi +20 -30
- bl_ui/properties_constraint/__init__.pyi +228 -450
- bl_ui/properties_data_armature/__init__.pyi +45 -79
- bl_ui/properties_data_bone/__init__.pyi +33 -51
- bl_ui/properties_data_camera/__init__.pyi +43 -75
- bl_ui/properties_data_curve/__init__.pyi +42 -101
- bl_ui/properties_data_curves/__init__.pyi +21 -35
- bl_ui/properties_data_empty/__init__.pyi +8 -10
- bl_ui/properties_data_grease_pencil/__init__.pyi +49 -87
- bl_ui/properties_data_lattice/__init__.pyi +12 -18
- bl_ui/properties_data_light/__init__.pyi +28 -46
- bl_ui/properties_data_lightprobe/__init__.pyi +35 -61
- bl_ui/properties_data_mesh/__init__.pyi +73 -120
- bl_ui/properties_data_metaball/__init__.pyi +16 -26
- bl_ui/properties_data_modifier/__init__.pyi +34 -39
- bl_ui/properties_data_pointcloud/__init__.pyi +17 -27
- bl_ui/properties_data_shaderfx/__init__.pyi +4 -4
- bl_ui/properties_data_speaker/__init__.pyi +15 -25
- bl_ui/properties_data_volume/__init__.pyi +22 -38
- bl_ui/properties_freestyle/__init__.pyi +79 -127
- bl_ui/properties_game/__init__.pyi +88 -84
- bl_ui/properties_grease_pencil_common/__init__.pyi +33 -190
- bl_ui/properties_mask_common/__init__.pyi +33 -45
- bl_ui/properties_material/__init__.pyi +52 -111
- bl_ui/properties_material_gpencil/__init__.pyi +48 -68
- bl_ui/properties_object/__init__.pyi +123 -93
- bl_ui/properties_output/__init__.pyi +103 -81
- bl_ui/properties_paint_common/__init__.pyi +78 -59
- bl_ui/properties_particle/__init__.pyi +160 -262
- bl_ui/properties_physics_cloth/__init__.pyi +36 -62
- bl_ui/properties_physics_common/__init__.pyi +11 -11
- bl_ui/properties_physics_dynamicpaint/__init__.pyi +81 -123
- bl_ui/properties_physics_field/__init__.pyi +35 -53
- bl_ui/properties_physics_fluid/__init__.pyi +106 -160
- bl_ui/properties_physics_geometry_nodes/__init__.pyi +6 -6
- bl_ui/properties_physics_rigidbody/__init__.pyi +28 -42
- bl_ui/properties_physics_rigidbody_constraint/__init__.pyi +44 -68
- bl_ui/properties_physics_softbody/__init__.pyi +38 -66
- bl_ui/properties_render/__init__.pyi +267 -259
- bl_ui/properties_scene/__init__.pyi +69 -72
- bl_ui/properties_strip/__init__.pyi +744 -0
- bl_ui/properties_strip_modifier/__init__.pyi +45 -0
- bl_ui/properties_texture/__init__.pyi +69 -122
- bl_ui/properties_view_layer/__init__.pyi +97 -51
- bl_ui/properties_workspace/__init__.pyi +12 -18
- bl_ui/properties_world/__init__.pyi +33 -53
- bl_ui/space_clip/__init__.pyi +231 -311
- bl_ui/space_console/__init__.pyi +14 -24
- bl_ui/space_dopesheet/__init__.pyi +193 -125
- bl_ui/space_filebrowser/__init__.pyi +107 -131
- bl_ui/space_graph/__init__.pyi +93 -80
- bl_ui/space_image/__init__.pyi +207 -291
- bl_ui/space_info/__init__.pyi +14 -24
- bl_ui/space_logic/__init__.pyi +14 -22
- bl_ui/space_nla/__init__.pyi +63 -69
- bl_ui/space_node/__init__.pyi +215 -154
- bl_ui/space_outliner/__init__.pyi +65 -61
- bl_ui/space_properties/__init__.pyi +41 -16
- bl_ui/space_sequencer/__init__.pyi +276 -979
- bl_ui/space_spreadsheet/__init__.pyi +27 -23
- bl_ui/space_statusbar/__init__.pyi +4 -4
- bl_ui/space_text/__init__.pyi +39 -73
- bl_ui/space_time/__init__.pyi +33 -78
- bl_ui/space_toolsystem_common/__init__.pyi +31 -28
- bl_ui/space_toolsystem_toolbar/__init__.pyi +67 -43
- bl_ui/space_topbar/__init__.pyi +68 -111
- bl_ui/space_userpref/__init__.pyi +310 -445
- bl_ui/space_view3d/__init__.pyi +667 -1122
- bl_ui/space_view3d_sidebar/__init__.pyi +127 -0
- bl_ui/space_view3d_toolbar/__init__.pyi +237 -966
- bl_ui/utils/__init__.pyi +4 -3
- blend_render_info/__init__.pyi +4 -2
- blf/__init__.pyi +92 -59
- bmesh/__init__.pyi +4 -10
- bmesh/geometry/__init__.pyi +2 -4
- bmesh/ops/__init__.pyi +442 -815
- bmesh/types/__init__.pyi +377 -720
- bmesh/utils/__init__.pyi +20 -45
- bpy/__init__.pyi +2 -1
- bpy/app/__init__.pyi +96 -90
- bpy/app/handlers/__init__.pyi +24 -19
- bpy/app/icons/__init__.pyi +2 -7
- bpy/app/timers/__init__.pyi +5 -18
- bpy/app/translations/__init__.pyi +21 -35
- bpy/msgbus/__init__.pyi +20 -9
- bpy/ops/__init__.pyi +21 -3
- bpy/ops/action/__init__.pyi +121 -226
- bpy/ops/anim/__init__.pyi +204 -358
- bpy/ops/armature/__init__.pyi +129 -249
- bpy/ops/asset/__init__.pyi +82 -111
- bpy/ops/bge_bricknodes/__init__.pyi +61 -0
- bpy/ops/boid/__init__.pyi +44 -50
- bpy/ops/bricknodes/__init__.pyi +37 -0
- bpy/ops/brush/__init__.pyi +33 -120
- bpy/ops/buttons/__init__.pyi +27 -83
- bpy/ops/cachefile/__init__.pyi +16 -74
- bpy/ops/camera/__init__.pyi +3 -13
- bpy/ops/clip/__init__.pyi +278 -558
- bpy/ops/cloth/__init__.pyi +2 -6
- bpy/ops/collection/__init__.pyi +34 -44
- bpy/ops/console/__init__.pyi +70 -111
- bpy/ops/constraint/__init__.pyi +34 -102
- bpy/ops/curve/__init__.pyi +163 -315
- bpy/ops/curves/__init__.pyi +163 -189
- bpy/ops/cycles/__init__.pyi +8 -18
- bpy/ops/dpaint/__init__.pyi +21 -30
- bpy/ops/ed/__init__.pyi +59 -103
- bpy/ops/export_anim/__init__.pyi +4 -11
- bpy/ops/export_scene/__init__.pyi +29 -174
- bpy/ops/extensions/__init__.pyi +102 -194
- bpy/ops/file/__init__.pyi +166 -272
- bpy/ops/fluid/__init__.pyi +78 -86
- bpy/ops/font/__init__.pyi +73 -164
- bpy/ops/geometry/__init__.pyi +33 -144
- bpy/ops/gizmogroup/__init__.pyi +8 -14
- bpy/ops/gpencil/__init__.pyi +31 -58
- bpy/ops/graph/__init__.pyi +176 -411
- bpy/ops/grease_pencil/__init__.pyi +416 -639
- bpy/ops/image/__init__.pyi +148 -492
- bpy/ops/import_anim/__init__.pyi +5 -18
- bpy/ops/import_curve/__init__.pyi +4 -6
- bpy/ops/import_scene/__init__.pyi +22 -49
- bpy/ops/info/__init__.pyi +27 -43
- bpy/ops/lattice/__init__.pyi +26 -43
- bpy/ops/logic/__init__.pyi +49 -122
- bpy/ops/logic_nodes/__init__.pyi +461 -0
- bpy/ops/marker/__init__.pyi +24 -60
- bpy/ops/mask/__init__.pyi +118 -222
- bpy/ops/material/__init__.pyi +19 -18
- bpy/ops/mball/__init__.pyi +13 -39
- bpy/ops/mesh/__init__.pyi +409 -1264
- bpy/ops/nla/__init__.pyi +140 -232
- bpy/ops/node/__init__.pyi +1189 -807
- bpy/ops/object/__init__.pyi +806 -1659
- bpy/ops/outliner/__init__.pyi +284 -432
- bpy/ops/paint/__init__.pyi +189 -381
- bpy/ops/paintcurve/__init__.pyi +29 -44
- bpy/ops/palette/__init__.pyi +23 -34
- bpy/ops/particle/__init__.pyi +135 -201
- bpy/ops/pointcloud/__init__.pyi +23 -42
- bpy/ops/pose/__init__.pyi +195 -310
- bpy/ops/poselib/__init__.pyi +45 -73
- bpy/ops/preferences/__init__.pyi +89 -221
- bpy/ops/ptcache/__init__.pyi +32 -39
- bpy/ops/render/__init__.pyi +36 -83
- bpy/ops/rigidbody/__init__.pyi +47 -78
- bpy/ops/scene/__init__.pyi +169 -222
- bpy/ops/screen/__init__.pyi +146 -259
- bpy/ops/script/__init__.pyi +9 -15
- bpy/ops/sculpt/__init__.pyi +194 -354
- bpy/ops/sculpt_curves/__init__.pyi +21 -29
- bpy/ops/sequencer/__init__.pyi +586 -836
- bpy/ops/sound/__init__.pyi +25 -131
- bpy/ops/spreadsheet/__init__.pyi +34 -21
- bpy/ops/surface/__init__.pyi +7 -54
- bpy/ops/text/__init__.pyi +166 -281
- bpy/ops/text_editor/__init__.pyi +2 -6
- bpy/ops/texture/__init__.pyi +20 -22
- bpy/ops/transform/__init__.pyi +108 -445
- bpy/ops/ui/__init__.pyi +157 -219
- bpy/ops/uilist/__init__.pyi +4 -16
- bpy/ops/uv/__init__.pyi +291 -347
- bpy/ops/view2d/__init__.pyi +29 -88
- bpy/ops/view3d/__init__.pyi +238 -438
- bpy/ops/wm/__init__.pyi +651 -1510
- bpy/ops/workspace/__init__.pyi +42 -44
- bpy/ops/world/__init__.pyi +12 -13
- bpy/path/__init__.pyi +6 -37
- bpy/props/__init__.pyi +395 -259
- bpy/{_typing → stub_internal}/__init__.pyi +1 -0
- bpy/{_typing → stub_internal}/rna_enums/__init__.pyi +214 -114
- bpy/types/__init__.pyi +93286 -103826
- bpy/utils/__init__.pyi +46 -104
- bpy/utils/previews/__init__.pyi +7 -15
- bpy/utils/units/__init__.pyi +6 -15
- bpy_extras/__init__.pyi +1 -0
- bpy_extras/anim_utils/__init__.pyi +32 -23
- bpy_extras/asset_utils/__init__.pyi +1 -0
- bpy_extras/bmesh_utils/__init__.pyi +2 -2
- bpy_extras/id_map_utils/__init__.pyi +15 -6
- bpy_extras/image_utils/__init__.pyi +3 -11
- bpy_extras/io_utils/__init__.pyi +22 -38
- bpy_extras/keyconfig_utils/__init__.pyi +5 -4
- bpy_extras/mesh_utils/__init__.pyi +3 -14
- bpy_extras/node_shader_utils/__init__.pyi +63 -70
- bpy_extras/node_utils/__init__.pyi +4 -3
- bpy_extras/object_utils/__init__.pyi +6 -19
- bpy_extras/view3d_utils/__init__.pyi +1 -18
- bpy_extras/wm_utils/__init__.pyi +1 -0
- bpy_extras/wm_utils/progress_report/__init__.pyi +12 -11
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/METADATA +9 -3
- fake_bge_module-20260203.dist-info/RECORD +414 -0
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/WHEEL +1 -1
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/top_level.txt +16 -16
- freestyle/__init__.pyi +1 -0
- freestyle/chainingiterators/__init__.pyi +41 -60
- freestyle/functions/__init__.pyi +56 -194
- freestyle/predicates/__init__.pyi +11 -61
- freestyle/shaders/__init__.pyi +95 -156
- freestyle/types/__init__.pyi +306 -941
- freestyle/utils/ContextFunctions/__init__.pyi +4 -24
- freestyle/utils/__init__.pyi +46 -36
- gpu/__init__.pyi +84 -5
- gpu/capabilities/__init__.pyi +1 -21
- gpu/matrix/__init__.pyi +16 -24
- gpu/platform/__init__.pyi +3 -7
- gpu/select/__init__.pyi +2 -1
- gpu/shader/__init__.pyi +43 -9
- gpu/state/__init__.pyi +66 -44
- gpu/texture/__init__.pyi +4 -5
- gpu/types/__init__.pyi +216 -216
- gpu_extras/__init__.pyi +1 -0
- gpu_extras/batch/__init__.pyi +2 -5
- gpu_extras/presets/__init__.pyi +9 -10
- idprop/__init__.pyi +17 -0
- idprop/types/__init__.pyi +18 -17
- imbuf/__init__.pyi +13 -9
- imbuf/types/__init__.pyi +10 -23
- keyingsets_builtins/__init__.pyi +51 -93
- mathutils/__init__.pyi +296 -2255
- mathutils/bvhtree/__init__.pyi +24 -30
- mathutils/geometry/__init__.pyi +83 -132
- mathutils/interpolate/__init__.pyi +7 -5
- mathutils/kdtree/__init__.pyi +5 -14
- mathutils/noise/__init__.pyi +62 -106
- nodeitems_builtins/__init__.pyi +5 -4
- nodeitems_utils/__init__.pyi +10 -9
- rna_keymap_ui/__init__.pyi +7 -6
- rna_prop_ui/__init__.pyi +14 -13
- _bpy_internal/freedesktop/__init__.pyi +0 -20
- bgl/__init__.pyi +0 -4235
- bl_i18n_utils/bl_extract_messages/__init__.pyi +0 -24
- bl_i18n_utils/utils_cli/__init__.pyi +0 -10
- bl_previews_utils/bl_previews_render/__init__.pyi +0 -11
- bl_text_utils/external_editor/__init__.pyi +0 -5
- bpy_types/__init__.pyi +0 -29
- console_shell/__init__.pyi +0 -9
- fake_bge_module-20250312.dist-info/RECORD +0 -395
- keyingsets_utils/__init__.pyi +0 -18
- {animsys_refactor → _animsys_refactor}/py.typed +0 -0
- {bgl → _bl_console_utils}/py.typed +0 -0
- {bl_console_utils → _bl_i18n_utils}/py.typed +0 -0
- {bl_i18n_utils → _bl_previews_utils}/py.typed +0 -0
- {bl_previews_utils → _bl_rna_utils}/py.typed +0 -0
- {bl_rna_utils → _bl_text_utils}/py.typed +0 -0
- {bl_text_utils → _bl_ui_utils}/py.typed +0 -0
- {bl_ui_utils → _blendfile_header}/py.typed +0 -0
- {bpy_restrict_state → _bpy_restrict_state}/py.typed +0 -0
- {bpy_types → _bpy_types}/py.typed +0 -0
- {console_python → _console_python}/py.typed +0 -0
- {console_shell → _console_shell}/py.typed +0 -0
- {graphviz_export → _graphviz_export}/py.typed +0 -0
- {keyingsets_utils → _keyingsets_utils}/py.typed +0 -0
- {rna_info → _rna_info}/py.typed +0 -0
- {rna_xml → _rna_xml}/py.typed +0 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
|
-
def log2vis(msgs, settings):
|
|
6
|
+
def log2vis(msgs, settings) -> None:
|
|
6
7
|
"""Globally mimics deprecated fribidi_log2vis.
|
|
7
8
|
msgs should be an iterable of messages to RTL-process.
|
|
8
9
|
|
|
9
10
|
"""
|
|
10
11
|
|
|
11
|
-
def protect_format_seq(msg):
|
|
12
|
+
def protect_format_seq(msg) -> None:
|
|
12
13
|
"""Find some specific escaping/formatting sequences (like ", %s, etc.,
|
|
13
14
|
and protect them from any modification!
|
|
14
15
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class SpellChecker:
|
|
7
|
+
"""A basic spell checker."""
|
|
8
|
+
|
|
9
|
+
uimsgs: typing.Any
|
|
10
|
+
|
|
11
|
+
def check(self, txt) -> None:
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
:param txt:
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@classmethod
|
|
18
|
+
def split_words(cls, text) -> None:
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
:param text:
|
|
22
|
+
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
def do_clear_previews(
|
|
7
|
+
do_objects, do_collections, do_scenes, do_data_intern
|
|
8
|
+
) -> None: ...
|
|
9
|
+
def do_previews(do_objects, do_collections, do_scenes, do_data_intern) -> None: ...
|
|
10
|
+
def ids_nolib(bids) -> None: ...
|
|
11
|
+
def ids_nolib_with_preview(bids) -> None: ...
|
|
12
|
+
def main() -> None: ...
|
|
13
|
+
def rna_backup_gen(data, include_props=None, exclude_props=None, root=()) -> None: ...
|
|
14
|
+
def rna_backup_restore(data, backup) -> None: ...
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
6
|
class _TokenizeDataPath:
|
|
6
7
|
"""Class to split up tokens of a data-path.Note that almost all access generates new objects with additional paths,
|
|
@@ -9,10 +10,10 @@ class _TokenizeDataPath:
|
|
|
9
10
|
|
|
10
11
|
data_path: typing.Any
|
|
11
12
|
|
|
12
|
-
def decompose_data_path(data_path):
|
|
13
|
+
def decompose_data_path(data_path) -> None:
|
|
13
14
|
"""Return the components of a data path split into a list."""
|
|
14
15
|
|
|
15
|
-
def property_definition_from_data_path(base, data_path):
|
|
16
|
+
def property_definition_from_data_path(base, data_path) -> None:
|
|
16
17
|
"""Return an RNA property definition from an object and a data path.In Blender this is often used with context as the base and a
|
|
17
18
|
path that it references, for example .space_data.lock_camera.
|
|
18
19
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class BHead4:
|
|
7
|
+
"""BHead4(code: bytes, len: int, old: int, SDNAnr: int, nr: int)"""
|
|
8
|
+
|
|
9
|
+
class BlendFileHeader:
|
|
10
|
+
"""BlendFileHeader represents the first 12-17 bytes of a blend file.It contains information about the hardware architecture, which is relevant
|
|
11
|
+
to the structure of the rest of the file.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def create_block_header_struct(self) -> None: ...
|
|
15
|
+
|
|
16
|
+
class BlendHeaderError:
|
|
17
|
+
"""Common base class for all non-exit exceptions."""
|
|
18
|
+
|
|
19
|
+
args: typing.Any
|
|
20
|
+
|
|
21
|
+
class BlockHeader:
|
|
22
|
+
"""A .blend file consists of a sequence of blocks whereby each block has a header.
|
|
23
|
+
This class can parse a header block in a specific .blend file.Note the binary representation of this header is different for different files.
|
|
24
|
+
This class provides a unified interface for these underlying representations.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
addr_old: typing.Any
|
|
28
|
+
code: typing.Any
|
|
29
|
+
count: typing.Any
|
|
30
|
+
sdna_index: typing.Any
|
|
31
|
+
size: typing.Any
|
|
32
|
+
|
|
33
|
+
class BlockHeaderStruct:
|
|
34
|
+
"""BlockHeaderStruct(struct: _struct.Struct, type: Type[Union[_blendfile_header.BHead4, _blendfile_header.SmallBHead8, _blendfile_header.LargeBHead8]])"""
|
|
35
|
+
|
|
36
|
+
size: typing.Any
|
|
37
|
+
|
|
38
|
+
def parse(self, data) -> None:
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
:param data:
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
class LargeBHead8:
|
|
45
|
+
"""LargeBHead8(code: bytes, SDNAnr: int, old: int, len: int, nr: int)"""
|
|
46
|
+
|
|
47
|
+
class SmallBHead8:
|
|
48
|
+
"""SmallBHead8(code: bytes, len: int, old: int, SDNAnr: int, nr: int)"""
|
_bpy_internal/__init__.pyi
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
from . import addons as addons
|
|
6
|
+
from . import assets as assets
|
|
7
|
+
from . import disk_file_hash_service as disk_file_hash_service
|
|
5
8
|
from . import extensions as extensions
|
|
6
|
-
from . import
|
|
9
|
+
from . import filesystem as filesystem
|
|
7
10
|
from . import grease_pencil as grease_pencil
|
|
11
|
+
from . import platform as platform
|
|
8
12
|
from . import system_info as system_info
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class AssetLibraryMeta:
|
|
7
|
+
"""AssetLibraryMeta(api_versions: dict[str, str], name: str, contact: Contact)"""
|
|
8
|
+
|
|
9
|
+
class Contact:
|
|
10
|
+
"""Contact(name: str, url: str | None = None, email: str | None = None)"""
|
|
11
|
+
|
|
12
|
+
email: typing.Any
|
|
13
|
+
url: typing.Any
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
from . import backend_sqlite as backend_sqlite
|
|
6
|
+
from . import hash_service as hash_service
|
|
7
|
+
from . import types as types
|
|
8
|
+
|
|
9
|
+
def get_service(storage_path) -> None:
|
|
10
|
+
"""Get a disk file hash service that stores its cache on the given path.Depending on the back-end (currently there is only the SQLite back-end, and
|
|
11
|
+
thus there is no choice in which one is used), the storage_path can be used
|
|
12
|
+
as directory or as file prefix. The SQLite back-end uses
|
|
13
|
+
{storage_path}_v{schema_version}.sqlite as storage.Once a DiskFileHashService is constructed, it is cached for future
|
|
14
|
+
invocations. These cached services are cleaned up when Blender loads another
|
|
15
|
+
file or when it exits.
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
def on_blender_exit() -> None: ...
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class SQLiteBackend:
|
|
7
|
+
"""DiskFileHashBackend implementation using SQLite as storage engine."""
|
|
8
|
+
|
|
9
|
+
db_conn_ro: typing.Any
|
|
10
|
+
db_conn_rw: typing.Any
|
|
11
|
+
|
|
12
|
+
def close(self) -> None:
|
|
13
|
+
"""Close the database connection."""
|
|
14
|
+
|
|
15
|
+
def fetch_hash(self, filepath, hash_algorithm) -> None:
|
|
16
|
+
"""Return the cached hash info of a given file.Returns a tuple (hexdigest, file size in bytes, last file mtime).
|
|
17
|
+
|
|
18
|
+
:param filepath:
|
|
19
|
+
:param hash_algorithm:
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def mark_hash_as_fresh(self, filepath, hash_algorithm) -> None:
|
|
23
|
+
"""Store that the hash is still considered fresh.See remove_older_than().
|
|
24
|
+
|
|
25
|
+
:param filepath:
|
|
26
|
+
:param hash_algorithm:
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def open(self) -> None:
|
|
30
|
+
"""Prepare the back-end for use.Create the directory structure & database file, and ensure the schema is as expected."""
|
|
31
|
+
|
|
32
|
+
def remove_older_than(self, *, days) -> None:
|
|
33
|
+
"""Remove all hash entries that are older than this many days.When this removes all known hashes for a file, the file entry itself is
|
|
34
|
+
also removed.
|
|
35
|
+
|
|
36
|
+
:param days:
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def store_hash(
|
|
40
|
+
self, filepath, hash_algorithm, hash_info, pre_write_callback=None
|
|
41
|
+
) -> None:
|
|
42
|
+
"""Store a pre-computed hash for the given file path. The path has to exist.
|
|
43
|
+
|
|
44
|
+
:param filepath:
|
|
45
|
+
:param hash_algorithm:
|
|
46
|
+
:param hash_info:
|
|
47
|
+
:param pre_write_callback:
|
|
48
|
+
"""
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class DiskFileHashService:
|
|
7
|
+
def close(self) -> None:
|
|
8
|
+
"""Close the service."""
|
|
9
|
+
|
|
10
|
+
def file_matches(self, filepath, hash_algorithm, hexhash, size_in_byes) -> None:
|
|
11
|
+
"""Check the file on disk, to see if it matches the given properties.
|
|
12
|
+
|
|
13
|
+
:param filepath:
|
|
14
|
+
:param hash_algorithm:
|
|
15
|
+
:param hexhash:
|
|
16
|
+
:param size_in_byes:
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
def get_hash(self, filepath, hash_algorithm) -> None:
|
|
20
|
+
"""Return the hash of a file on disk.
|
|
21
|
+
|
|
22
|
+
:param filepath:
|
|
23
|
+
:param hash_algorithm:
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def open(self) -> None:
|
|
27
|
+
"""Prepare the service for use."""
|
|
28
|
+
|
|
29
|
+
def store_hash(
|
|
30
|
+
self, filepath, hash_algorithm, hash_info, pre_write_callback=None
|
|
31
|
+
) -> None:
|
|
32
|
+
"""Store a pre-computed hash for the given file path.
|
|
33
|
+
|
|
34
|
+
:param filepath: the file whose hash should be stored. It does not have
|
|
35
|
+
to exist on disk yet at the moment of calling this function. If the
|
|
36
|
+
file does not exist, a pre_write_callback function should be given
|
|
37
|
+
that ensures the file does exist after it has been called.
|
|
38
|
+
:param hash_algorithm:
|
|
39
|
+
:param hash_info: the files hash, size in bytes, and last-modified
|
|
40
|
+
timestamp. When pre_write_callback is not None, the caller is
|
|
41
|
+
trusted to provide the correct information. Otherwise the file size
|
|
42
|
+
and last-modification timestamp are checked against the file on
|
|
43
|
+
disk. If they mis-match, a ValueError is raised.
|
|
44
|
+
:param pre_write_callback: if given, the function is called after any
|
|
45
|
+
lock on the storage back-end has been obtained, and before it is
|
|
46
|
+
updated. Any exception raised by this callback will abort the
|
|
47
|
+
storage of the hash.
|
|
48
|
+
|
|
49
|
+
This callback function can be used to implement the following:
|
|
50
|
+
|
|
51
|
+
Download a file to a temp location.
|
|
52
|
+
|
|
53
|
+
Compute its hash while downloading.
|
|
54
|
+
|
|
55
|
+
After downloading is complete, get the file size & modification time.
|
|
56
|
+
|
|
57
|
+
Store the hash.
|
|
58
|
+
|
|
59
|
+
In the pre-write callback function, move the file to its final location.
|
|
60
|
+
|
|
61
|
+
The Disk File Hashing Service unlocks the back-end.
|
|
62
|
+
|
|
63
|
+
This ensures the hash and file on disk are consistent.
|
|
64
|
+
"""
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class DiskFileHashBackend:
|
|
7
|
+
"""Base class for protocol classes.Protocol classes are defined as:Such classes are primarily used with static type checkers that recognize
|
|
8
|
+
structural subtyping (static duck-typing).For example:See PEP 544 for details. Protocol classes decorated with
|
|
9
|
+
@typing.runtime_checkable act as simple-minded runtime protocols that check
|
|
10
|
+
only the presence of given attributes, ignoring their type signatures.
|
|
11
|
+
Protocol classes can be generic, they are defined as:
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def close(self) -> None:
|
|
15
|
+
"""Close the back-end.After calling this, the back-end is not expected to work any more."""
|
|
16
|
+
|
|
17
|
+
def fetch_hash(self, filepath, hash_algorithm) -> None:
|
|
18
|
+
"""Return the cached hash info of a given file.If no info is cached for this path/algorithm combo, returns None.
|
|
19
|
+
|
|
20
|
+
:param filepath:
|
|
21
|
+
:param hash_algorithm:
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def mark_hash_as_fresh(self, filepath, hash_algorithm) -> None:
|
|
25
|
+
"""Store that the hash is still considered fresh.See remove_older_than().
|
|
26
|
+
|
|
27
|
+
:param filepath:
|
|
28
|
+
:param hash_algorithm:
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def open(self) -> None:
|
|
32
|
+
"""Prepare the back-end for use."""
|
|
33
|
+
|
|
34
|
+
def remove_older_than(self, *, days) -> None:
|
|
35
|
+
"""Remove all hash entries that are older than this many days.When this removes all known hashes for a file, the file entry itself is
|
|
36
|
+
also removed.
|
|
37
|
+
|
|
38
|
+
:param days:
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def store_hash(
|
|
42
|
+
self, filepath, hash_algorithm, hash_info, pre_write_callback=None
|
|
43
|
+
) -> None:
|
|
44
|
+
"""Store a pre-computed hash for the given file path.See DiskFileHashService.store_hash() for an explanation of the parameters.
|
|
45
|
+
|
|
46
|
+
:param filepath:
|
|
47
|
+
:param hash_algorithm:
|
|
48
|
+
:param hash_info:
|
|
49
|
+
:param pre_write_callback:
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
class FileHashInfo:
|
|
53
|
+
"""FileHashInfo(hexhash: str, file_size_bytes: int, file_stat_mtime: float)"""
|
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
6
|
class JunctionModuleHandle:
|
|
6
|
-
def register_module(self):
|
|
7
|
+
def register_module(self) -> None:
|
|
7
8
|
"""Register the base module in sys.modules."""
|
|
8
9
|
|
|
9
|
-
def register_submodule(self, submodule_name, dirpath):
|
|
10
|
+
def register_submodule(self, submodule_name, dirpath) -> None:
|
|
10
11
|
"""
|
|
11
12
|
|
|
12
13
|
:param submodule_name:
|
|
13
14
|
:param dirpath:
|
|
14
15
|
"""
|
|
15
16
|
|
|
16
|
-
def rename_directory(self, submodule_name, dirpath):
|
|
17
|
+
def rename_directory(self, submodule_name, dirpath) -> None:
|
|
17
18
|
"""
|
|
18
19
|
|
|
19
20
|
:param submodule_name:
|
|
20
21
|
:param dirpath:
|
|
21
22
|
"""
|
|
22
23
|
|
|
23
|
-
def rename_submodule(self, submodule_name_src, submodule_name_dst):
|
|
24
|
+
def rename_submodule(self, submodule_name_src, submodule_name_dst) -> None:
|
|
24
25
|
"""
|
|
25
26
|
|
|
26
27
|
:param submodule_name_src:
|
|
27
28
|
:param submodule_name_dst:
|
|
28
29
|
"""
|
|
29
30
|
|
|
30
|
-
def submodule_items(self): ...
|
|
31
|
-
def unregister_module(self):
|
|
31
|
+
def submodule_items(self) -> None: ...
|
|
32
|
+
def unregister_module(self) -> None:
|
|
32
33
|
"""Unregister the base module in sys.modules.
|
|
33
34
|
Keep everything except the modules name (allowing re-registration).
|
|
34
35
|
|
|
35
36
|
"""
|
|
36
37
|
|
|
37
|
-
def unregister_submodule(self, submodule_name):
|
|
38
|
+
def unregister_submodule(self, submodule_name) -> None:
|
|
38
39
|
"""
|
|
39
40
|
|
|
40
41
|
:param submodule_name:
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
6
|
class StaleFiles:
|
|
6
|
-
def filepath_add(self, path_abs, *, rename):
|
|
7
|
+
def filepath_add(self, path_abs, *, rename) -> None:
|
|
7
8
|
"""
|
|
8
9
|
|
|
9
10
|
:param path_abs:
|
|
10
11
|
:param rename:
|
|
11
12
|
"""
|
|
12
13
|
|
|
13
|
-
def is_empty(self): ...
|
|
14
|
-
def is_modified(self): ...
|
|
15
|
-
def state_load(self, *, check_exists):
|
|
14
|
+
def is_empty(self) -> None: ...
|
|
15
|
+
def is_modified(self) -> None: ...
|
|
16
|
+
def state_load(self, *, check_exists) -> None:
|
|
16
17
|
"""
|
|
17
18
|
|
|
18
19
|
:param check_exists:
|
|
19
20
|
"""
|
|
20
21
|
|
|
21
|
-
def state_load_add_and_store(self, *, paths):
|
|
22
|
+
def state_load_add_and_store(self, *, paths) -> None:
|
|
22
23
|
"""
|
|
23
24
|
|
|
24
25
|
:param paths:
|
|
25
26
|
"""
|
|
26
27
|
|
|
27
|
-
def state_load_remove_and_store(self, *, paths):
|
|
28
|
+
def state_load_remove_and_store(self, *, paths) -> None:
|
|
28
29
|
"""
|
|
29
30
|
|
|
30
31
|
:param paths:
|
|
31
32
|
"""
|
|
32
33
|
|
|
33
|
-
def state_remove_all(self): ...
|
|
34
|
-
def state_store(self, *, check_exists):
|
|
34
|
+
def state_remove_all(self) -> None: ...
|
|
35
|
+
def state_store(self, *, check_exists) -> None:
|
|
35
36
|
"""
|
|
36
37
|
|
|
37
38
|
:param check_exists:
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import collections.abc
|
|
3
3
|
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
6
|
def apply_action(
|
|
6
7
|
*, local_dir, local_dir_site_packages, wheel_list, error_fn, remove_error_fn, debug
|
|
7
|
-
): ...
|
|
8
|
-
def wheel_list_deduplicate_as_skip_set(wheel_list):
|
|
8
|
+
) -> None: ...
|
|
9
|
+
def wheel_list_deduplicate_as_skip_set(wheel_list) -> None:
|
|
9
10
|
"""Return all wheel paths to skip."""
|
|
10
11
|
|
|
11
|
-
def wheel_version_from_filename_for_cmp(filename):
|
|
12
|
+
def wheel_version_from_filename_for_cmp(filename) -> None:
|
|
12
13
|
"""Extract the version number for comparison.
|
|
13
14
|
Note that this only handled the first 3 numbers,
|
|
14
15
|
the trailing text is compared as a string which is not technically correct
|
|
15
16
|
however this is not a priority to support since scripts should only be including stable releases,
|
|
16
17
|
so comparing the first 3 numbers is sufficient. The trailing string is just a tie breaker in the
|
|
17
|
-
unlikely event it differs.If supporting the full spec, comparing: "1.1.dev6" with "1.1.6rc6" for
|
|
18
|
-
we could support this
|
|
18
|
+
unlikely event it differs.If supporting the full spec, comparing: "1.1.dev6" with "1.1.6rc6" for example
|
|
19
|
+
we could support this doesnt seem especially important as extensions should use major releases.
|
|
19
20
|
|
|
20
21
|
"""
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import collections.abc
|
|
3
|
+
import typing_extensions
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
class MutexAcquisitionError:
|
|
7
|
+
"""Raised when mutex_lock_and_open_with_retry() cannot obtain a lock."""
|
|
8
|
+
|
|
9
|
+
args: typing.Any
|
|
10
|
+
|
|
11
|
+
def mutex_lock_and_open(file_path, mode) -> None:
|
|
12
|
+
"""Obtain an exclusive lock on a file.Create a file on disk, and immediately lock it for exclusive use by this
|
|
13
|
+
process.
|
|
14
|
+
|
|
15
|
+
:return: If the file was opened & locked successfully, a tuple (file,
|
|
16
|
+
unlocker) is returned. Otherwise returns None. The caller should call
|
|
17
|
+
unlocker(file) to unlock the mutex.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def mutex_lock_and_open_with_retry(
|
|
21
|
+
file_path, mode, *, max_tries, wait_time_sec
|
|
22
|
+
) -> None:
|
|
23
|
+
"""Obtain an exclusive lock on a file, retrying when that fails.See mutex_lock_and_open() for the lock semantics, and the first two parameters.
|
|
24
|
+
|
|
25
|
+
:param max_tries: number of times the code attempts to acquire the lock.
|
|
26
|
+
:return: A tuple (file, unlocker) is returned. The caller should call
|
|
27
|
+
unlocker(file) to unlock the mutex.
|
|
28
|
+
"""
|