{"id":30590559,"url":"https://github.com/0djentd/libemtk","last_synced_at":"2026-04-16T00:31:30.809Z","repository":{"id":39903844,"uuid":"494909252","full_name":"0djentd/libemtk","owner":"0djentd","description":"Extended Modifiers Tool Kit (library)","archived":false,"fork":false,"pushed_at":"2022-07-10T08:01:27.000Z","size":143,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-28T19:39:15.299Z","etag":null,"topics":["3d","blender","blender-3d","blender-python","blender-scripts","blender3d","library","modelling","python","python-module","python-script","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0djentd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-21T22:37:04.000Z","updated_at":"2022-06-19T02:17:40.000Z","dependencies_parsed_at":"2022-07-14T13:20:34.269Z","dependency_job_id":null,"html_url":"https://github.com/0djentd/libemtk","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/0djentd/libemtk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0djentd%2Flibemtk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0djentd%2Flibemtk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0djentd%2Flibemtk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0djentd%2Flibemtk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0djentd","download_url":"https://codeload.github.com/0djentd/libemtk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0djentd%2Flibemtk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31866231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","blender","blender-3d","blender-python","blender-scripts","blender3d","library","modelling","python","python-module","python-script","python3"],"created_at":"2025-08-29T16:40:42.092Z","updated_at":"2026-04-16T00:31:30.792Z","avatar_url":"https://github.com/0djentd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![PyPI](https://img.shields.io/pypi/v/libemtk)\n![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/0djentd/libemtk?include_prereleases)\n[![Python package](https://github.com/0djentd/libemtk/actions/workflows/python-package.yml/badge.svg)](https://github.com/0djentd/libemtk/actions/workflows/python-package.yml)\n![GitHub Repo stars](https://img.shields.io/github/stars/0djentd/libemtk?style=social)\n\nlibEMTK, Extended Modifiers Tool Kit (library).\n=======================================\n\nThis thing provides new level of abstraction for _Blender_ modifiers stack.\n\nLibrary name is not final and probably will be changed on release.\n\n_libemtk_ is designed to be used with [_EMTK_](https://github.com/0djentd/emtk).\n\nMost classes and methods have docstrings.\n\nThere are some simple unittests for basic operations.\n\n# Installation\nLinux:\nSymlink `~/.config/blender/3.1/scripts/modules/libemtk` to `libemtk`\n\nWindows:\nidk\n\nMac:\nidk\n\n# Main concepts\n_Actual_ _modifier_ is an actual Blender modifier.\n\n_Modifier_ is a cluster or actual Blender modifier.\n\n_Cluster_ is an object that consists of any number\nof modifiers or clusters.\nAny subclass of _ClusterTrait_ is a _Cluster_. \n\n_ModifiersCluster_ is a cluster that only has\nactual Blender modifiers in it.\n\n_ClustersLayer_ is a cluster that only has\nother clusters in it. This doesnt mean\nthat it cant contain ModifiersClusters\nwith actual modifiers.\n\n_ExtendedModifiersList_ is an object representing\nclusters stack. It is similar to ClustersLayer,\nbut doesnt have ClusterTrait attributes.\nIt require all modifiers in it to be on the same Blender object.\n\n_SortingRule_ is an object that represents set of\nrules that can be used to sort clusters in ExtendedModifiersList.\n\n_ModifiersOperator_ is a mix-in class for Operator class.\nIt has methods for manipulating multiple\nExtendedModifiersList instances.\n\n_ClustersCommand_ is implementation of command pattern for\nsome of frequently used operations.\n\nIt consists of _ClustersAction_, basic elements that have minimal information\nabout side effects of command.\nExamble:\nClustersAction('MOVE', 'Bevel.123', {'direction': 'UP'})\nThis action does not included information about position of 'Bevel.123' and\nother detail required to interpret action as a part of command.\n\nClusterCommands use _ClustersCommandsSolver_ to ask clusters for additional commands.\nExample:\n(using previous example)\nClustersLayer will add ClustersAction('MOVE', 'Bevel.321', {'direction': 'DOWN'}),\nif 'Bevel.321' will change its index after moving 'Bevel.123'.\nThen ClustersCommandsSolver will ask 'Bevel.321' if it should do something else\nafter moving it.\n\n# Currently supported features # \nAll basic editing, like moving, applying, removing,\nduplication and switching visibility of clusters.\n\nSerialization and deserialization of clusters state.\nFull or partial resoring of clusters state.\n\nSerialization and deserialization of clusters types definitions.\n\nClusters Commands and Actions.\n\n# TODO # \nBuffering for ExtendedModifiersList controller.\n\nPanel type subclass for panels that use\nExtendedModifiersList.\n\nOperators for ExtendedModifiersList controller.\n\nMore clusters operation types.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0djentd%2Flibemtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0djentd%2Flibemtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0djentd%2Flibemtk/lists"}