├── tests
├── nodes
│ ├── __init__.py
│ ├── data
│ │ ├── filepattern
│ │ │ └── tree1
│ │ │ │ ├── fafoofen
│ │ │ │ ├── rabarco
│ │ │ │ ├── qirfoobarken
│ │ │ │ ├── dirfooken
│ │ │ │ ├── barbr
│ │ │ │ ├── fefoofe
│ │ │ │ ├── bafffbro
│ │ │ │ │ └── foofile
│ │ │ │ └── bagogogbr
│ │ │ │ │ └── babr
│ │ │ │ └── dirgorfool
│ │ │ │ ├── akfoolen
│ │ │ │ └── baqwebr
│ │ │ │ └── foobar
│ │ ├── test_pwint.db
│ │ ├── test_splitint.db
│ │ ├── test_basic_stuff.db
│ │ ├── test_filepattern.db
│ │ ├── test_waitforint.db
│ │ └── mock_ffmpeg
│ │ │ └── ffprobe
│ ├── test_mantra.py
│ ├── test_husk.py
│ └── test_split_waiter_integration.py
├── data
│ ├── fake_bin
│ │ ├── python
│ │ └── python.exe
│ ├── test_badndeser.db
│ ├── test_errorinv.db
│ ├── test_resources.db
│ ├── test_instadoneinv.db
│ ├── test_resources1.db
│ ├── test_invocmessaging.db
│ ├── test_taskgroup_del.db
│ └── test_attribserialization.db
├── config_data
│ └── orig
│ │ ├── foofar
│ │ └── config.toml
│ │ ├── foobar
│ │ └── config.toml
│ │ └── boofar
│ │ ├── config.toml
│ │ └── config.d
│ │ ├── some.toml
│ │ └── body.toml
└── environment_resolver_data
│ ├── scheduler
│ └── config.toml
│ ├── worker
│ └── config.toml
│ └── standard_environment_resolver
│ └── config.toml
├── src
├── lifeblood
│ ├── __init__.py
│ ├── net_messages
│ │ ├── __init__.py
│ │ ├── impl
│ │ │ ├── __init__.py
│ │ │ └── tcp_message_receiver_factory.py
│ │ ├── logging.py
│ │ ├── defaults.py
│ │ ├── enums.py
│ │ ├── connections.py
│ │ ├── message_handler.py
│ │ ├── address_routing.py
│ │ ├── interfaces.py
│ │ └── address.py
│ ├── scheduler
│ │ └── __init__.py
│ ├── worker_runtime_pythonpath
│ │ └── __init__.py
│ ├── stock_nodes
│ │ ├── alicevision
│ │ │ └── python
│ │ │ │ └── 3
│ │ │ │ └── lifeblood_alicevision_modules
│ │ │ │ ├── __init__.py
│ │ │ │ └── base_node.py
│ │ ├── houdini
│ │ │ └── python
│ │ │ │ └── 3
│ │ │ │ └── lifeblood_stock_houdini_helpers
│ │ │ │ └── __init__.py
│ │ ├── redshift
│ │ │ └── meta.toml
│ │ ├── matrixclient
│ │ │ └── data
│ │ │ │ └── matrixclient.pyz
│ │ ├── telegram_client
│ │ │ └── data
│ │ │ │ └── telegram_client.pyz
│ │ ├── webserver
│ │ │ └── data
│ │ │ │ ├── result_ready.html
│ │ │ │ ├── result_not_ready.html
│ │ │ │ └── index.html
│ │ └── houdini_distributed_sim
│ │ │ └── data
│ │ │ └── killer.py
│ ├── node_ui_callback_receiver_base.py
│ ├── expression_locals_provider_base.py
│ ├── base.py
│ ├── os_based_cheats.py
│ ├── matrix_helper.py
│ ├── worker_metadata.py
│ ├── defaults.py
│ ├── node_visualization_classes.py
│ ├── nodegraph_holder_base.py
│ ├── buffer_serializable.py
│ ├── attribute_serialization.py
│ ├── core_nodes
│ │ ├── kill.py
│ │ └── null.py
│ ├── rwlock.py
│ ├── worker_pool_message_processor_client.py
│ ├── main_workerpool.py
│ └── timestamp.py
├── lifeblood_cli
│ └── __init__.py
├── lifeblood_testing_common
│ └── __init__.py
├── lifeblood_viewer
│ ├── models
│ │ └── __init__.py
│ ├── widgets
│ │ ├── __init__.py
│ │ └── dialogs
│ │ │ ├── __init__.py
│ │ │ └── message_dialog.py
│ ├── code_editor
│ │ └── __init__.py
│ ├── nodeeditor_overlays
│ │ └── __init__.py
│ ├── nodeeditor_windows
│ │ ├── __init__.py
│ │ ├── ui_parameters_window.py
│ │ ├── ui_longop_window.py
│ │ └── ui_undo_window.py
│ ├── task_group_actions_impl
│ │ ├── __init__.py
│ │ └── noop_action.py
│ ├── graphics_items
│ │ ├── pretty_items
│ │ │ ├── __init__.py
│ │ │ ├── fancy_items
│ │ │ │ └── __init__.py
│ │ │ ├── node_decorator_base.py
│ │ │ ├── decorated_node.py
│ │ │ ├── node_connection_snap_point.py
│ │ │ └── drawable_node_with_snap_points.py
│ │ ├── __init__.py
│ │ ├── utils.py
│ │ ├── network_item.py
│ │ └── qextended_graphics_item.py
│ ├── task_group_action_performers
│ │ ├── __init__.py
│ │ └── noop_action_performer.py
│ ├── __init__.py
│ ├── menu_entry_base.py
│ ├── graphics_scene_viewing_widget.py
│ ├── scene_item_factory_base.py
│ └── db_misc.py
└── lifeblood_client
│ ├── __init__.py
│ ├── attribute_serialization.py
│ └── nethelpers.py
├── pkg_lifeblood
├── README.md
├── src
│ └── lifeblood
├── build_pypi.sh
├── MANIFEST.in
├── upload_pypi.sh
└── pyproject.toml
├── pkg_lifeblood_viewer
├── README.md
├── src
│ └── lifeblood_viewer
├── build_pypi.sh
├── upload_pypi.sh
├── pyproject.toml
└── setup.cfg
├── stock_tools
├── matrix_client
│ ├── urllib3
│ │ ├── contrib
│ │ │ ├── __init__.py
│ │ │ ├── _securetransport
│ │ │ │ └── __init__.py
│ │ │ └── _appengine_environ.py
│ │ ├── packages
│ │ │ ├── backports
│ │ │ │ └── __init__.py
│ │ │ ├── __init__.py
│ │ │ └── ssl_match_hostname
│ │ │ │ └── __init__.py
│ │ ├── _version.py
│ │ └── util
│ │ │ └── queue.py
│ ├── matrix_client
│ │ ├── crypto
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ └── checks.py
│ ├── compile.sh
│ └── requests
│ │ ├── __version__.py
│ │ ├── certs.py
│ │ ├── hooks.py
│ │ └── packages.py
└── telegram_client
│ └── compile.sh
├── rcc
├── dark
│ ├── transparent.svg
│ ├── branch_open-on.svg
│ ├── branch_closed.svg
│ ├── branch_open.svg
│ ├── stylesheet-vline.svg
│ ├── branch_closed-on.svg
│ ├── undock.svg
│ ├── stylesheet-branch-end.svg
│ ├── hsepartoolbar.svg
│ ├── stylesheet-branch-end-open.svg
│ ├── stylesheet-branch-more.svg
│ ├── stylesheet-branch-end-closed.svg
│ ├── sizegrip.svg
│ ├── hmovetoolbar.svg
│ ├── checkbox_unchecked.svg
│ ├── checkbox_unchecked_disabled.svg
│ ├── checkbox_checked.svg
│ ├── checkbox_checked_disabled.svg
│ ├── radio_unchecked.svg
│ ├── undock-hover.svg
│ ├── radio_unchecked_disabled.svg
│ ├── radio_checked.svg
│ ├── radio_checked_disabled.svg
│ ├── right_arrow.svg
│ ├── right_arrow_disabled.svg
│ ├── checkbox_indeterminate.svg
│ ├── close.svg
│ ├── checkbox_indeterminate_disabled.svg
│ ├── close-hover.svg
│ ├── close-pressed.svg
│ ├── up_arrow.svg
│ ├── down_arrow.svg
│ ├── up_arrow-hover.svg
│ ├── up_arrow_disabled.svg
│ ├── left_arrow.svg
│ ├── down_arrow-hover.svg
│ ├── down_arrow_disabled.svg
│ ├── left_arrow_disabled.svg
│ ├── vsepartoolbars.svg
│ └── vmovetoolbar.svg
├── light
│ ├── transparent.svg
│ ├── branch_closed.svg
│ ├── branch_open-on.svg
│ ├── branch_open.svg
│ ├── stylesheet-vline.svg
│ ├── branch_closed-on.svg
│ ├── undock.svg
│ ├── hsepartoolbar.svg
│ ├── stylesheet-branch-end.svg
│ ├── stylesheet-branch-more.svg
│ ├── stylesheet-branch-end-closed.svg
│ ├── stylesheet-branch-end-open.svg
│ ├── sizegrip.svg
│ ├── hmovetoolbar.svg
│ ├── checkbox_unchecked-hover.svg
│ ├── checkbox_unchecked_disabled.svg
│ ├── checkbox_checked.svg
│ ├── checkbox_checked-hover.svg
│ ├── checkbox_checked_disabled.svg
│ ├── radio_unchecked-hover.svg
│ ├── undock-hover.svg
│ ├── radio_unchecked_disabled.svg
│ ├── radio_checked.svg
│ ├── radio_checked-hover.svg
│ ├── radio_checked_disabled.svg
│ ├── right_arrow_disabled.svg
│ ├── checkbox_indeterminate.svg
│ ├── checkbox_indeterminate-hover.svg
│ ├── close.svg
│ ├── checkbox_indeterminate_disabled.svg
│ ├── close-hover.svg
│ ├── close-pressed.svg
│ ├── up_arrow.svg
│ ├── up_arrow-hover.svg
│ ├── down_arrow.svg
│ ├── left_arrow.svg
│ ├── right_arrow.svg
│ ├── up_arrow_disabled.svg
│ ├── down_arrow-hover.svg
│ ├── down_arrow_disabled.svg
│ ├── left_arrow_disabled.svg
│ ├── vsepartoolbars.svg
│ └── vmovetoolbar.svg
└── build.sh
├── dcc_plugins_workspace
├── houdini
│ ├── otls
│ │ ├── Driver-lifeblood_submitter-1.0.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.createtimes
│ │ │ │ │ └── Contents.modtimes
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── OnCreated
│ │ │ │ ├── Tools.shelf
│ │ │ │ └── ExtraFileOptions
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ ├── Driver-lifeblood_cache_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0
│ │ │ │ ├── Help
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.createtimes
│ │ │ │ │ ├── Contents.modtimes
│ │ │ │ │ ├── .OPdummydefs
│ │ │ │ │ └── .OPfallbacks
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── ExtraFileOptions
│ │ │ │ └── Tools.shelf
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ ├── Driver-lifeblood_karma_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0
│ │ │ │ ├── Help
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.createtimes
│ │ │ │ │ ├── Contents.modtimes
│ │ │ │ │ ├── .OPdummydefs
│ │ │ │ │ └── .OPfallbacks
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── ExtraFileOptions
│ │ │ │ ├── Tools.shelf
│ │ │ │ └── PythonModule
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ ├── Driver-lifeblood_mantra_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0
│ │ │ │ ├── Help
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.modtimes
│ │ │ │ │ ├── Contents.createtimes
│ │ │ │ │ ├── .OPdummydefs
│ │ │ │ │ └── .OPfallbacks
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── ExtraFileOptions
│ │ │ │ ├── PythonModule
│ │ │ │ └── Tools.shelf
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ ├── Driver-lifeblood_redshift_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0
│ │ │ │ ├── Help
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.modtimes
│ │ │ │ │ └── Contents.createtimes
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── PreFirstCreate
│ │ │ │ ├── ExtraFileOptions
│ │ │ │ ├── PythonModule
│ │ │ │ └── Tools.shelf
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ ├── Driver-lifeblood_wedge_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0
│ │ │ │ ├── Help
│ │ │ │ ├── Contents.dir
│ │ │ │ │ ├── Sections.list
│ │ │ │ │ ├── Contents.createtimes
│ │ │ │ │ ├── Contents.modtimes
│ │ │ │ │ ├── .OPdummydefs
│ │ │ │ │ └── .OPfallbacks
│ │ │ │ ├── InternalFileOptions
│ │ │ │ ├── Sections.list
│ │ │ │ ├── TypePropertiesOptions
│ │ │ │ ├── CreateScript
│ │ │ │ ├── ExtraFileOptions
│ │ │ │ └── Tools.shelf
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ │ └── Driver-lifeblood_distributed_flip_submitter-1.0.hda
│ │ │ ├── houdini.hdalibrary
│ │ │ ├── lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0
│ │ │ ├── Help
│ │ │ ├── Contents.dir
│ │ │ │ ├── Sections.list
│ │ │ │ ├── Contents.modtimes
│ │ │ │ ├── Contents.createtimes
│ │ │ │ ├── .OPdummydefs
│ │ │ │ └── .OPfallbacks
│ │ │ ├── InternalFileOptions
│ │ │ ├── Sections.list
│ │ │ ├── TypePropertiesOptions
│ │ │ ├── ExtraFileOptions
│ │ │ ├── CreateScript
│ │ │ └── Tools.shelf
│ │ │ ├── Sections.list
│ │ │ └── INDEX__SECTION
│ ├── presets
│ │ └── Driver
│ │ │ └── lifeblood-lifeblood_submitter-1.0.0.idx
│ └── README.md
├── blender
│ ├── README.md
│ └── lifeblood_addon.zip
├── build.sh
├── build_blender.sh
└── build_houdini.sh
├── icon
└── lifeblood_wip1.png
├── docs
├── source
│ ├── images
│ │ ├── overview.png
│ │ ├── viewer_overview.png
│ │ ├── viewer_overview.xcf
│ │ ├── installation
│ │ │ ├── tray.png
│ │ │ ├── autolisten.png
│ │ │ ├── launch_tab.png
│ │ │ ├── lbm_as_is.png
│ │ │ ├── overview.png
│ │ │ ├── savescene.png
│ │ │ ├── see_dead.png
│ │ │ ├── takes_time.png
│ │ │ ├── tray_menu.png
│ │ │ ├── wizard_dcc.png
│ │ │ ├── wizard_gpu.png
│ │ │ ├── nodes_create.png
│ │ │ ├── redshift_cmd.png
│ │ │ ├── render_done.png
│ │ │ ├── start_viewer.png
│ │ │ ├── wizard_intro.png
│ │ │ ├── wizard_succ.png
│ │ │ ├── wizard_summ.png
│ │ │ ├── workers_work.png
│ │ │ ├── create_task_btn.png
│ │ │ ├── lbm_as_is_empty.png
│ │ │ ├── press_download.png
│ │ │ ├── task_group_list.png
│ │ │ ├── tray_autostart.png
│ │ │ ├── uncheck_python.png
│ │ │ ├── viewer_overview.png
│ │ │ ├── wizard_button.png
│ │ │ ├── wizard_houdini.png
│ │ │ ├── wizard_redshift.png
│ │ │ ├── wizard_scratch.png
│ │ │ ├── after_submission.png
│ │ │ ├── render_done_clean.png
│ │ │ ├── autostart_components.png
│ │ │ ├── launch_tab_launched.png
│ │ │ ├── redshift_submitter.png
│ │ │ ├── wizard_houdini_tools.png
│ │ │ └── redshift_preset_overview.png
│ │ ├── manager_overview.png
│ │ ├── viewer_group_list.png
│ │ ├── viewer_nodeeditor.png
│ │ ├── viewer_worker_list.png
│ │ ├── viewer_nodeeditor_newnode.png
│ │ ├── viewer_nodeeditor_parameters.png
│ │ ├── viewer_nodeeditor_tasklist.png
│ │ ├── viewer_nodeeditor_connecspawn.png
│ │ └── viewer_nodeeditor_connecsplit.png
│ ├── news
│ │ ├── post_01
│ │ │ └── params.png
│ │ └── index.rst
│ ├── components
│ │ ├── viewer
│ │ │ ├── config.rst
│ │ │ └── viewer_api.rst
│ │ ├── worker
│ │ │ ├── index.rst
│ │ │ └── worker_api.rst
│ │ ├── index.rst
│ │ ├── scheduler
│ │ │ └── scheduler_api.rst
│ │ └── logging.rst
│ ├── nodes
│ │ ├── core
│ │ │ ├── null.rst
│ │ │ ├── mod_attrib.rst
│ │ │ ├── set_attrib.rst
│ │ │ ├── switch.rst
│ │ │ ├── rename_attrib.rst
│ │ │ ├── delete_attrib.rst
│ │ │ ├── killer.rst
│ │ │ ├── spawn_children.rst
│ │ │ ├── split_waiter.rst
│ │ │ ├── environment_resolver_arguments_setter.rst
│ │ │ └── wedge.rst
│ │ └── stock
│ │ │ └── houdini
│ │ │ ├── mantra.rst
│ │ │ └── common_devices.rst
│ ├── api.rst
│ ├── _static
│ │ └── css
│ │ │ └── custom.css
│ ├── requirements.txt
│ ├── nodes.rst
│ ├── index.rst
│ └── concepts.rst
├── Makefile
└── make.bat
├── entry.py
├── .gitignore
├── .github
├── dependabot.yml
└── workflows
│ ├── sphinx.yml
│ └── lint.yml
├── lifeblood.nix
├── flake.nix
├── flake.lock
├── lifeblood-viewer.nix
└── install
└── README.md
/tests/nodes/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/data/fake_bin/python:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_cli/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/data/fake_bin/python.exe:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood/README.md:
--------------------------------------------------------------------------------
1 | ../README.md
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/scheduler/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/README.md:
--------------------------------------------------------------------------------
1 | ../README.md
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/impl/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_testing_common/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/models/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/widgets/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/config_data/orig/foofar/config.toml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/fafoofen:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/rabarco:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood/src/lifeblood:
--------------------------------------------------------------------------------
1 | ../../src/lifeblood
--------------------------------------------------------------------------------
/src/lifeblood_viewer/code_editor/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/widgets/dialogs/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/qirfoobarken:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/worker_runtime_pythonpath/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/nodeeditor_overlays/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/nodeeditor_windows/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/contrib/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirfooken/barbr:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirfooken/fefoofe:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/rcc/dark/transparent.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/task_group_actions_impl/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/matrix_client/crypto/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirgorfool/akfoolen:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/rcc/light/transparent.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/task_group_action_performers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirfooken/bafffbro/foofile:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirfooken/bagogogbr/babr:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/nodes/data/filepattern/tree1/dirgorfool/baqwebr/foobar:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/src/lifeblood_viewer:
--------------------------------------------------------------------------------
1 | ../../src/lifeblood_viewer
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/packages/backports/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/logging.py:
--------------------------------------------------------------------------------
1 | from ..logging import get_logger
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/fancy_items/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/contrib/_securetransport/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/config_data/orig/foobar/config.toml:
--------------------------------------------------------------------------------
1 | [crap]
2 | ass="woof"
3 | bob=12.3
--------------------------------------------------------------------------------
/pkg_lifeblood/build_pypi.sh:
--------------------------------------------------------------------------------
1 | rm dist/lifeblood*
2 | rm -rf build
3 | python3 -m build
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/alicevision/python/3/lifeblood_alicevision_modules/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/houdini/python/3/lifeblood_stock_houdini_helpers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/redshift/meta.toml:
--------------------------------------------------------------------------------
1 | dependencies = [
2 | "houdini",
3 | ]
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/build_pypi.sh:
--------------------------------------------------------------------------------
1 | rm dist/lifeblood*
2 | rm -rf build
3 | python3 -m build
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/config_data/orig/boofar/config.toml:
--------------------------------------------------------------------------------
1 | [main]
2 | one = 3.44
3 | two = "beep"
4 | three = 123
--------------------------------------------------------------------------------
/icon/lifeblood_wip1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/icon/lifeblood_wip1.png
--------------------------------------------------------------------------------
/pkg_lifeblood/MANIFEST.in:
--------------------------------------------------------------------------------
1 | global-exclude src/lifeblood/stock_nodes/matrixclient/data/matrixcommander
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/defaults.py:
--------------------------------------------------------------------------------
1 |
2 | default_stream_timeout: float = 90 # TODO: ENSURE RO
3 |
--------------------------------------------------------------------------------
/tests/config_data/orig/boofar/config.d/some.toml:
--------------------------------------------------------------------------------
1 | [main]
2 | one = 13.44
3 |
4 | [some]
5 | wow="cat"
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/houdini.hdalibrary:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/config_data/orig/boofar/config.d/body.toml:
--------------------------------------------------------------------------------
1 | [main]
2 | three = 456
3 |
4 | [body]
5 | wee = 'so much'
--------------------------------------------------------------------------------
/rcc/dark/branch_open-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/tests/data/test_badndeser.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_badndeser.db
--------------------------------------------------------------------------------
/tests/data/test_errorinv.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_errorinv.db
--------------------------------------------------------------------------------
/tests/data/test_resources.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_resources.db
--------------------------------------------------------------------------------
/docs/source/images/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/overview.png
--------------------------------------------------------------------------------
/rcc/dark/branch_closed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/branch_open.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/branch_closed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/branch_open-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/_version.py:
--------------------------------------------------------------------------------
1 | # This file is protected via CODEOWNERS
2 | __version__ = "1.26.7"
3 |
--------------------------------------------------------------------------------
/tests/data/test_instadoneinv.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_instadoneinv.db
--------------------------------------------------------------------------------
/tests/data/test_resources1.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_resources1.db
--------------------------------------------------------------------------------
/tests/nodes/data/test_pwint.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/nodes/data/test_pwint.db
--------------------------------------------------------------------------------
/rcc/light/branch_open.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/tests/data/test_invocmessaging.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_invocmessaging.db
--------------------------------------------------------------------------------
/tests/data/test_taskgroup_del.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_taskgroup_del.db
--------------------------------------------------------------------------------
/tests/nodes/data/test_splitint.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/nodes/data/test_splitint.db
--------------------------------------------------------------------------------
/dcc_plugins_workspace/blender/README.md:
--------------------------------------------------------------------------------
1 | # Blender plugin
2 |
3 | * check latest `tools` releases for a zipped blender addon
4 |
--------------------------------------------------------------------------------
/docs/source/news/post_01/params.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/news/post_01/params.png
--------------------------------------------------------------------------------
/tests/nodes/data/test_basic_stuff.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/nodes/data/test_basic_stuff.db
--------------------------------------------------------------------------------
/tests/nodes/data/test_filepattern.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/nodes/data/test_filepattern.db
--------------------------------------------------------------------------------
/tests/nodes/data/test_waitforint.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/nodes/data/test_waitforint.db
--------------------------------------------------------------------------------
/docs/source/images/viewer_overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_overview.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_overview.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_overview.xcf
--------------------------------------------------------------------------------
/rcc/dark/stylesheet-vline.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/stylesheet-vline.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/tests/data/test_attribserialization.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/tests/data/test_attribserialization.db
--------------------------------------------------------------------------------
/dcc_plugins_workspace/build.sh:
--------------------------------------------------------------------------------
1 | echo "building everything"
2 |
3 | ./build_houdini.sh
4 | ./build_blender.sh
5 |
6 | echo "building done"
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/source/images/installation/tray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/tray.png
--------------------------------------------------------------------------------
/docs/source/images/manager_overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/manager_overview.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_group_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_group_list.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_worker_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_worker_list.png
--------------------------------------------------------------------------------
/pkg_lifeblood/upload_pypi.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | ../venv/bin/python -m twine upload --repository $2 -u __token__ -p $(<../$1) dist/*
--------------------------------------------------------------------------------
/rcc/dark/branch_closed-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/branch_closed-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/upload_pypi.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | ../venv/bin/python -m twine upload --repository $2 -u __token__ -p $(<../$1) dist/*
--------------------------------------------------------------------------------
/docs/source/images/installation/autolisten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/autolisten.png
--------------------------------------------------------------------------------
/docs/source/images/installation/launch_tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/launch_tab.png
--------------------------------------------------------------------------------
/docs/source/images/installation/lbm_as_is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/lbm_as_is.png
--------------------------------------------------------------------------------
/docs/source/images/installation/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/overview.png
--------------------------------------------------------------------------------
/docs/source/images/installation/savescene.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/savescene.png
--------------------------------------------------------------------------------
/docs/source/images/installation/see_dead.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/see_dead.png
--------------------------------------------------------------------------------
/docs/source/images/installation/takes_time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/takes_time.png
--------------------------------------------------------------------------------
/docs/source/images/installation/tray_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/tray_menu.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_dcc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_dcc.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_gpu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_gpu.png
--------------------------------------------------------------------------------
/docs/source/images/installation/nodes_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/nodes_create.png
--------------------------------------------------------------------------------
/docs/source/images/installation/redshift_cmd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/redshift_cmd.png
--------------------------------------------------------------------------------
/docs/source/images/installation/render_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/render_done.png
--------------------------------------------------------------------------------
/docs/source/images/installation/start_viewer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/start_viewer.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_intro.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_succ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_succ.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_summ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_summ.png
--------------------------------------------------------------------------------
/docs/source/images/installation/workers_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/workers_work.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor_newnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor_newnode.png
--------------------------------------------------------------------------------
/pkg_lifeblood/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = [
3 | "setuptools>=42",
4 | "wheel"
5 | ]
6 | build-backend = "setuptools.build_meta"
--------------------------------------------------------------------------------
/rcc/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | pushd $(dirname $0)
4 |
5 | pyside2-rcc theme.rcc -o ../src/lifeblood_viewer/breeze_resources.py
6 |
7 | popd
--------------------------------------------------------------------------------
/dcc_plugins_workspace/blender/lifeblood_addon.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/blender/lifeblood_addon.zip
--------------------------------------------------------------------------------
/docs/source/components/viewer/config.rst:
--------------------------------------------------------------------------------
1 | .. _viewer configs:
2 |
3 | ====================
4 | Viewer Configuration
5 | ====================
6 |
7 | TODO: do
--------------------------------------------------------------------------------
/docs/source/images/installation/create_task_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/create_task_btn.png
--------------------------------------------------------------------------------
/docs/source/images/installation/lbm_as_is_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/lbm_as_is_empty.png
--------------------------------------------------------------------------------
/docs/source/images/installation/press_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/press_download.png
--------------------------------------------------------------------------------
/docs/source/images/installation/task_group_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/task_group_list.png
--------------------------------------------------------------------------------
/docs/source/images/installation/tray_autostart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/tray_autostart.png
--------------------------------------------------------------------------------
/docs/source/images/installation/uncheck_python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/uncheck_python.png
--------------------------------------------------------------------------------
/docs/source/images/installation/viewer_overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/viewer_overview.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_button.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_houdini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_houdini.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_redshift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_redshift.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_scratch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_scratch.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor_parameters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor_parameters.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor_tasklist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor_tasklist.png
--------------------------------------------------------------------------------
/docs/source/news/index.rst:
--------------------------------------------------------------------------------
1 | .. _news:
2 |
3 | ====
4 | News
5 | ====
6 |
7 | .. toctree::
8 | :caption: News
9 |
10 | post_01/index
11 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = [
3 | "setuptools>=42",
4 | "wheel"
5 | ]
6 | build-backend = "setuptools.build_meta"
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Help:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/source/images/installation/after_submission.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/after_submission.png
--------------------------------------------------------------------------------
/docs/source/images/installation/render_done_clean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/render_done_clean.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor_connecspawn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor_connecspawn.png
--------------------------------------------------------------------------------
/docs/source/images/viewer_nodeeditor_connecsplit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/viewer_nodeeditor_connecsplit.png
--------------------------------------------------------------------------------
/docs/source/images/installation/autostart_components.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/autostart_components.png
--------------------------------------------------------------------------------
/docs/source/images/installation/launch_tab_launched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/launch_tab_launched.png
--------------------------------------------------------------------------------
/docs/source/images/installation/redshift_submitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/redshift_submitter.png
--------------------------------------------------------------------------------
/docs/source/images/installation/wizard_houdini_tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/wizard_houdini_tools.png
--------------------------------------------------------------------------------
/docs/source/images/installation/redshift_preset_overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/docs/source/images/installation/redshift_preset_overview.png
--------------------------------------------------------------------------------
/rcc/dark/undock.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/undock.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/matrixclient/data/matrixclient.pyz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/src/lifeblood/stock_nodes/matrixclient/data/matrixclient.pyz
--------------------------------------------------------------------------------
/src/lifeblood_viewer/__init__.py:
--------------------------------------------------------------------------------
1 | default_config = '''
2 | [viewer]
3 | listen_to_broadcast = true
4 |
5 | [imgui]
6 | # ini_file = "path/to/some/special/imgui.ini"
7 | '''
8 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/packages/__init__.py:
--------------------------------------------------------------------------------
1 | from __future__ import absolute_import
2 |
3 | from . import ssl_match_hostname
4 |
5 | __all__ = ("ssl_match_hostname",)
6 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/telegram_client/data/telegram_client.pyz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/src/lifeblood/stock_nodes/telegram_client/data/telegram_client.pyz
--------------------------------------------------------------------------------
/src/lifeblood/node_ui_callback_receiver_base.py:
--------------------------------------------------------------------------------
1 | class NodeUiCallbackReceiverBase:
2 | def _ui_changed(self, definition_changed: bool = False):
3 | raise NotImplementedError()
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot.def":872838840
3 | }
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot.def":1650326098
3 | }
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/docs/source/components/worker/index.rst:
--------------------------------------------------------------------------------
1 | ======
2 | Worker
3 | ======
4 |
5 | .. toctree::
6 | :caption: Worker
7 | :maxdepth: 2
8 |
9 | worker
10 | environment_resolver
11 |
--------------------------------------------------------------------------------
/src/lifeblood/expression_locals_provider_base.py:
--------------------------------------------------------------------------------
1 | from typing import Any, Dict
2 |
3 |
4 | class ExpressionLocalsProviderBase:
5 | def locals(self) -> Dict[str, Any]:
6 | raise NotImplementedError()
7 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | Contents.mime Contents.mime
3 |
--------------------------------------------------------------------------------
/rcc/dark/stylesheet-branch-end.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/presets/Driver/lifeblood-lifeblood_submitter-1.0.0.idx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/presets/Driver/lifeblood-lifeblood_submitter-1.0.0.idx
--------------------------------------------------------------------------------
/rcc/dark/hsepartoolbar.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/stylesheet-branch-end-open.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/dark/stylesheet-branch-more.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/hsepartoolbar.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/stylesheet-branch-end.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/stylesheet-branch-more.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/source/components/index.rst:
--------------------------------------------------------------------------------
1 | ==========
2 | Components
3 | ==========
4 |
5 | .. toctree::
6 | :caption: Components
7 | :maxdepth: 1
8 |
9 | viewer/index
10 | scheduler/index
11 | worker/index
12 |
--------------------------------------------------------------------------------
/entry.py:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | "exec" "`dirname \`readlink -f $0\``/venv/bin/python" "`readlink -f $0`" "$@"
3 | import sys
4 | from lifeblood import launch
5 |
6 | if __name__ == '__main__':
7 | sys.exit(launch.main(sys.argv[1:]))
8 |
--------------------------------------------------------------------------------
/rcc/dark/stylesheet-branch-end-closed.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/stylesheet-branch-end-closed.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/stylesheet-branch-end-open.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/source/components/worker/worker_api.rst:
--------------------------------------------------------------------------------
1 | .. _worker_api:
2 |
3 | ====================
4 | Worker API Reference
5 | ====================
6 |
7 | .. automodule:: lifeblood.worker
8 | :members:
9 | :undoc-members:
10 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/null.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/null:
2 |
3 | ====
4 | Null
5 | ====
6 |
7 | Does nothing.
8 |
9 | Parameters
10 | ==========
11 |
12 | None
13 |
14 | Attributes Set
15 | ==============
16 |
17 | None
18 |
--------------------------------------------------------------------------------
/docs/source/components/viewer/viewer_api.rst:
--------------------------------------------------------------------------------
1 | .. _viewer_api:
2 |
3 | ====================
4 | Viewer API Reference
5 | ====================
6 |
7 | .. automodule:: lifeblood_viewer
8 | :members:
9 | :undoc-members:
10 |
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730822841,
3 | "hdaroot.def":1730823159
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730823327,
3 | "hdaroot.def":1730826241
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730817200,
3 | "hdaroot.def":1730815331
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730819987,
3 | "hdaroot.def":1730819995
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830199,
3 | "hdaroot.def":1730830128
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830147,
3 | "hdaroot.def":1730830225
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830415,
3 | "hdaroot.def":1730830234
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730829848,
3 | "hdaroot.def":1730829942
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830199,
3 | "hdaroot.def":1730830128
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730829848,
3 | "hdaroot.def":1730829942
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0 lifeblood::Driver/lifeblood_submitter::1.0.0
5 |
--------------------------------------------------------------------------------
/docs/source/components/scheduler/scheduler_api.rst:
--------------------------------------------------------------------------------
1 | .. _scheduler_api:
2 |
3 | =======================
4 | Scheduler API Reference
5 | =======================
6 |
7 | .. automodule:: lifeblood.scheduler
8 | :members:
9 | :undoc-members:
10 |
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.modtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830589,
3 | "hdaroot.def":1730831605
4 | }
5 |
--------------------------------------------------------------------------------
/rcc/dark/sizegrip.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/sizegrip.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0 lifeblood::Driver/lifeblood_cache_submitter::1.0
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.createtimes:
--------------------------------------------------------------------------------
1 | {
2 | "hdaroot/lifeblood_submitter.def":1730830362,
3 | "hdaroot.def":1730830431
4 | }
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0 lifeblood::Driver/lifeblood_karma_submitter::1.0
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0 lifeblood::Driver/lifeblood_mantra_submitter::1.0
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0 lifeblood::Driver/lifeblood_wedge_submitter::1.0
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0 lifeblood::Driver/lifeblood_redshift_submitter::1.0
5 |
--------------------------------------------------------------------------------
/src/lifeblood/base.py:
--------------------------------------------------------------------------------
1 | from typing import Optional, Set
2 |
3 | class TypeMetadata:
4 | @property
5 | def label(self) -> Optional[str]:
6 | raise NotImplementedError()
7 |
8 | @property
9 | def tags(self) -> Set[str]:
10 | raise NotImplementedError()
--------------------------------------------------------------------------------
/docs/source/api.rst:
--------------------------------------------------------------------------------
1 | .. _api:
2 |
3 | =============
4 | API Reference
5 | =============
6 |
7 | .. toctree::
8 | :maxdepth: 2
9 | :caption: Contents
10 |
11 | components/scheduler/scheduler_api
12 | components/worker/worker_api
13 | components/viewer/viewer_api
14 |
--------------------------------------------------------------------------------
/rcc/dark/hmovetoolbar.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/hmovetoolbar.svg:
--------------------------------------------------------------------------------
1 |
5 |
6 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/enums.py:
--------------------------------------------------------------------------------
1 | from enum import Enum
2 |
3 |
4 | class MessageType(Enum):
5 | @classmethod
6 | def message_type_size(cls) -> int:
7 | return 2
8 |
9 | DEFAULT_MESSAGE = b'\0\0'
10 | SYSTEM_PING = b'\0\1'
11 | DELIVERY_ERROR = b'\1\0'
12 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/rcc/dark/checkbox_unchecked.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | INDEX__SECTION INDEX_SECTION
3 | houdini.hdalibrary houdini.hdalibrary
4 | lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0 lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/rcc/dark/checkbox_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_unchecked-hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/compile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | zip -r matrixclient.pyz __main__.py matrix_client/ requests/ urllib3/ canonicaljson/
3 | mv matrixclient.pyz ../../src/lifeblood/stock_nodes/matrixclient/data/.
4 | cp install_matrix_commander.py ../../src/lifeblood/stock_nodes/matrixclient/data/.
5 | printf "all done\n"
6 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/InternalFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "nodeconntype":{
3 | "type":"bool",
4 | "value":false
5 | },
6 | "nodeparmtype":{
7 | "type":"bool",
8 | "value":false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/webserver/data/result_ready.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 | {result}
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/source/_static/css/custom.css:
--------------------------------------------------------------------------------
1 | .bd-main .bd-content .bd-article-container {
2 | max-width: 100rem;
3 | }
4 |
5 | .bd-page-width {
6 | max-width: 105rem;
7 | }
8 |
9 | .bd-sidebar-primary {
10 | width: 18%;
11 | }
12 |
13 | html[data-theme=dark] img:not(.only-dark):not(.dark-light) {
14 | filter:brightness(.975) contrast(1.05);
15 | }
--------------------------------------------------------------------------------
/src/lifeblood/os_based_cheats.py:
--------------------------------------------------------------------------------
1 | import platform
2 |
3 |
4 | if platform.system().lower() == 'windows':
5 | import socket
6 | # now before you go all crazy about the line below - we ONLY use SO_REUSEPORT in broadcasting
7 | # otherwise it shouldn't break anything....
8 | # but yeah....
9 | socket.SO_REUSEPORT = socket.SO_REUSEADDR
10 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/menu_entry_base.py:
--------------------------------------------------------------------------------
1 | from dataclasses import dataclass
2 |
3 | from typing import Callable, Tuple, Union
4 |
5 |
6 | @dataclass
7 | class MainMenuLocation:
8 | location: Tuple[str, ...]
9 | label: Union[str, Callable[[], str]]
10 |
11 |
12 | @dataclass
13 | class MainMenuEntry(MainMenuLocation):
14 | action: Callable
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPdummydefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPdummydefs
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPdummydefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPdummydefs
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPdummydefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPdummydefs
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPdummydefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPdummydefs
--------------------------------------------------------------------------------
/rcc/dark/checkbox_checked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_checked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/mod_attrib.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/mod_attrib:
2 |
3 | =================
4 | Modify Attributes
5 | =================
6 |
7 | Modify incoming task's attributes
8 |
9 | Parameters
10 | ==========
11 |
12 | :Name:
13 | Name of the attribute to modify
14 |
15 | Attributes Set
16 | ==============
17 |
18 | Attributes of given names will be modified
19 |
--------------------------------------------------------------------------------
/rcc/dark/checkbox_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/dark/radio_unchecked.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/dark/undock-hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_checked-hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/radio_unchecked-hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/undock-hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/lifeblood/matrix_helper.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import subprocess
3 | from pathlib import Path
4 |
5 |
6 | def main():
7 | path_to_stuff = Path(__package__)/'stock_nodes'/'matrixclient'/'data'/'matrixclient.pyz'
8 | sys.exit(subprocess.Popen([sys.executable, path_to_stuff, *sys.argv[1:]]).wait())
9 |
10 |
11 | if __name__ == '__main__':
12 | sys.exit(main() or 0)
13 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/__init__.py:
--------------------------------------------------------------------------------
1 | # export inner classes
2 | from .graphics_items import Node, Task, NodeConnection
3 | from .graphics_scene_container import GraphicsSceneWithNodesAndTasks, GraphicsSceneBase
4 | from .network_item import NetworkItem, NetworkItemWithUI
5 | from .network_item_watchers import NetworkItemWatcher, WatchableNetworkItem, WatchableNetworkItemProxy
6 |
--------------------------------------------------------------------------------
/rcc/dark/radio_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/rcc/light/radio_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/tests/nodes/test_mantra.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 | from lifeblood_testing_common.nodes_common import TestCaseBase
3 |
4 |
5 | # TODO: tests are currently very shallow !!
6 |
7 | class MantraTestCase(TestCaseBase):
8 | async def test_mantra_node(self):
9 | await self._helper_test_render_node('mantra', 'ifd', 'mantra', Path(__file__).parent / 'data' / 'mock_houdini')
10 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPfallbacks:
--------------------------------------------------------------------------------
1 | lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
2 | lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPfallbacks:
--------------------------------------------------------------------------------
1 | lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
2 | lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPfallbacks:
--------------------------------------------------------------------------------
1 | lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
2 | lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
3 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPfallbacks:
--------------------------------------------------------------------------------
1 | lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
2 | lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
3 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/set_attrib.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/set_attrib:
2 |
3 | ==============
4 | Set Attributes
5 | ==============
6 |
7 | Set attributes on task
8 |
9 | Parameters
10 | ==========
11 |
12 | :Name:
13 | Name of the attribute to set
14 | :Val:
15 | Value to set for the attribute
16 |
17 | Attributes Set
18 | ==============
19 |
20 | Specified attributes will be created
21 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/houdini_distributed_sim/data/killer.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import lifeblood_connection
3 |
4 |
5 | def main(invocation_iid: int, addressee: str, timeout: float = 90):
6 | lifeblood_connection.message_to_invocation_send(invocation_iid, addressee, b'stop', timeout)
7 |
8 |
9 | if __name__ == '__main__':
10 | main(int(sys.argv[1]), sys.argv[2], float(sys.argv[3]))
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPdummydefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/permahorse/lifeblood/HEAD/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPdummydefs
--------------------------------------------------------------------------------
/src/lifeblood/worker_metadata.py:
--------------------------------------------------------------------------------
1 | from dataclasses import dataclass
2 |
3 |
4 | @dataclass
5 | class WorkerMetadata:
6 | """
7 | This class represents data that is not important for scheduler-worker work,
8 | but may be useful for UI, search and other extra operations
9 | Some metadata is optional, some, like hostname, is always expected to be present
10 | """
11 | hostname: str
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | venv
2 | venv-doc
3 | venv_docs
4 | .idea
5 | .run
6 | *.db*
7 | !/tests/nodes/data/**.db
8 | !/tests/data/**.db
9 | **.pyc
10 | **/__pycache__
11 | stock_tools/telegram_client/urllib3
12 | imgui.ini
13 | build
14 | dist
15 | pkg_*/build
16 | pkg_*/dist
17 | **/otls/backup
18 | **/houdini/houdini.project
19 | dcc_plugins/houdini/otls/Driver-taskflow*
20 | pipkey*
21 |
22 | *.log
23 | tests/**/logs/
24 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/webserver/data/result_not_ready.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
ur key is {key}, waiting...
8 |
page will auto-refresh every 10 seconds until result is ready
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "github-actions"
4 | directory: "/"
5 | schedule:
6 | interval: "weekly"
7 |
8 | - package-ecosystem: "pip"
9 | directory: "/pkg_lifeblood"
10 | schedule:
11 | interval: "weekly"
12 |
13 | - package-ecosystem: "pip"
14 | directory: "/pkg_lifeblood_viewer"
15 | schedule:
16 | interval: "weekly"
17 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPfallbacks:
--------------------------------------------------------------------------------
1 | lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
2 | lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
3 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/switch.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/switch:
2 |
3 | ======
4 | Switch
5 | ======
6 |
7 | Output incoming task through a given output.
8 |
9 | Parameters
10 | ==========
11 |
12 | :Number Of Outputs:
13 | Number of outputs for this node
14 | :Select Output:
15 | Incoming task will be outputted through the output with the given number.
16 |
17 | Attributes Set
18 | ==============
19 |
20 | None
21 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/task_group_actions_impl/noop_action.py:
--------------------------------------------------------------------------------
1 | from lifeblood_viewer.task_group_actions import TaskGroupViewerAction
2 | from dataclasses import dataclass
3 |
4 |
5 | @dataclass
6 | class TaskGroupViewerNoopAction(TaskGroupViewerAction):
7 | @classmethod
8 | def from_data_dict(cls, action_data: dict, *, original_user_data: bytes) -> "TaskGroupViewerAction":
9 | return TaskGroupViewerAction('noop')
10 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | ExtraFileOptions ExtraFileOptions
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | ExtraFileOptions ExtraFileOptions
11 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | ExtraFileOptions ExtraFileOptions
11 |
--------------------------------------------------------------------------------
/tests/environment_resolver_data/scheduler/config.toml:
--------------------------------------------------------------------------------
1 |
2 | [core]
3 | ## you can uncomment stuff below to specify some static values
4 | ##
5 | # server_ip = "192.168.0.2"
6 | # server_port = 7979
7 | # ui_ip = "192.168.0.2"
8 | # ui_port = 7989
9 |
10 | [scheduler]
11 | ## you may specify here some db to load
12 | ## ore use --db-path cmd argument to override whatever is in the config
13 | # db_path = "~/some_special_place/main.db"
14 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | ExtraFileOptions ExtraFileOptions
11 |
--------------------------------------------------------------------------------
/tests/nodes/data/mock_ffmpeg/ffprobe:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import sys
3 | import os
4 | import re
5 |
6 |
7 | def main():
8 | """
9 | TODO: add some arg validation, it's too blunt now
10 | """
11 | filename = sys.argv[-1]
12 |
13 | print('\n'.join(
14 | re.match(r'.*?(\d+(?:-\d+)?)\..+', os.path.basename(filename)).group(1).split('-')
15 | ))
16 |
17 |
18 | if __name__ == '__main__':
19 | main()
20 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/utils.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtCore import QPointF, QTimer
2 |
3 |
4 | def call_later(callable, *args, **kwargs): #TODO: this repeats here and in nodeeditor
5 | if len(args) == 0 and len(kwargs) == 0:
6 | QTimer.singleShot(0, callable)
7 | else:
8 | QTimer.singleShot(0, lambda: callable(*args, **kwargs))
9 |
10 |
11 | def length2(v: QPointF):
12 | return QPointF.dotProduct(v, v)
13 |
14 |
--------------------------------------------------------------------------------
/src/lifeblood_client/__init__.py:
--------------------------------------------------------------------------------
1 | # this is a helper module that is SUPPOSED to be separate from lifeblood
2 | # this module should be used by DCCs and other scripts that want to communicate with lifeblood
3 | # but this module does NOT use lifeblood module directly, even if that means code duplication
4 | # the point is to have some small light module without any dependencies
5 | # that can be imported to a variety of DCCs and not cause any conflicts etc etc
6 |
--------------------------------------------------------------------------------
/rcc/dark/radio_checked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | ExtraFileOptions ExtraFileOptions
11 |
--------------------------------------------------------------------------------
/docs/source/requirements.txt:
--------------------------------------------------------------------------------
1 | Sphinx==5.*
2 | pydata-sphinx-theme==0.*
3 | sphinxcontrib-applehelp==1.*
4 | sphinxcontrib-devhelp==1.*
5 | sphinxcontrib-htmlhelp==2.*
6 | sphinxcontrib-jsmath==1.*
7 | sphinxcontrib-qthelp==1.*
8 | sphinxcontrib-serializinghtml==1.*
9 | aiofiles~=0.8
10 | aiosqlite~=0.17
11 | aiorwlock~=1.3
12 | lz4~=4.0
13 | psutil~=5.8
14 | pywin32==304; platform_system=='Windows'
15 | semantic-version~=2.10
16 | toml~=0.10
17 | watchdog~=2.1
18 |
--------------------------------------------------------------------------------
/rcc/light/radio_checked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/rename_attrib.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/rename_attrib:
2 |
3 | =================
4 | Rename Attributes
5 | =================
6 |
7 | Rename task attributes
8 |
9 | Parameters
10 | ==========
11 |
12 | :From:
13 | rename attribute from this name
14 | :To:
15 | to this name
16 |
17 | If attribute named **from** is not found - nothing will be done
18 |
19 | Attributes Set
20 | ==============
21 |
22 | Attributes renamed, nothing is set
23 |
--------------------------------------------------------------------------------
/rcc/dark/radio_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/radio_checked-hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/rcc/light/radio_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/task_group_action_performers/noop_action_performer.py:
--------------------------------------------------------------------------------
1 | from lifeblood_viewer.task_group_actions import TaskGroupViewerActionPerformerBase, TaskGroupViewerAction
2 |
3 |
4 | class NoopViewerActionPerformer(TaskGroupViewerActionPerformerBase):
5 | def is_action_supported(self, action: TaskGroupViewerAction) -> bool:
6 | return action.type == 'noop'
7 |
8 | def perform_action(self, action: TaskGroupViewerAction):
9 | return
10 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | TypePropertiesOptions TypePropertiesOptions
5 | Help Help
6 | Tools.shelf Tools.shelf
7 | InternalFileOptions InternalFileOptions
8 | Contents.gz Contents.gz
9 | IconSVG IconSVG
10 | OnCreated OnCreated
11 | PythonModule PythonModule
12 | ExtraFileOptions ExtraFileOptions
13 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/network_item.py:
--------------------------------------------------------------------------------
1 |
2 | class NetworkItem:
3 | def __init__(self, id):
4 | super().__init__()
5 | self.__id = id
6 |
7 | def get_id(self):
8 | return self.__id
9 |
10 |
11 | class NetworkItemWithUI(NetworkItem):
12 | def draw_imgui_elements(self, drawing_widget):
13 | """
14 | this should only be called from active opengl context!
15 | :return:
16 | """
17 | pass
18 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Sections.list:
--------------------------------------------------------------------------------
1 | ""
2 | DialogScript DialogScript
3 | CreateScript CreateScript
4 | InternalFileOptions InternalFileOptions
5 | Contents.gz Contents.gz
6 | TypePropertiesOptions TypePropertiesOptions
7 | Help Help
8 | Tools.shelf Tools.shelf
9 | PythonModule PythonModule
10 | PreFirstCreate PreFirstCreate
11 | ExtraFileOptions ExtraFileOptions
12 |
--------------------------------------------------------------------------------
/rcc/dark/right_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/lifeblood/defaults.py:
--------------------------------------------------------------------------------
1 |
2 | def scheduler_port() -> int:
3 | return 1384
4 |
5 |
6 | def scheduler_message_port() -> int:
7 | return 1386
8 |
9 |
10 | def ui_port() -> int:
11 | return 1385
12 |
13 |
14 | def broadcast_port() -> int:
15 | return 34305
16 |
17 |
18 | def worker_pool_port() -> int:
19 | return 1387
20 |
21 |
22 | def worker_start_port() -> int:
23 | return 6969
24 |
25 |
26 | def message_proxy_port() -> int:
27 | return 22182
28 |
--------------------------------------------------------------------------------
/tests/environment_resolver_data/worker/config.toml:
--------------------------------------------------------------------------------
1 |
2 | [worker]
3 | listen_to_broadcast = true
4 |
5 | [default_env_wrapper]
6 | ## here you can uncomment lines below to specify your own default environment wrapper and default arguments
7 | ## this will only be used by invocation jobs that have NO environment wrappers specified
8 | # name = TrivialEnvironmentResolver
9 | # arguments = [ "project_name", "or", "config_name", "idunno", "maybe rez packages requirements?", [1,4,11] ]
10 |
--------------------------------------------------------------------------------
/rcc/dark/right_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/right_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/delete_attrib.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/delete_attrib:
2 |
3 | =================
4 | Delete Attributes
5 | =================
6 |
7 | Deletes attributes from the Task
8 |
9 | Parameters
10 | ==========
11 |
12 | :Delete:
13 | Name of the attribute to delete
14 |
15 | This does not currently support patterns, only exact names
16 |
17 | If attribute does not exist - nothing is be done
18 |
19 | Attributes Set
20 | ==============
21 |
22 | Given attributes are removed
23 |
--------------------------------------------------------------------------------
/tests/environment_resolver_data/standard_environment_resolver/config.toml:
--------------------------------------------------------------------------------
1 | [packages.houdini."18.5.666"]
2 | priority = 60
3 | env.PATH.prepend=[
4 | "/path/to/hfs/bin",
5 | "/some/other/path/dunno"
6 | ]
7 | env.PATH.append=[
8 | "/whatever/you/want/to/append"
9 | ]
10 | env.PYTHONPATH.prepend="/dunno/smth"
11 |
12 |
13 | [packages.assmouth."2.3.4-beta"]
14 | env.PATH.prepend = "bananus"
15 | env.PATH.append = "who/are/you"
16 | env.WooF='yEs'
17 |
--------------------------------------------------------------------------------
/.github/workflows/sphinx.yml:
--------------------------------------------------------------------------------
1 | name: "Documentation"
2 |
3 | on:
4 | push:
5 | branches: [ dev, master ]
6 | paths: [ docs/** ]
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Sphinx Pages
14 | uses: pedohorse/sphinx-pages@master
15 | with:
16 | github_token: ${{ secrets.GITHUB_TOKEN }}
17 | create_readme: true
18 | source_dir: docs/source
19 | install_extensions: true
20 | create_nojekyll: true
21 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/alicevision/python/3/lifeblood_alicevision_modules/base_node.py:
--------------------------------------------------------------------------------
1 | from lifeblood.node_plugin_base import BaseNodeWithTaskRequirements
2 | import shutil
3 | from pathlib import Path
4 |
5 |
6 | class AlicevisionBaseNode(BaseNodeWithTaskRequirements):
7 | def __init__(self, name):
8 | super(AlicevisionBaseNode, self).__init__(name)
9 | ui = self.get_ui()
10 | with ui.initializing_interface_lock():
11 | ui.color_scheme().set_main_color(0.15, 0.15, 0.6)
12 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/TypePropertiesOptions:
--------------------------------------------------------------------------------
1 | CheckExternal := 1;
2 | ContentsCompressionType := 1;
3 | ForbidOutsideParms := 1;
4 | GzipContents := 1;
5 | LockContents := 1;
6 | MakeDefault := 1;
7 | ParmsFromVfl := 0;
8 | PrefixDroppedParmLabel := 0;
9 | PrefixDroppedParmName := 0;
10 | SaveCachedCode := 0;
11 | SaveIcon := 1;
12 | SaveSpareParms := 0;
13 | UnlockOnCreate := 0;
14 | UseDSParms := 1;
15 |
--------------------------------------------------------------------------------
/rcc/dark/checkbox_indeterminate.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_indeterminate.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_submitter::1.0.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_submitter::1.0.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/rcc/dark/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_indeterminate-hover.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/rcc/light/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/requests/__version__.py:
--------------------------------------------------------------------------------
1 | # .-. .-. .-. . . .-. .-. .-. .-.
2 | # |( |- |.| | | |- `-. | `-.
3 | # ' ' `-' `-`.`-' `-' `-' ' `-'
4 |
5 | __title__ = 'requests'
6 | __description__ = 'Python HTTP for Humans.'
7 | __url__ = 'https://requests.readthedocs.io'
8 | __version__ = '2.26.0'
9 | __build__ = 0x022600
10 | __author__ = 'Kenneth Reitz'
11 | __author_email__ = 'me@kennethreitz.org'
12 | __license__ = 'Apache 2.0'
13 | __copyright__ = 'Copyright 2020 Kenneth Reitz'
14 | __cake__ = u'\u2728 \U0001f370 \u2728'
15 |
--------------------------------------------------------------------------------
/rcc/dark/checkbox_indeterminate_disabled.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/rcc/dark/close-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/close-pressed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/checkbox_indeterminate_disabled.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/rcc/light/close-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/close-pressed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_cache_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_cache_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_karma_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_karma_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PythonModule/Cursor":{
3 | "type":"intarray",
4 | "value":[3,24]
5 | },
6 | "PythonModule/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PythonModule/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PythonModule/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PythonModule/Source":{
19 | "type":"string",
20 | "value":""
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_wedge_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_wedge_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/killer.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/killer:
2 |
3 | ======
4 | Killer
5 | ======
6 |
7 | Kills incoming tasks
8 |
9 | :ref:`"Dead" tasks` - are a special state of tasks that are excluded from any processing by Lifeblood, yet kept for keeping all invocaions and other references valid.
10 |
11 | Dead tasks can also be easily filtered in the viewer
12 |
13 | This should be the logical end point of any task processing
14 |
15 | Parameters
16 | ==========
17 |
18 | None
19 |
20 | Attributes Set
21 | ==============
22 |
23 | None
24 |
--------------------------------------------------------------------------------
/rcc/dark/up_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PythonModule/Cursor":{
3 | "type":"intarray",
4 | "value":[29,47]
5 | },
6 | "PythonModule/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PythonModule/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PythonModule/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PythonModule/Source":{
19 | "type":"string",
20 | "value":""
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_mantra_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_mantra_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PythonModule/Cursor":{
3 | "type":"intarray",
4 | "value":[18,48]
5 | },
6 | "PythonModule/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PythonModule/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PythonModule/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PythonModule/Source":{
19 | "type":"string",
20 | "value":""
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PythonModule/Cursor":{
3 | "type":"intarray",
4 | "value":[13,15]
5 | },
6 | "PythonModule/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PythonModule/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PythonModule/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PythonModule/Source":{
19 | "type":"string",
20 | "value":""
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/rcc/light/up_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/down_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/up_arrow-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/up_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/up_arrow-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/lifeblood/node_visualization_classes.py:
--------------------------------------------------------------------------------
1 |
2 | class NodeColorScheme:
3 | def __init__(self):
4 | self.__main_color = (0, 0, 0)
5 | self.__secondary_color = None
6 |
7 | def set_main_color(self, r: float, g: float, b: float):
8 | self.__main_color = (r, g, b)
9 |
10 | def set_secondary_color(self, r: float, g: float, b: float):
11 | self.__secondary_color = (r, g, b)
12 |
13 | def main_color(self):
14 | return self.__main_color
15 |
16 | def secondary_color(self):
17 | return self.__secondary_color
--------------------------------------------------------------------------------
/stock_tools/matrix_client/requests/certs.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 |
4 | """
5 | requests.certs
6 | ~~~~~~~~~~~~~~
7 |
8 | This module returns the preferred default CA certificate bundle. There is
9 | only one — the one from the certifi package.
10 |
11 | If you are packaging Requests, e.g., for a Linux distribution or a managed
12 | environment, you can change the definition of where() to return a separately
13 | packaged CA bundle.
14 | """
15 | from certifi import where
16 |
17 | if __name__ == '__main__':
18 | print(where())
19 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_redshift_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_redshift_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/rcc/dark/left_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/down_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/left_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/right_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/up_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/down_arrow-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/dark/down_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/down_arrow-hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PythonModule/Cursor":{
3 | "type":"intarray",
4 | "value":[26,19]
5 | },
6 | "PythonModule/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PythonModule/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PythonModule/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PythonModule/Source":{
19 | "type":"string",
20 | "value":""
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/rcc/dark/left_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/down_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/rcc/light/left_arrow_disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/CreateScript:
--------------------------------------------------------------------------------
1 | # Automatically generated script
2 | \set noalias = 1
3 | #
4 | # Creation script for lifeblood::lifeblood_distributed_flip_submitter::1.0 operator
5 | #
6 |
7 | if ( "$arg1" == "" ) then
8 | echo This script is intended as a creation script
9 | exit
10 | endif
11 |
12 | # Node $arg1 (lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0)
13 | opexprlanguage -s hscript $arg1
14 | opuserdata -n '___Version___' -v '' $arg1
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_submitter::1.0.0
2 | Label: Lifeblood Generic Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_submitter::1.0.0?lifeblood::Driver/lifeblood_submitter::1.0.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 0
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Apr 19 01:55:06 2022
14 |
15 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_scene_viewing_widget.py:
--------------------------------------------------------------------------------
1 | from .graphics_items import NetworkItem
2 |
3 |
4 | class GraphicsSceneViewingWidgetBase:
5 | def __init__(self, **kwargs):
6 | # explicit constructor needed to work with pyside6 and multiple inheritance
7 | super().__init__()
8 |
9 | def request_ui_focus(self, item: NetworkItem):
10 | raise NotImplementedError()
11 |
12 | def release_ui_focus(self, item: NetworkItem):
13 | raise NotImplementedError()
14 |
15 | def item_requests_context_menu(self, item):
16 | raise NotImplementedError()
17 |
--------------------------------------------------------------------------------
/lifeblood.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | python311Packages,
4 | }:
5 | python311Packages.buildPythonPackage {
6 | name = "lifeblood";
7 | pyproject = true;
8 | src = ./.;
9 |
10 | patchPhase = ''
11 | cp ./pkg_lifeblood/{MANIFEST.in,pyproject.toml,setup.cfg} .
12 | '';
13 |
14 | build-system = with python311Packages; [ setuptools ];
15 |
16 | pythonImportsCheck = [ "lifeblood" ];
17 | propagatedBuildInputs = with python311Packages; [
18 | aiofiles
19 | aiosqlite
20 | aiorwlock
21 | lz4
22 | psutil
23 | semantic-version
24 | toml
25 | watchdog
26 | ];
27 | }
28 |
--------------------------------------------------------------------------------
/rcc/dark/vsepartoolbars.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/rcc/light/vsepartoolbars.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_cache_submitter::1.0
2 | Label: Lifeblood Cache Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_cache_submitter::1.0?lifeblood::Driver/lifeblood_cache_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 18:04:25 2024
14 |
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_karma_submitter::1.0
2 | Label: Lifeblood Karma Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_karma_submitter::1.0?lifeblood::Driver/lifeblood_karma_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 16:20:01 2024
14 |
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_wedge_submitter::1.0
2 | Label: Lifeblood Wedge Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_wedge_submitter::1.0?lifeblood::Driver/lifeblood_wedge_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 19:12:09 2024
14 |
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_mantra_submitter::1.0
2 | Label: Lifeblood Mantra Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_mantra_submitter::1.0?lifeblood::Driver/lifeblood_mantra_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 19:08:56 2024
14 |
15 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_redshift_submitter::1.0
2 | Label: Lifeblood Redshift Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_redshift_submitter::1.0?lifeblood::Driver/lifeblood_redshift_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 19:08:56 2024
14 |
15 |
--------------------------------------------------------------------------------
/flake.nix:
--------------------------------------------------------------------------------
1 | {
2 | description = "Lifeblood!";
3 |
4 | inputs = {
5 | nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.05";
6 | };
7 |
8 | outputs = { self, nixpkgs }:
9 | let
10 | pkgs = nixpkgs.legacyPackages.x86_64-linux;
11 | in {
12 |
13 | packages.x86_64-linux = rec {
14 | lifeblood = pkgs.callPackage ./lifeblood.nix {};
15 | lifeblood-viewer = pkgs.callPackage ./lifeblood-viewer.nix { inherit lifeblood; };
16 | tests = import ./lifeblood-integration-tests.nix { pkgs = nixpkgs.legacyPackages.x86_64-linux.extend (final: prev: { inherit lifeblood; }); };
17 | };
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/src/lifeblood/nodegraph_holder_base.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from typing import Optional
3 |
4 |
5 | class NodeGraphHolderBase:
6 | async def get_node_input_connections(self, node_id: int, input_name: Optional[str] = None):
7 | raise NotImplementedError()
8 |
9 | async def get_node_output_connections(self, node_id: int, output_name: Optional[str] = None):
10 | raise NotImplementedError()
11 |
12 | async def node_reports_changes_needs_saving(self, node_id):
13 | raise NotImplementedError()
14 |
15 | def get_event_loop(self) -> asyncio.AbstractEventLoop:
16 | raise NotImplementedError()
17 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/util/queue.py:
--------------------------------------------------------------------------------
1 | import collections
2 |
3 | from ..packages import six
4 | from ..packages.six.moves import queue
5 |
6 | if six.PY2:
7 | # Queue is imported for side effects on MS Windows. See issue #229.
8 | import Queue as _unused_module_Queue # noqa: F401
9 |
10 |
11 | class LifoQueue(queue.Queue):
12 | def _init(self, _):
13 | self.queue = collections.deque()
14 |
15 | def _qsize(self, len=len):
16 | return len(self.queue)
17 |
18 | def _put(self, item):
19 | self.queue.append(item)
20 |
21 | def _get(self):
22 | return self.queue.pop()
23 |
--------------------------------------------------------------------------------
/stock_tools/telegram_client/compile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | pushd $(dirname "$0")
3 |
4 | if [ -d urllib3 ]; then
5 | echo "cleanup"
6 | rm -rf urllib3
7 | fi
8 | if [ -d certifi ]; then
9 | echo "cleanup"
10 | rm -rf certifi
11 | fi
12 | pip download "urllib3>=2,<3"
13 | pip download "certifi"
14 | unzip urllib3*.whl
15 | rm urllib3*.whl
16 | unzip certifi*.whl
17 | rm certifi*.whl
18 | rm -rf urllib3*.dist-info
19 | rm -rf certifi*.dist-info
20 | zip -r telegram_client.pyz __main__.py telebot.py urllib3/ certifi/
21 | mv telegram_client.pyz ../../src/lifeblood/stock_nodes/telegram_client/data/.
22 | printf "all done\n"
23 |
24 | popd
25 |
--------------------------------------------------------------------------------
/src/lifeblood/buffer_serializable.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from io import BufferedIOBase, BytesIO
3 | from .buffered_connection import BufferedReader
4 |
5 |
6 | class IBufferSerializable:
7 | def serialize(self, stream: BufferedIOBase):
8 | raise NotImplementedError()
9 |
10 | @classmethod
11 | def deserialize(cls, stream: BufferedReader):
12 | raise NotImplementedError()
13 |
14 | async def serialize_to_streamwriter(self, stream: asyncio.StreamWriter):
15 | buff = BytesIO()
16 | await asyncio.get_event_loop().run_in_executor(None, self.serialize, buff)
17 | stream.write(buff.getbuffer())
18 |
--------------------------------------------------------------------------------
/docs/source/nodes/stock/houdini/mantra.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/stock/houdini/mantra:
2 |
3 | ======
4 | Mantra
5 | ======
6 |
7 | Renders given IFD file with mantra renderer (part of houdini)
8 |
9 | Parameters
10 | ==========
11 |
12 | :Ifd file path:
13 | path to the ifd file to be rendered
14 | :Image path:
15 | path where to save beauty pass
16 | :Skip if result already exists:
17 | if set - if ``output image file path`` file already exists - render will be skipped
18 |
19 | Attributes Set
20 | ==============
21 |
22 | When render is done, the following attributes are set:
23 |
24 | :file:
25 | set to path of the rendered beauty pass image
26 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/INDEX__SECTION:
--------------------------------------------------------------------------------
1 | Operator: lifeblood::lifeblood_distributed_flip_submitter::1.0
2 | Label: Lifeblood Distributed Flip Submitter
3 | Path: oplib:/lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0?lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0
4 | Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
5 | Table: Driver
6 | License:
7 | Extra:
8 | User:
9 | Inputs: 0 to 1
10 | Subnet: true
11 | Python: false
12 | Empty: false
13 | Modified: Tue Nov 5 19:33:55 2024
14 |
15 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/connections.py:
--------------------------------------------------------------------------------
1 | # import asyncio
2 | # from .stream_wrappers import MessageStream
3 | # from .address import split_address
4 | #
5 | # from typing import Tuple, Union
6 | #
7 | #
8 | # async def open_sending_stream(address: Union[str, Tuple[Tuple[str, int], ...]], reply_address: Tuple[str, int]):
9 | # """
10 | # address is expected to be in form of "1.2.3.4:1313|2.3.4.5:2424"...
11 | # """
12 | # if isinstance(address, str):
13 | # address = split_address(address)
14 | # reader, writer = await asyncio.open_connection(address[0][0], address[0][1])
15 | #
16 | # return MessageStream(reader, writer, reply_address)
17 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/scene_item_factory_base.py:
--------------------------------------------------------------------------------
1 | from .graphics_items import Node, Task, NodeConnection, GraphicsSceneBase
2 | from lifeblood.ui_protocol_data import TaskData
3 |
4 |
5 | class SceneItemFactoryBase:
6 | def make_task(self, scene: GraphicsSceneBase, task_data: TaskData) -> Task:
7 | raise NotImplementedError()
8 |
9 | def make_node(self, scene: GraphicsSceneBase, id: int, type: str, name: str) -> Node:
10 | raise NotImplementedError()
11 |
12 | def make_node_connection(self, scene: GraphicsSceneBase, id: int, nodeout: Node, nodein: Node, outname: str, inname: str) -> NodeConnection:
13 | raise NotImplementedError()
14 |
--------------------------------------------------------------------------------
/src/lifeblood_client/attribute_serialization.py:
--------------------------------------------------------------------------------
1 | # NOTE: this file is a simplified standalone version of lifeblood.attribute_serialization
2 | # And therefore this file should be kept up to date with the original
3 | #
4 | # note as well: this is still kept py2-3 compatible
5 | import json
6 |
7 | from .common_serialization import AttribSerializer, AttribDeserializer
8 |
9 |
10 | def serialize_attributes_core(attributes): # type: (dict) -> str
11 | return json.dumps(attributes, cls=AttribSerializer)
12 |
13 |
14 | def deserialize_attributes_core(attributes_serialized): # type: (str) -> dict
15 | return json.loads(attributes_serialized, cls=AttribDeserializer)
16 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/build_blender.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -e -o pipefail
3 | OUT=../dcc_plugins/blender
4 |
5 | pushd $(dirname $0)
6 |
7 | mkdir -p $OUT
8 |
9 | # zip blender addon
10 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" blender/blender_path $OUT
11 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/blender_path/addons/scripts
12 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/blender_path/addons/lifeblood_plugin
13 | pushd ../dcc_plugins/blender/blender_path/addons
14 | zip -r ../../../blender_lifeblood_addon.zip lifeblood_plugin --exclude "*__pycache__/" --exclude "*.pyc"
15 | popd
16 |
17 | popd
--------------------------------------------------------------------------------
/flake.lock:
--------------------------------------------------------------------------------
1 | {
2 | "nodes": {
3 | "nixpkgs": {
4 | "locked": {
5 | "lastModified": 1763049705,
6 | "narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=",
7 | "owner": "nixos",
8 | "repo": "nixpkgs",
9 | "rev": "3acb677ea67d4c6218f33de0db0955f116b7588c",
10 | "type": "github"
11 | },
12 | "original": {
13 | "owner": "nixos",
14 | "ref": "nixos-25.05",
15 | "repo": "nixpkgs",
16 | "type": "github"
17 | }
18 | },
19 | "root": {
20 | "inputs": {
21 | "nixpkgs": "nixpkgs"
22 | }
23 | }
24 | },
25 | "root": "root",
26 | "version": 7
27 | }
28 |
--------------------------------------------------------------------------------
/rcc/dark/vmovetoolbar.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/rcc/light/vmovetoolbar.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/tests/nodes/test_husk.py:
--------------------------------------------------------------------------------
1 | import os
2 | from pathlib import Path
3 |
4 | from lifeblood.invocationjob import Environment
5 | from lifeblood.environment_resolver import EnvironmentResolverArguments
6 |
7 | from lifeblood_testing_common.nodes_common import TestCaseBase
8 |
9 |
10 | # TODO: tests are currently very shallow !!
11 |
12 | class HuskTestCase(TestCaseBase):
13 | async def test_husk_node(self):
14 | await self._helper_test_render_node('houdini_husk', 'usd', 'husk', Path(__file__).parent / 'data' / 'mock_houdini')
15 |
16 | async def test_karma_node(self):
17 | await self._helper_test_render_node('karma', 'usd', 'husk', Path(__file__).parent / 'data' / 'mock_houdini')
18 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/PreFirstCreate:
--------------------------------------------------------------------------------
1 | import hou
2 | import subprocess
3 | import re
4 | import sys
5 |
6 |
7 | CREATE_NO_WINDOW = 0x08000000
8 | flags = 0
9 | if sys.platform == 'win32':
10 | flags = CREATE_NO_WINDOW
11 | out, _ = subprocess.Popen(['redshiftCmdLine'], stdout=subprocess.PIPE, creationflags=flags).communicate()
12 |
13 | node_type = kwargs['type']
14 | for line in out.splitlines():
15 | m = re.search(r'version (\d+)\.(\d+)(?:\.(\d+))', line.decode())
16 | if m:
17 | hou.session._lifeblood__rs_ver_str = f'{m.group(1)}.{m.group(2)}.{m.group(3) or 0}'
18 | break
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line, and also
5 | # from the environment for the first two.
6 | SPHINXOPTS ?=
7 | SPHINXBUILD ?= sphinx-build
8 | SOURCEDIR = source
9 | BUILDDIR = build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
21 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/node_decorator_base.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QGraphicsItem
2 | from .drawable_node import DrawableNode
3 |
4 |
5 | class NodeDecorator(QGraphicsItem):
6 | def __init__(self, node: DrawableNode):
7 | super().__init__()
8 | self.__node = node
9 | self.setZValue(-2) # draw behind everything
10 |
11 | def node(self) -> DrawableNode:
12 | return self.__node
13 |
14 | def node_updated(self):
15 | """
16 | called by the owning node when it's data changes
17 | """
18 | pass
19 |
20 |
21 | class NodeDecoratorFactoryBase:
22 | def make_decorator(self, node: DrawableNode) -> NodeDecorator:
23 | raise NotImplementedError()
24 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/matrix_client/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # Copyright 2015 OpenMarket Ltd
3 | # Copyright 2018 Adam Beckmeyer
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | __version__ = "0.4.0"
17 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/nodeeditor_windows/ui_parameters_window.py:
--------------------------------------------------------------------------------
1 | from lifeblood_viewer.nodeeditor import NodeEditor
2 | from lifeblood_viewer.ui_scene_elements import ImguiViewWindow
3 | from ..graphics_items import NetworkItemWithUI
4 |
5 |
6 | class ParametersWindow(ImguiViewWindow):
7 | def __init__(self, editor_widget: NodeEditor):
8 | super().__init__(editor_widget, 'Parameters')
9 |
10 | def draw_window_elements(self):
11 | iitem = self.scene().get_inspected_item()
12 | if iitem and isinstance(iitem, NetworkItemWithUI):
13 | iitem.draw_imgui_elements(self.editor_widget())
14 |
15 | def initial_geometry(self):
16 | return 1065, 48, 561, 697
17 |
18 | def shortcut_context_id(self):
19 | return None
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/README.md:
--------------------------------------------------------------------------------
1 | # Houdini plugin for lifeblood
2 |
3 | Check latest `tools` releases for the houdini plugin.
4 |
5 | * The zip file's contents may be extracted directly into your houdini's home dir
6 | (smth like `~/houdini20.0` or `C:\Users\user\Documents\houdini20.0`)
7 |
8 | * Alternatively the zip file's content may go somewhere separate, but then
9 | you need to ensure to add the path to that location to `HOUDINI_PATH`
10 | One way you can do it is through `houdini.env` file
11 | I will not give examples here because it highly depends on what else is
12 | there in your `houdini.env` file.
13 | The point is just be sure that path to this directory is in the list, and that
14 | there is exactly one `&` in the very end on the `HOUDINI_PATH` value
--------------------------------------------------------------------------------
/src/lifeblood/stock_nodes/webserver/data/index.html:
--------------------------------------------------------------------------------
1 |
2 | {header_title}
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/message_handler.py:
--------------------------------------------------------------------------------
1 | from .messages import Message
2 | from .client import MessageClient
3 |
4 |
5 | class MessageHandlerBase:
6 | async def process_message(self, message: Message, client: MessageClient) -> bool:
7 | """
8 | should return True if message was processed.
9 | if message is not expected by this handler - the function should return False
10 | """
11 | raise NotImplementedError()
12 |
13 | async def clear_internal_state(self):
14 | """
15 | If a message handler implementation has an internal state -
16 | this function must clean it.
17 | This might be called when handler is de-initialized,
18 | or when some other clear slate reset is required
19 | """
20 | return
21 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/address_routing.py:
--------------------------------------------------------------------------------
1 | from .address import DirectAddress, AddressChain
2 | from .exceptions import MessageTransferError
3 | from typing import Iterable, Optional
4 |
5 |
6 | class RoutingImpossible(MessageTransferError):
7 | def __init__(self, sources: Iterable[DirectAddress], destination: AddressChain, *, wrapped_exception: Optional[Exception] = None):
8 | self.sources = list(sources)
9 | self.destination = destination
10 | super().__init__(f'failed to find suitable address to reach {self.destination} from {self.sources}', wrapped_exception=wrapped_exception)
11 |
12 |
13 | class AddressRouter:
14 | def select_source_for(self, possible_sources: Iterable[DirectAddress], destination: AddressChain) -> DirectAddress:
15 | raise NotImplementedError()
16 |
--------------------------------------------------------------------------------
/src/lifeblood/attribute_serialization.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | import json
3 |
4 | from .common_serialization import AttribSerializer, AttribDeserializer
5 |
6 |
7 | async def serialize_attributes(attributes: dict) -> str:
8 | return await asyncio.get_event_loop().run_in_executor(None, serialize_attributes_core, attributes)
9 |
10 |
11 | async def deserialize_attributes(attributes_serialized: str) -> dict:
12 | return await asyncio.get_event_loop().run_in_executor(None, deserialize_attributes_core, attributes_serialized)
13 |
14 |
15 | def serialize_attributes_core(attributes: dict) -> str:
16 | return json.dumps(attributes, cls=AttribSerializer)
17 |
18 |
19 | def deserialize_attributes_core(attributes_serialized: str) -> dict:
20 | return json.loads(attributes_serialized, cls=AttribDeserializer)
21 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/qextended_graphics_item.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QGraphicsItem, QGraphicsSceneMouseEvent
2 |
3 |
4 | class QGraphicsItemExtended(QGraphicsItem):
5 | def __init__(self):
6 | super().__init__()
7 |
8 | # the bug the cheat below is working around seem to have been fixed in pyside 6.8 (maybe earlier)
9 | # # cheat cuz Shiboken.Object does not respect mro
10 | # mro = self.__class__.mro()
11 | # cur_mro_i = mro.index(QGraphicsItemExtended)
12 | # if len(mro) > cur_mro_i + 2:
13 | # super(mro[cur_mro_i + 2], self).__init__()
14 |
15 | def post_mousePressEvent(self, event: QGraphicsSceneMouseEvent):
16 | """
17 | special "event" when mousePressEvent uses candidates
18 | """
19 | pass
20 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/spawn_children.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/spawn_children:
2 |
3 | ==============
4 | Spawn Children
5 | ==============
6 |
7 | Spawn children for incoming task.
8 |
9 | Tasks' :ref:`parent-children hierarchy` is a core concept of Lifeblood.
10 |
11 | Children will be going out from the second output.
12 |
13 | Parameters
14 | ==========
15 |
16 | :Spawn This Many Children:
17 | Number of children to spawn
18 | :Child Number Attribute To Create:
19 | Create attribute with this name, containing the number of child created by this node
20 | :Children Base Name:
21 | Base name for children tasks
22 | :Attribute Pattern To Inherit:
23 | pattern of attributes to inherit by children from the original task
24 |
25 |
26 | Attributes Set
27 | ==============
28 |
29 | Incoming task is unmodified.
--------------------------------------------------------------------------------
/src/lifeblood_viewer/db_misc.py:
--------------------------------------------------------------------------------
1 | sql_init_script = '''
2 | BEGIN TRANSACTION;
3 | CREATE TABLE IF NOT EXISTS "widgets" (
4 | "name" TEXT NOT NULL,
5 | "posx" INTEGER,
6 | "posy" INTEGER,
7 | "width" INTEGER,
8 | "height" INTEGER,
9 | "scene_x" REAL,
10 | "scene_y" REAL,
11 | "scene_h" REAL,
12 | "scene_w" REAL,
13 | PRIMARY KEY("name")
14 | );
15 | CREATE TABLE IF NOT EXISTS "nodes" (
16 | "id" INTEGER NOT NULL,
17 | "posx" REAL,
18 | "posy" REAL,
19 | PRIMARY KEY("id")
20 | );
21 | COMMIT;
22 |
23 | '''
24 |
25 | sql_init_script_nodes = '''
26 | BEGIN TRANSACTION;
27 | CREATE TABLE IF NOT EXISTS "nodes_{db_uid}" (
28 | "id" INTEGER NOT NULL,
29 | "posx" REAL,
30 | "posy" REAL,
31 | PRIMARY KEY("id")
32 | );
33 | COMMIT;
34 | '''
--------------------------------------------------------------------------------
/docs/source/nodes/stock/houdini/common_devices.rst:
--------------------------------------------------------------------------------
1 | :gpu:
2 |
3 | Treated as GPU OpenCL device
4 |
5 | tags used:
6 |
7 | - ``opencl_dev`` - has format ``::``
8 |
9 | - ```` - value identifying this device through houdini's ``HOUDINI_OCL_DEVICETYPE`` variable
10 | - ```` - value identifying this device through houdini's ``HOUDINI_OCL_VENDOR`` variable
11 | - ```` - value identifying this device through houdini's ``HOUDINI_OCL_DEVICENUMBER`` variable
12 |
13 | Each value can be empty, in that case corresponding houdini's environment variable is not set, it's up to the user to
14 | configure this value correctly.
15 |
16 | Example values: ``"GPU::0"``, ``"GPU:Intel(R) Corporation"``, ``GPU:NVIDIA Corporation:0``
17 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/OnCreated:
--------------------------------------------------------------------------------
1 | # set up some defaults unsettable other ways
2 | node = kwargs['node']
3 |
4 | node.setParms({'attr_name_0': 'hipfile',
5 | 'attr_type_0': 'str',
6 | 'val_str_0': '$HIPFILE'
7 | })
8 |
9 | node.parm('env_arg_name_0').setExpression('"user"', language=hou.exprLanguage.Python)
10 | node.parm('env_arg_val_0').setExpression('import getpass\nreturn getpass.getuser()', language=hou.exprLanguage.Python)
11 | node.parm('env_arg_name_1').setExpression('import sys\nreturn "package.houdini.py%d_%d" % (sys.version_info.major, sys.version_info.minor)', language=hou.exprLanguage.Python)
12 | node.parm('env_arg_val_1').setExpression('"~=" + hou.applicationVersionString()', language=hou.exprLanguage.Python)
13 |
--------------------------------------------------------------------------------
/docs/source/components/logging.rst:
--------------------------------------------------------------------------------
1 | Logging
2 | =======
3 |
4 | | All Lifeblood components log to stdout, as well as to a log file.
5 | | Log files location is:
6 |
7 | * ``/home//.local/share/lifeblood/log`` (or ``$XDG_DATA_HOME`` if defined) (linux)
8 | * ``C:\Users\\AppData\Local\lifeblood\log`` (based on ``%LOCALAPPDATA%``) (windows)
9 | * ``/Users//Library/Application Support/lifeblood/log`` (mac)
10 |
11 | By default all components of Lifeblood are set to log only "important" messages (like warnings and errors),
12 | but to figure out what's happening sometimes you would need a bit more information.
13 |
14 | | All of Lifeblood's components can accept ``--loglevel`` parameter before command to specify minimum log level to, well, log.
15 | | for example ``lifeblood scheduler --loglevel DEBUG`` will set default log level to DEBUG and you will see all the
16 | crap printed out into stdout
17 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/requests/hooks.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | """
4 | requests.hooks
5 | ~~~~~~~~~~~~~~
6 |
7 | This module provides the capabilities for the Requests hooks system.
8 |
9 | Available hooks:
10 |
11 | ``response``:
12 | The response generated from a Request.
13 | """
14 | HOOKS = ['response']
15 |
16 |
17 | def default_hooks():
18 | return {event: [] for event in HOOKS}
19 |
20 | # TODO: response is the only one
21 |
22 |
23 | def dispatch_hook(key, hooks, hook_data, **kwargs):
24 | """Dispatches a hook dictionary on a given piece of data."""
25 | hooks = hooks or {}
26 | hooks = hooks.get(key)
27 | if hooks:
28 | if hasattr(hooks, '__call__'):
29 | hooks = [hooks]
30 | for hook in hooks:
31 | _hook_data = hook(hook_data, **kwargs)
32 | if _hook_data is not None:
33 | hook_data = _hook_data
34 | return hook_data
35 |
--------------------------------------------------------------------------------
/src/lifeblood/core_nodes/kill.py:
--------------------------------------------------------------------------------
1 | from lifeblood.node_plugin_base import BaseNode
2 | from lifeblood.nodethings import ProcessingResult
3 |
4 | from typing import Iterable
5 |
6 |
7 | def node_class():
8 | return KillNode
9 |
10 |
11 | class KillNode(BaseNode):
12 | @classmethod
13 | def label(cls) -> str:
14 | return 'killer'
15 |
16 | @classmethod
17 | def tags(cls) -> Iterable[str]:
18 | return 'kill', 'die', 'core'
19 |
20 | @classmethod
21 | def type_name(cls) -> str:
22 | return 'killer'
23 |
24 | def __init__(self, name: str):
25 | super(KillNode, self).__init__(name)
26 | ui = self.get_ui()
27 | with ui.initializing_interface_lock():
28 | ui.color_scheme().set_main_color(0.1, 0.1, 0.1)
29 |
30 | def process_task(self, context) -> ProcessingResult:
31 | res = ProcessingResult()
32 | res.kill_task()
33 | return res
34 |
--------------------------------------------------------------------------------
/docs/make.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 |
3 | pushd %~dp0
4 |
5 | REM Command file for Sphinx documentation
6 |
7 | if "%SPHINXBUILD%" == "" (
8 | set SPHINXBUILD=sphinx-build
9 | )
10 | set SOURCEDIR=source
11 | set BUILDDIR=build
12 |
13 | if "%1" == "" goto help
14 |
15 | %SPHINXBUILD% >NUL 2>NUL
16 | if errorlevel 9009 (
17 | echo.
18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19 | echo.installed, then set the SPHINXBUILD environment variable to point
20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you
21 | echo.may add the Sphinx directory to PATH.
22 | echo.
23 | echo.If you don't have Sphinx installed, grab it from
24 | echo.http://sphinx-doc.org/
25 | exit /b 1
26 | )
27 |
28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29 | goto end
30 |
31 | :help
32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33 |
34 | :end
35 | popd
36 |
--------------------------------------------------------------------------------
/src/lifeblood_client/nethelpers.py:
--------------------------------------------------------------------------------
1 | import struct
2 | import socket
3 |
4 |
5 | def recv_exactly(sock, numbytes): # type: (socket.socket, int) -> bytes
6 | patches = []
7 | got_bytes = 0
8 | while got_bytes != numbytes:
9 | patches.append(sock.recv(numbytes - got_bytes))
10 | got_bytes += len(patches[-1])
11 | if len(patches[-1]) == 0:
12 | raise ConnectionResetError()
13 |
14 | if len(patches) == 1:
15 | return patches[0]
16 | elif len(patches) == 0:
17 | return b''
18 | return b''.join(patches)
19 |
20 |
21 | def send_string(sock, text): # type: (socket.socket, str) -> None
22 | bts = text.encode('UTF-8')
23 | sock.sendall(struct.pack('>Q', len(bts)))
24 | sock.sendall(bts)
25 |
26 |
27 | def recv_string(sock): # type: (socket.socket) -> str
28 | btlen = struct.unpack('>Q', recv_exactly(sock, 8))[0]
29 | return recv_exactly(sock, btlen).decode('UTF-8')
30 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/PythonModule:
--------------------------------------------------------------------------------
1 | import hou
2 |
3 |
4 | def submit_btn_callback(node):
5 | # validate
6 | ropnode = node.parm('roppath').evalAsNode()
7 | if ropnode is None:
8 | hou.ui.displayMessage(
9 | 'Mantra node is not selected',
10 | severity=hou.severityType.Error,
11 | title='you forgot to select node to render'
12 | )
13 | return
14 | if (rop_type_name := ropnode.type().nameComponents()[2]) != 'ifd':
15 | hou.ui.displayMessage(
16 | f'Specify a Mantra node to render. instead I see "{rop_type_name}"',
17 | severity=hou.severityType.Error,
18 | title='Invalid node type to render'
19 | )
20 | return
21 |
22 | # submit
23 | inner = node.node('lifeblood_submitter')
24 | inner.hdaModule().submit_button_callback(inner)
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "PreFirstCreate/Cursor":{
3 | "type":"intarray",
4 | "value":[10,1]
5 | },
6 | "PreFirstCreate/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "PreFirstCreate/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "PreFirstCreate/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "PreFirstCreate/Source":{
19 | "type":"string",
20 | "value":""
21 | },
22 | "PythonModule/Cursor":{
23 | "type":"intarray",
24 | "value":[18,1]
25 | },
26 | "PythonModule/IsExpr":{
27 | "type":"bool",
28 | "value":false
29 | },
30 | "PythonModule/IsPython":{
31 | "type":"bool",
32 | "value":true
33 | },
34 | "PythonModule/IsScript":{
35 | "type":"bool",
36 | "value":true
37 | },
38 | "PythonModule/Source":{
39 | "type":"string",
40 | "value":""
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/decorated_node.py:
--------------------------------------------------------------------------------
1 | from .node_decorator_base import NodeDecorator, NodeDecoratorFactoryBase
2 | from .drawable_node_with_snap_points import DrawableNodeWithSnapPoints
3 |
4 | from ..graphics_scene_base import GraphicsSceneBase
5 |
6 | from typing import Iterable, List
7 |
8 |
9 | class DecoratedNode(DrawableNodeWithSnapPoints):
10 | def __init__(self, scene: GraphicsSceneBase, id: int, type: str, name: str, node_decorator_factories: Iterable[NodeDecoratorFactoryBase] = ()):
11 | super().__init__(scene, id, type, name)
12 |
13 | # decorators
14 | self.__decorators: List[NodeDecorator] = [fac.make_decorator(self) for fac in node_decorator_factories]
15 | for decorator in self.__decorators:
16 | decorator.setParentItem(self)
17 |
18 | def item_updated(self):
19 | super().item_updated()
20 | for decorator in self.__decorators:
21 | decorator.node_updated()
22 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/PythonModule:
--------------------------------------------------------------------------------
1 | import hou
2 |
3 |
4 | def submit_btn_callback(node):
5 | # validate
6 | ropnode = node.parm('roppath').evalAsNode()
7 | if ropnode is None:
8 | hou.ui.displayMessage(
9 | 'Redshift node is not selected',
10 | severity=hou.severityType.Error,
11 | title='you forgot to select node to render'
12 | )
13 | return
14 | if (rop_type_name := ropnode.type().nameComponents()[2]) != 'Redshift_ROP':
15 | hou.ui.displayMessage(
16 | f'Specify a Redshift node to render. instead I see "{rop_type_name}"',
17 | severity=hou.severityType.Error,
18 | title='Invalid node type to render'
19 | )
20 | return
21 |
22 | # submit
23 | inner = node.node('lifeblood_submitter')
24 | inner.hdaModule().submit_button_callback(inner)
--------------------------------------------------------------------------------
/src/lifeblood_viewer/nodeeditor_windows/ui_longop_window.py:
--------------------------------------------------------------------------------
1 | import imgui
2 | from lifeblood_viewer.nodeeditor import NodeEditor
3 | from lifeblood_viewer.ui_scene_elements import ImguiViewWindow
4 |
5 |
6 | class LongOpWindow(ImguiViewWindow):
7 | def __init__(self, editor_widget: NodeEditor):
8 | super().__init__(editor_widget, 'Operations')
9 |
10 | def draw_window_elements(self):
11 | ops, queues = self.scene().long_operation_statuses()
12 | for opid, (fraction, status) in ops:
13 | imgui.progress_bar(fraction or 1.0, overlay=f'{opid}:{status or ""}')
14 | imgui.separator()
15 | imgui.text('queues:')
16 | if queues:
17 | for qname, qval in queues.items():
18 | imgui.text(f' {qval}: {qname}')
19 | else:
20 | imgui.text('none')
21 |
22 | def initial_geometry(self):
23 | return 32, 548, 256, 150
24 |
25 | def shortcut_context_id(self):
26 | return None
27 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/nodeeditor_windows/ui_undo_window.py:
--------------------------------------------------------------------------------
1 | import imgui
2 | from lifeblood_viewer.nodeeditor import NodeEditor
3 | from lifeblood_viewer.ui_scene_elements import ImguiViewWindow
4 |
5 |
6 | class UndoWindow(ImguiViewWindow):
7 | def __init__(self, editor_widget: NodeEditor):
8 | super().__init__(editor_widget, 'Undo History')
9 |
10 | def draw_window_elements(self):
11 | something_was_visible = False
12 | for name in reversed(self.scene().undo_stack_names()):
13 | if len(name) > 40:
14 | name = name[:40] + '...'
15 | imgui.bullet_text(name)
16 | if not something_was_visible and imgui.is_item_visible():
17 | something_was_visible = True
18 | elif something_was_visible and not imgui.is_item_visible():
19 | break
20 |
21 | def initial_geometry(self):
22 | return 32, 48, 256, 300
23 |
24 | def shortcut_context_id(self):
25 | return None
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/PythonModule:
--------------------------------------------------------------------------------
1 | import hou
2 |
3 |
4 | def submit_btn_callback(node):
5 | # validate
6 | ropnode = node.parm('roppath').evalAsNode()
7 | if ropnode is None:
8 | hou.ui.displayMessage(
9 | 'USDRender node is not selected',
10 | severity=hou.severityType.Error,
11 | title='you forgot to select node to render'
12 | )
13 | return
14 | if (rop_type_name := ropnode.type().nameComponents()[2]) not in ('usdrender_rop', 'karma'):
15 | hou.ui.displayMessage(
16 | f'Specify a USDRender node to render. instead I see "{rop_type_name}"',
17 | severity=hou.severityType.Error,
18 | title='Invalid node type to render'
19 | )
20 | return
21 |
22 | # submit
23 | inner = node.node('lifeblood_submitter')
24 | inner.hdaModule().submit_button_callback(inner)
--------------------------------------------------------------------------------
/src/lifeblood/core_nodes/null.py:
--------------------------------------------------------------------------------
1 | from lifeblood.node_plugin_base import BaseNode
2 | from lifeblood.nodethings import ProcessingResult
3 |
4 | from typing import Iterable
5 |
6 |
7 | def node_class():
8 | return NullNode
9 |
10 |
11 | class NullNode(BaseNode):
12 | @classmethod
13 | def label(cls) -> str:
14 | return 'null'
15 |
16 | @classmethod
17 | def tags(cls) -> Iterable[str]:
18 | return 'null', 'passthrough', 'core'
19 |
20 | @classmethod
21 | def type_name(cls) -> str:
22 | return 'null'
23 |
24 | def __init__(self, name: str):
25 | super(NullNode, self).__init__(name)
26 | ui = self.get_ui()
27 | with ui.initializing_interface_lock():
28 | ui.color_scheme().set_main_color(0.22, 0.24, 0.22)
29 |
30 | def process_task(self, context) -> ProcessingResult:
31 | return ProcessingResult()
32 |
33 | def postprocess_task(self, context) -> ProcessingResult:
34 | return ProcessingResult()
35 |
--------------------------------------------------------------------------------
/docs/source/nodes.rst:
--------------------------------------------------------------------------------
1 | .. _nodes_index:
2 |
3 | =====
4 | Nodes
5 | =====
6 |
7 | .. toctree::
8 | :maxdepth: 1
9 | :caption: Core Nodes:
10 |
11 | nodes/core/attribute_splitter
12 | nodes/core/delete_attrib
13 | nodes/core/environment_resolver_arguments_setter
14 | nodes/core/killer
15 | nodes/core/mod_attrib
16 | nodes/core/null
17 | nodes/core/parent_children_waiter
18 | nodes/core/python
19 | nodes/core/rename_attrib
20 | nodes/core/set_attrib
21 | nodes/core/spawn_children
22 | nodes/core/split_waiter
23 | nodes/core/switch
24 | nodes/core/wait_for_task_value
25 | nodes/core/wedge
26 |
27 | .. toctree::
28 | :maxdepth: 1
29 | :caption: Stock Nodes:
30 |
31 | nodes/stock/houdini/hip_driver_renderer
32 | nodes/stock/houdini/karma
33 | nodes/stock/houdini/mantra
34 | nodes/stock/matrixnotifier
35 | nodes/stock/telegram_client/telegram_notifier
36 | nodes/stock/redshift/redshift
37 | nodes/stock/redshift/hip_rs_generator
38 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/node_connection_snap_point.py:
--------------------------------------------------------------------------------
1 | from .drawable_node import DrawableNode
2 | from PySide6.QtCore import QPointF
3 |
4 |
5 | class SnapPoint:
6 | def pos(self) -> QPointF:
7 | raise NotImplementedError()
8 |
9 |
10 | class NodeConnSnapPoint(SnapPoint):
11 | def __init__(self, node: DrawableNode, connection_name: str, connection_is_input: bool):
12 | super().__init__()
13 | self.__node = node
14 | self.__conn_name = connection_name
15 | self.__isinput = connection_is_input
16 |
17 | def node(self) -> DrawableNode:
18 | return self.__node
19 |
20 | def connection_name(self) -> str:
21 | return self.__conn_name
22 |
23 | def connection_is_input(self) -> bool:
24 | return self.__isinput
25 |
26 | def pos(self) -> QPointF:
27 | if self.__isinput:
28 | return self.__node.get_input_position(self.__conn_name)
29 | return self.__node.get_output_position(self.__conn_name)
30 |
--------------------------------------------------------------------------------
/docs/source/index.rst:
--------------------------------------------------------------------------------
1 | Welcome to Lifeblood documentation!
2 | ====================================
3 |
4 | .. image:: images/lifeblood.svg
5 |
6 | **Lifeblood** is a task management software tuned to CG industry.
7 |
8 | **Lifeblood** solves the same problem as Deadline, Tractor and other farm managers,
9 | but Lifeblood does much more on top of that.
10 |
11 | **Lifeblood** allows you do define task processing workflows in terms of a node graph,
12 | where tasks that travel from node to node and may produce workload to be executed by a swarm of workers.
13 |
14 | .. toctree::
15 | :maxdepth: 2
16 |
17 | news/index
18 |
19 | .. toctree::
20 | :maxdepth: 2
21 | :caption: Contents:
22 |
23 | components/index
24 | overview
25 | concepts
26 | installation
27 | usage
28 | resource_control
29 | network_config
30 | tutorials
31 | nodes
32 |
33 | Indices and tables
34 | ==================
35 |
36 | * :ref:`genindex`
37 | * :ref:`modindex`
38 | * :ref:`search`
39 |
40 | ..
41 | * :ref:`api`
42 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 | Mantra
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_redshift_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__redshift__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 | Redshift
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/lifeblood-viewer.nix:
--------------------------------------------------------------------------------
1 |
2 | {
3 | lib,
4 | fetchPypi,
5 | python310Packages,
6 | python311Packages,
7 | lifeblood,
8 | }:
9 | let
10 | imgui = python311Packages.buildPythonPackage {
11 | name = "imgui";
12 | pythonImportsCheck = [ "imgui" ];
13 | src = fetchPypi {
14 | pname = "imgui";
15 | version = "2.0.0";
16 | hash = "sha256-L7247tO429fqmK+eTBxlgrC8TalColjeFjM9jGU9Z+E=";
17 | };
18 | nativeBuildInputs = with python311Packages; [
19 | cython_0
20 | ];
21 | };
22 | in python311Packages.buildPythonPackage {
23 | name = "lifeblood-viewer";
24 | pyproject = true;
25 | src = ./.;
26 |
27 | patchPhase = ''
28 | cp ./pkg_lifeblood_viewer/{pyproject.toml,setup.cfg} .
29 | '';
30 |
31 | build-system = with python311Packages; [ setuptools ];
32 |
33 | pythonImportsCheck = [ "lifeblood" ];
34 | propagatedBuildInputs = with python311Packages; [
35 | glfw
36 | pyopengl
37 | pyside6
38 | lz4
39 | grandalf
40 | numpy_1
41 | ] ++ [
42 | imgui
43 | lifeblood
44 | ];
45 | }
46 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/requests/packages.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | try:
4 | import chardet
5 | except ImportError:
6 | import charset_normalizer as chardet
7 | import warnings
8 |
9 | warnings.filterwarnings('ignore', 'Trying to detect', module='charset_normalizer')
10 |
11 | # This code exists for backwards compatibility reasons.
12 | # I don't like it either. Just look the other way. :)
13 |
14 | for package in ('urllib3', 'idna'):
15 | locals()[package] = __import__(package)
16 | # This traversal is apparently necessary such that the identities are
17 | # preserved (requests.packages.urllib3.* is urllib3.*)
18 | for mod in list(sys.modules):
19 | if mod == package or mod.startswith(package + '.'):
20 | sys.modules['requests.packages.' + mod] = sys.modules[mod]
21 |
22 | target = chardet.__name__
23 | for mod in list(sys.modules):
24 | if mod == target or mod.startswith(target + '.'):
25 | sys.modules['requests.packages.' + target.replace(target, 'chardet')] = sys.modules[mod]
26 | # Kinda cool, though, right?
27 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Tools.shelf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | ROP
11 |
12 |
13 | $HDA_TABLE_AND_NAME
14 |
15 | Lifeblood
16 |
19 |
20 | RenderMan
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/packages/ssl_match_hostname/__init__.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | try:
4 | # Our match_hostname function is the same as 3.10's, so we only want to
5 | # import the match_hostname function if it's at least that good.
6 | # We also fallback on Python 3.10+ because our code doesn't emit
7 | # deprecation warnings and is the same as Python 3.10 otherwise.
8 | if sys.version_info < (3, 5) or sys.version_info >= (3, 10):
9 | raise ImportError("Fallback to vendored code")
10 |
11 | from ssl import CertificateError, match_hostname
12 | except ImportError:
13 | try:
14 | # Backport of the function from a pypi module
15 | from backports.ssl_match_hostname import ( # type: ignore
16 | CertificateError,
17 | match_hostname,
18 | )
19 | except ImportError:
20 | # Our vendored copy
21 | from ._implementation import CertificateError, match_hostname # type: ignore
22 |
23 | # Not needed, but documenting what we provide.
24 | __all__ = ("CertificateError", "match_hostname")
25 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/build_houdini.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -e -o pipefail
3 |
4 | OUT=../dcc_plugins/houdini
5 |
6 | pushd $(dirname $0)
7 |
8 | mkdir -p $OUT/otls
9 |
10 | # assume houdini environment is initialized
11 | for fname in houdini/otls/*.hda; do
12 | hotl -l "${fname}" "$OUT/otls/${fname##*/}"
13 | done;
14 |
15 | rsync -arhv houdini/presets $OUT
16 |
17 | # copy client module
18 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/python2.7libs
19 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/python3.7libs
20 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/python3.9libs
21 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/python3.10libs
22 | rsync -arhv --exclude=__pycache__ --exclude="*.pyc" ../src/lifeblood_client $OUT/python3.11libs
23 |
24 | pushd $OUT
25 | if [ -f ../houdini.zip ]; then
26 | rm ../houdini.zip
27 | fi
28 | zip -r ../houdini.zip . --exclude "*__pycache__/" --exclude "*.pyc" --exclude "*.md"
29 | popd
30 |
31 | popd
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/interfaces.py:
--------------------------------------------------------------------------------
1 | from .messages import Message
2 | from .message_stream import MessageSendStreamBase
3 | from .address import DirectAddress
4 |
5 | from typing import Callable, Awaitable
6 |
7 |
8 | class MessageReceiverFactory:
9 | async def create_receiver(self, address: DirectAddress, message_callback: Callable[[Message], Awaitable[bool]]) -> "MessageReceiver":
10 | raise NotImplementedError()
11 |
12 |
13 | class MessageReceiver:
14 | def __init__(self, this_address: DirectAddress):
15 | self.__this_address = this_address
16 |
17 | def this_address(self) -> DirectAddress:
18 | return self.__this_address
19 |
20 | def stop(self):
21 | """
22 | stop running receiver async task
23 | """
24 | raise NotImplementedError()
25 |
26 | async def wait_till_stopped(self):
27 | raise NotImplementedError()
28 |
29 |
30 | class MessageStreamFactory:
31 | async def open_sending_stream(self, destination: DirectAddress, source: DirectAddress) -> MessageSendStreamBase:
32 | raise NotImplementedError()
33 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/split_waiter.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/split_waiter:
2 |
3 | ============
4 | Split Waiter
5 | ============
6 |
7 | Core task synchronization node.
8 |
9 | :ref:`Split concept` is one of the core Lifeblood's task concepts.
10 |
11 | A Task will be held here until all tasks from the same split this task belongs to have arrived at this task.
12 | So tasks in a split will be synchronized in this node.
13 |
14 | When all tasks of a split are in the node, the original task that was split is teleported to this node, attributes from split tasks
15 | may be promoted to the original, and then original task is let through. Split tasks are killed after that.
16 |
17 | Parameters
18 | ==========
19 |
20 | Transfer Attributes
21 |
22 | :Attribute:
23 | name of an attribute to promote from children to parent
24 | :As:
25 | set promoted value to attribute of this name on parent
26 | :Sort By:
27 | how to sort children task before gathering values for promotion
28 | :Reversed:
29 | reverse the sort
30 |
31 | Attributes Set
32 | ==============
33 |
34 | Promoted attributes are set to the parent task
35 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/impl/tcp_message_receiver_factory.py:
--------------------------------------------------------------------------------
1 | from ..interfaces import MessageReceiverFactory
2 | from ..messages import Message
3 | from ..address import DirectAddress
4 | from ..exceptions import AddressTypeNotSupportedError
5 | from .tcp_message_receiver import TcpMessageReceiver
6 |
7 | from typing import Callable, Awaitable
8 |
9 |
10 | class TcpMessageReceiverFactory(MessageReceiverFactory):
11 | def __init__(self, backlog=4096):
12 | self.__backlog = backlog
13 |
14 | async def create_receiver(self, address: DirectAddress, message_callback: Callable[[Message], Awaitable[bool]]) -> TcpMessageReceiver:
15 | if address.count(':') != 1:
16 | raise AddressTypeNotSupportedError(f'address "{address}" is not of ":" format')
17 | host, sport = address.split(':')
18 | if host == '0.0.0.0':
19 | raise ValueError('catch-all listening address 0.0.0.0 is not supported for now')
20 | receiver = TcpMessageReceiver((host, int(sport)), message_callback, socket_backlog=self.__backlog)
21 | await receiver.start()
22 | return receiver
23 |
--------------------------------------------------------------------------------
/docs/source/concepts.rst:
--------------------------------------------------------------------------------
1 | .. _concepts:
2 |
3 | =============
4 | Main Concepts
5 | =============
6 |
7 | .. toctree::
8 | :hidden:
9 |
10 | invocation_comm_feature
11 |
12 | To be done
13 |
14 | Main Terms
15 | ==========
16 |
17 | .. _invocation:
18 |
19 | Invocation
20 | ----------
21 |
22 | Addressing
23 | ==========
24 |
25 | .. _addresschain:
26 |
27 | Address Chain
28 | -------------
29 |
30 | .. _environment_resolver_concept:
31 |
32 | Environment Resolver
33 | --------------------
34 |
35 | see :ref:`environment_resolver`
36 |
37 | Task Processing
38 | ===============
39 |
40 | .. _stage_processing:
41 |
42 | Processing stage
43 | ----------------
44 |
45 | .. _dead_tasks:
46 |
47 | Dead Tasks
48 | ----------
49 |
50 | Task Relations
51 | ==============
52 |
53 | .. _task_parent_hierarchy:
54 |
55 | Task Parent Hierarchy
56 | ---------------------
57 |
58 | .. _concept_split:
59 |
60 | Task Split
61 | ----------
62 |
63 | Invocation Runtime
64 | ==================
65 |
66 | Invocation communication
67 | ------------------------
68 |
69 | read detailed description here :ref:`invocation comm feature`
70 |
71 |
--------------------------------------------------------------------------------
/pkg_lifeblood_viewer/setup.cfg:
--------------------------------------------------------------------------------
1 | [metadata]
2 |
3 | name = lifeblood-viewer
4 | version = 0.3.0
5 | author = XAPKOHHEH
6 | description = view the LIFEBLOOD !!
7 | long_description = file: README.md
8 | long_description_content_type = text/markdown
9 | url = https://github.com/pedohorse/lifeblood
10 | project_urls =
11 | Bug Tracker = https://github.com/pedohorse/lifeblood/issues
12 | classifiers =
13 | Programming Language :: Python :: 3
14 | License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
15 | Operating System :: OS Independent
16 |
17 | [options]
18 | package_dir =
19 | = src
20 | packages = find:
21 | python_requires = >=3.9, <3.12
22 | install_requires =
23 | imgui~=2.0
24 | glfw~=2.5
25 | PyOpenGL~=3.1
26 | PySide6>=6.8,<6.10
27 | lz4~=4.0
28 | lifeblood~=0.1
29 | grandalf~=0.7
30 | numpy~=1.21
31 |
32 | [options.packages.find]
33 | where = src
34 | include = lifeblood_viewer*
35 |
36 | [options.package_data]
37 | lifeblood_viewer = icons/*
38 |
39 | [options.entry_points]
40 | console_scripts =
41 | lifeblood_viewer = lifeblood_viewer.launch:console_entry_point
42 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/urllib3/contrib/_appengine_environ.py:
--------------------------------------------------------------------------------
1 | """
2 | This module provides means to detect the App Engine environment.
3 | """
4 |
5 | import os
6 |
7 |
8 | def is_appengine():
9 | return is_local_appengine() or is_prod_appengine()
10 |
11 |
12 | def is_appengine_sandbox():
13 | """Reports if the app is running in the first generation sandbox.
14 |
15 | The second generation runtimes are technically still in a sandbox, but it
16 | is much less restrictive, so generally you shouldn't need to check for it.
17 | see https://cloud.google.com/appengine/docs/standard/runtimes
18 | """
19 | return is_appengine() and os.environ["APPENGINE_RUNTIME"] == "python27"
20 |
21 |
22 | def is_local_appengine():
23 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get(
24 | "SERVER_SOFTWARE", ""
25 | ).startswith("Development/")
26 |
27 |
28 | def is_prod_appengine():
29 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get(
30 | "SERVER_SOFTWARE", ""
31 | ).startswith("Google App Engine/")
32 |
33 |
34 | def is_prod_appengine_mvms():
35 | """Deprecated."""
36 | return False
37 |
--------------------------------------------------------------------------------
/install/README.md:
--------------------------------------------------------------------------------
1 | # Installation scripts
2 |
3 | > [!WARNING]
4 | > These scripts are **outdated**, please use [Lifeblood-Manager](https://github.com/pedohorse/lifeblood-manager/releases)
5 | > instead!
6 |
7 |
8 | There are multiple way of installing lifeblood, you can easily do it with pip,
9 | but here you can find even simpler "one-click" solutions
10 |
11 | see [documentation](https://pedohorse.github.io/lifeblood/installation.html)
12 |
13 | ### Linux/MacOs (never tested on macos)
14 |
15 | * `install.sh` - just copy install.sh to an empty directory where you want **Lifeblood**
16 | to be installed and run it from the terminal.
17 |
18 | ### Windows
19 |
20 | * `install.ps1` - just copy install.ps1 to an empty directory where you want **Lifeblood**
21 | to be installed and run it from the terminal.
22 |
23 | Unlike `pip` method, this will bring the freshest from github.
24 | By default it will bring the latest master branch, but you can specify another branch to it.
25 | You can also use the same script for updating lifeblood.
26 | different lifeblood versions will be installed in different subdirectories,
27 | with `current` (symlink) pointing at the latest installed
--------------------------------------------------------------------------------
/docs/source/nodes/core/environment_resolver_arguments_setter.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/environment_resolver_arguments_setter:
2 |
3 | =====================================
4 | Modify Environment Resolver Arguments
5 | =====================================
6 |
7 | Modifies Environment Resolver information of the task.
8 |
9 | :ref:`Environment Resolver` is one of core concepts related to invocation running.
10 |
11 | Parameters
12 | ==========
13 |
14 | :Mode:
15 | * Set - sets/resets environment resolver information
16 | * Modify - modifies existing environment resolver information
17 | :Resolver:
18 | Environment Resolver type name to set
19 | :Arguments To Set:
20 | Environment Resolver arguments to set.
21 |
22 | For default Lifeblood's environment resolvers, here you most likely want to set such arguments as
23 | package names in form of ``package.`` to value that can be iterpreted as version specification by Semantic Versioning standard,
24 | for example ``~=1.2.3``
25 | :Arguments To Delete:
26 | In Modify mode - list of environment resolver arguments to delete
27 |
28 | Attributes Set
29 | ==============
30 |
31 | None
32 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: lint
2 |
3 | on:
4 | push:
5 |
6 | jobs:
7 | # pylint:
8 | # runs-on: ubuntu-latest
9 | #
10 | # steps:
11 | # - uses: actions/checkout@v4
12 | # - name: Set up Python 3.11
13 | # uses: actions/setup-python@v5
14 | # with:
15 | # python-version: '3.11'
16 | # - name: Install dependencies
17 | # run: |
18 | # python -m pip install --upgrade pip
19 | # pip install pylint
20 | # - name: Analysing the code with pylint
21 | # run: |
22 | # pylint `ls -R|grep .py$|xargs`
23 |
24 | flake8:
25 | runs-on: ubuntu-latest
26 |
27 | steps:
28 | - uses: actions/checkout@v4
29 | - name: Set up Python 3.11
30 | uses: actions/setup-python@v5
31 | with:
32 | python-version: '3.11'
33 | - name: Install dependencies
34 | run: |
35 | python -m pip install --upgrade pip
36 | pip install flake8
37 | - name: Analysing the code with flake8
38 | run: |
39 | flake8 ./src --count --exit-zero --max-complexity=10 --max-line-length=256 --statistics --format='::warning file=%(path)s,line=%(row)d,col=%(col)d::%(code)s %(text)s'
40 |
--------------------------------------------------------------------------------
/docs/source/nodes/core/wedge.rst:
--------------------------------------------------------------------------------
1 | .. _nodes/core/wedge:
2 |
3 | ================
4 | Wedge Attributes
5 | ================
6 |
7 | Split incoming task into some number of split tasks, where each of split tasks will hold a variation of an attribute
8 |
9 | :ref:`Split concept` is one of the core Lifeblood's task concepts.
10 |
11 | Parameters
12 | ==========
13 |
14 | :Wedge Type:
15 | Create split tasks based on:
16 |
17 | * by count
18 | create a set number of split tasks
19 | * by inc
20 | create number of split tasks based on a range of values
21 |
22 | :Attribute:
23 | Name of the attribute to hold the wedged value
24 | :From:
25 | Starting value for wedges
26 | :To:
27 | For type "by count": ending value for wedges
28 | :Count:
29 | For type "by count": number of values to split from-to range into
30 | :Max:
31 | For type "by inc": the maximum value of the range
32 | :Inc:
33 | For type "by inc": the increment. starting from value "from" a split task will be created
34 | adding "inc" to it until value is higher than "max"
35 |
36 |
37 | Attributes Set
38 | ==============
39 |
40 | Attributes being wedged will be set on task splits
41 |
--------------------------------------------------------------------------------
/src/lifeblood/rwlock.py:
--------------------------------------------------------------------------------
1 | from threading import Lock
2 | from contextlib import contextmanager
3 |
4 |
5 | class RWLock:
6 | def __init__(self):
7 | self.__helper_lock = Lock()
8 | self.__wlock = Lock()
9 | self.__num_readers = 0
10 |
11 | def acquire_reader(self):
12 | with self.__helper_lock:
13 | if self.__num_readers == 0:
14 | self.__wlock.acquire()
15 | self.__num_readers += 1
16 |
17 | def release_reader(self):
18 | with self.__helper_lock:
19 | self.__num_readers -= 1
20 | if self.__num_readers == 0:
21 | self.__wlock.release()
22 |
23 | def acquire_writer(self):
24 | self.__wlock.acquire()
25 |
26 | def release_writer(self):
27 | self.__wlock.release()
28 |
29 | @contextmanager
30 | def reader_lock(self):
31 | try:
32 | self.acquire_reader()
33 | yield
34 | finally:
35 | self.release_reader()
36 |
37 | @contextmanager
38 | def writer_lock(self):
39 | try:
40 | self.acquire_writer()
41 | yield
42 | finally:
43 | self.release_writer()
44 |
--------------------------------------------------------------------------------
/src/lifeblood/worker_pool_message_processor_client.py:
--------------------------------------------------------------------------------
1 | from contextlib import contextmanager
2 | from .enums import WorkerState
3 | from .net_messages.impl.tcp_simple_command_message_processor import TcpCommandMessageProcessor
4 | from .net_messages.impl.clients import CommandJsonMessageClient
5 | from .net_messages.address import AddressChain
6 |
7 |
8 | class WorkerPoolControlClient:
9 | def __init__(self, client: CommandJsonMessageClient):
10 | self.__client = client
11 |
12 | @classmethod
13 | @contextmanager
14 | def get_worker_pool_control_client(cls, scheduler_address: AddressChain, processor: TcpCommandMessageProcessor) -> "WorkerPoolControlClient":
15 | with processor.message_client(scheduler_address) as message_client:
16 | yield WorkerPoolControlClient(message_client)
17 |
18 | async def report_state(self, worker_id: int, state: WorkerState):
19 | await self.__client.send_command('worker.state_report', {
20 | 'worker_id': worker_id,
21 | 'state': state.value
22 | })
23 | reply = await self.__client.receive_message()
24 | assert (await reply.message_body_as_json()).get('ok', False), 'something is not ok'
25 |
--------------------------------------------------------------------------------
/src/lifeblood/main_workerpool.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import argparse
3 |
4 | from . import simple_worker_pool_main
5 |
6 |
7 | def main(argv):
8 | parser = argparse.ArgumentParser('lifeblood pool')
9 | mut = parser.add_mutually_exclusive_group()
10 | mut.add_argument('--list', action='store_true', help='list availabele pool types')
11 | mut.add_argument('type', nargs='?', help='worker pool type to start')
12 |
13 | # a bit cheaty, but here we always have fixed amount of args
14 | opts = parser.parse_args(argv[:1])
15 | remaining_args = argv[1:]
16 |
17 | known_types = {'simple': simple_worker_pool_main}
18 | if opts.list:
19 | print('known pool types:\n' + '\n'.join(f'\t{x}' for x in known_types))
20 | return
21 |
22 | # for now it's hardcoded logic, in future TODO: make worker pools extendable as plugins
23 | if opts.type is None:
24 | print('no pool type provided!')
25 | parser.print_help()
26 | return 2
27 | if opts.type not in known_types:
28 | print(f'unknown pool type "{opts.type}"\nuse --list flag to list known pool types', file=sys.stderr)
29 | return 2
30 |
31 | known_types[opts.type].main(remaining_args)
32 |
--------------------------------------------------------------------------------
/stock_tools/matrix_client/matrix_client/checks.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # Copyright 2015 OpenMarket Ltd
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 |
17 | def check_room_id(room_id):
18 | if not room_id.startswith("!"):
19 | raise ValueError("RoomIDs start with !")
20 |
21 | if ":" not in room_id:
22 | raise ValueError("RoomIDs must have a domain component, seperated by a :")
23 |
24 |
25 | def check_user_id(user_id):
26 | if not user_id.startswith("@"):
27 | raise ValueError("UserIDs start with @")
28 |
29 | if ":" not in user_id:
30 | raise ValueError("UserIDs must have a domain component, seperated by a :")
31 |
--------------------------------------------------------------------------------
/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/ExtraFileOptions:
--------------------------------------------------------------------------------
1 | {
2 | "OnCreated/Cursor":{
3 | "type":"intarray",
4 | "value":[9,85]
5 | },
6 | "OnCreated/IsExpr":{
7 | "type":"bool",
8 | "value":false
9 | },
10 | "OnCreated/IsPython":{
11 | "type":"bool",
12 | "value":true
13 | },
14 | "OnCreated/IsScript":{
15 | "type":"bool",
16 | "value":true
17 | },
18 | "OnCreated/Source":{
19 | "type":"string",
20 | "value":""
21 | },
22 | "PythonModule/Cursor":{
23 | "type":"intarray",
24 | "value":[30,64]
25 | },
26 | "PythonModule/IsExpr":{
27 | "type":"bool",
28 | "value":false
29 | },
30 | "PythonModule/IsPython":{
31 | "type":"bool",
32 | "value":true
33 | },
34 | "PythonModule/IsScript":{
35 | "type":"bool",
36 | "value":true
37 | },
38 | "PythonModule/Source":{
39 | "type":"string",
40 | "value":""
41 | },
42 | "ViewerStateModule/CodeGenInput":{
43 | "type":"string",
44 | "value":"{\n\t\"state_name\":\"\",\n\t\"state_label\":\"\",\n\t\"state_descr\":\"\",\n\t\"state_icon\":\"$HH/config/Icons\",\n\t\"state_debug_menu\":0,\n\t\"state_sample\":0,\n\t\"state_handler_indices\":[]\n}\n"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/lifeblood/net_messages/address.py:
--------------------------------------------------------------------------------
1 | import re
2 | from typing import Tuple, Iterable, Union
3 |
4 |
5 | class AddressChain(str):
6 | _validity_re = re.compile(r'^[^|]+(?:\|[^|]+)*$|^$') # empty string is a valid invalid address
7 |
8 | def __new__(cls, source_str):
9 | if not cls._validity_re.match(source_str):
10 | raise ValueError(f'"{source_str}" is not a valid {cls.__name__}')
11 | return str.__new__(cls, source_str)
12 |
13 | def split_address(self) -> Tuple["DirectAddress", ...]: # TODO: move this to special module
14 | parts = self.strip().split('|')
15 |
16 | return tuple(DirectAddress(part) for part in parts)
17 |
18 | @classmethod
19 | def join_address(cls, address: Iterable["AddressChain"]) -> "AddressChain":
20 | # return '|'.join(':'.join(str(x) for x in part) for part in address)
21 | return cls('|'.join(address))
22 |
23 | @classmethod
24 | def from_host_port(cls, host: str, port: int):
25 | return cls(f'{host}:{port}')
26 |
27 |
28 | class DirectAddress(AddressChain):
29 | _validity_re = re.compile(r'^[^|]+$|^$') # empty string is a valid invalid address
30 |
31 |
32 | AddressAny = Union[DirectAddress, AddressChain]
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/graphics_items/pretty_items/drawable_node_with_snap_points.py:
--------------------------------------------------------------------------------
1 | from .drawable_node import DrawableNode
2 | from .node_connection_snap_point import NodeConnSnapPoint
3 | from ..graphics_scene_base import GraphicsSceneBase
4 |
5 | from typing import List
6 |
7 |
8 | class DrawableNodeWithSnapPoints(DrawableNode):
9 | def __init__(self, scene: GraphicsSceneBase, id: int, type: str, name: str):
10 | super().__init__(scene, id, type, name)
11 |
12 | def input_snap_points(self) -> List[NodeConnSnapPoint]:
13 | # TODO: cache snap points, don't recalc them every time
14 | if self.get_nodeui() is None:
15 | return []
16 | inputs = []
17 | for input_name in self.get_nodeui().inputs_names():
18 | inputs.append(NodeConnSnapPoint(self, input_name, True))
19 | return inputs
20 |
21 | def output_snap_points(self) -> List[NodeConnSnapPoint]:
22 | # TODO: cache snap points, don't recalc them every time
23 | if self.get_nodeui() is None:
24 | return []
25 | outputs = []
26 | for output_name in self.get_nodeui().outputs_names():
27 | outputs.append(NodeConnSnapPoint(self, output_name, False))
28 | return outputs
29 |
--------------------------------------------------------------------------------
/src/lifeblood_viewer/widgets/dialogs/message_dialog.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QDialog, QHBoxLayout, QVBoxLayout, QTextEdit, QPushButton
2 | from PySide6.QtCore import QSize
3 |
4 |
5 | class MessageWithSelectableText(QDialog):
6 | """
7 | dialog with a read-only text edit field
8 | good to preview long texts with ability to select-copy parts of it
9 | """
10 | def __init__(self, text, parent=None):
11 | super(MessageWithSelectableText, self).__init__(parent)
12 |
13 | self.__main_layout = QVBoxLayout(self)
14 | self.__btn_layout = QHBoxLayout()
15 |
16 | self.__btn_ok = QPushButton('Ok')
17 | self.__edit_field = QTextEdit()
18 | self.__edit_field.setReadOnly(True)
19 |
20 | self.__btn_layout.addStretch()
21 | self.__btn_layout.addWidget(self.__btn_ok)
22 |
23 | self.__main_layout.addWidget(self.__edit_field)
24 | self.__main_layout.addLayout(self.__btn_layout)
25 |
26 | # connect
27 | self.__btn_ok.pressed.connect(self.accept)
28 |
29 | # postconnec
30 | self.set_text(text)
31 |
32 | def set_text(self, text: str):
33 | self.__edit_field.setText(text)
34 |
35 | def sizeHint(self):
36 | return QSize(800, 600)
37 |
--------------------------------------------------------------------------------
/tests/nodes/test_split_waiter_integration.py:
--------------------------------------------------------------------------------
1 | from lifeblood_testing_common.integration_common import FullIntegrationTestCase
2 |
3 | from typing import Iterable
4 |
5 |
6 | class SplitWaiterIntegrationTest(FullIntegrationTestCase):
7 | __test__ = True
8 |
9 | @classmethod
10 | def _initial_db_file(cls) -> str:
11 | return 'data/test_splitint.db'
12 |
13 | async def _create_test_tasks(self) -> Iterable[int]:
14 | tasks = [
15 | *await self._create_task(node_name='TEST IN', attributes={'froimes': list(range(11, 211))}),
16 | ]
17 | return tasks
18 |
19 | def _expected_task_attributes(self):
20 | return {
21 | 0: {'farmes': list(range(22, 422, 2))},
22 | }
23 |
24 | async def _additional_checks_on_finish(self, task_attributes):
25 | stat = await self.scheduler.data_access.invocations_statistics()
26 | self.assertEqual(50, stat.total)
27 | self.assertEqual(50, stat.finished_good)
28 | self.assertEqual(0, stat.finished_bad)
29 |
30 | def _minimal_idle_to_ensure(self) -> int:
31 | return 2
32 |
33 | def _minimal_total_to_ensure(self) -> int:
34 | return 4
35 |
36 | def _timeout(self) -> float:
37 | return 90.0
38 |
--------------------------------------------------------------------------------
/src/lifeblood/timestamp.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime, timezone
2 |
3 | from typing import Union
4 |
5 | def global_timestamp_int() -> int:
6 | """
7 | tz/location independent global timestamp
8 | with persistent origin point
9 | """
10 | return int(datetime.utcnow().timestamp())
11 |
12 |
13 | def global_timestamp_float() -> float:
14 | """
15 | tz/location independent global timestamp
16 | with persistent origin point
17 | """
18 | return datetime.utcnow().timestamp()
19 |
20 |
21 | def global_timestamp_datetime() -> datetime:
22 | """
23 | tz/location independent global timestamp
24 | with persistent origin point
25 | """
26 | return datetime.utcnow()
27 |
28 |
29 | def global_timestamp_to_local_datetime(timestamp: Union[int, float, datetime]) -> datetime:
30 | """
31 | convert global (utc) timestamp to local time datetime
32 | """
33 | if isinstance(timestamp, (int, float)):
34 | ts = datetime.fromtimestamp(timestamp)
35 | ts = ts.replace(tzinfo=timezone.utc)
36 | elif isinstance(timestamp, datetime):
37 | ts = timestamp.replace(tzinfo=timezone.utc)
38 | else:
39 | raise ValueError(f'wrong timestamp type {type(timestamp)}: {repr(timestamp)}')
40 |
41 | return ts.astimezone()
42 |
--------------------------------------------------------------------------------