{"id":11563711,"url":"https://github.com/Moguri/pman","last_synced_at":"2025-10-03T14:30:56.148Z","repository":{"id":47118075,"uuid":"111368053","full_name":"Moguri/pman","owner":"Moguri","description":"A Python package to help bootstrap and manage Panda3D applications","archived":false,"fork":false,"pushed_at":"2024-10-26T22:26:20.000Z","size":285,"stargazers_count":18,"open_issues_count":8,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-11T21:05:21.624Z","etag":null,"topics":["game-development","gamedev","gamedev-tool","panda3d","panda3d-game-engine"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Moguri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-20T05:57:29.000Z","updated_at":"2024-10-26T22:26:24.000Z","dependencies_parsed_at":"2023-01-22T18:30:27.181Z","dependency_job_id":"41b8a83b-baa2-4884-a89d-7a16422d4913","html_url":"https://github.com/Moguri/pman","commit_stats":{"total_commits":222,"total_committers":3,"mean_commits":74.0,"dds":"0.013513513513513487","last_synced_commit":"ba7820608a6c261219d3391baa873bc6056f0bec"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moguri%2Fpman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moguri%2Fpman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moguri%2Fpman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moguri%2Fpman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Moguri","download_url":"https://codeload.github.com/Moguri/pman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235139097,"owners_count":18942107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["game-development","gamedev","gamedev-tool","panda3d","panda3d-game-engine"],"created_at":"2024-06-23T05:58:49.207Z","updated_at":"2025-10-03T14:30:56.143Z","avatar_url":"https://github.com/Moguri.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":[],"readme":"![Build Status](https://github.com/Moguri/pman/workflows/Pipeline/badge.svg)\n[![](https://img.shields.io/github/license/Moguri/pman.svg)](https://choosealicense.com/licenses/mit/)\n\n\n# Panda3D Manager\npman is a Python package to help bootstrap and manage [Panda3D](https://github.com/panda3d/panda3d) applications.\n\n## Features\n\n* Project quick-start\n* Automatic asset conversion\n* Automatically adds export directory to the model path\n* Convenient CLI for running and testing applications\n* Plugin system for expanding functionality\n\n## Installation\n\nUse `pip` to install the `panda3d-pman` package:\n\n```bash\npip install panda3d-pman\n```\n\n## Usage\n\nQuick start a project with `pman create`.\nIf you already have a directory for your project:\n\n```bash\ncd my_awesome_project\npman create .\n```\n\n`pman` can also create the directory for you:\n\n```bash\npman create my_awesome_project\n```\n\nIn addition to the `create` command, `pman` has the following commands:\n\n* update - re-run project creation logic on the project directory\n* help - display usage information\n* build - convert all files in the assets directory and place them in the export directory\n* run - run the application by calling `python` with the main file\n* test - run tests (shortcut for `python setup.py test`)\n* dist - create distributable forms of Panda3D applications (requires Panda3D 1.10+)\n* clean - remove built files\n\n## Configuration\n\n`pman` will look for any of the following files in the project root:\n* pyproject.toml\n* .pman\n* .pman.user\n\nThis configuration uses [TOML](https://github.com/toml-lang/toml) for markup.\nThe `.pman` or `pyproject.toml` configuration file is project-wide and should be checked in under version control.\n\nAnother, per-user configuration file also exists at the project root as `.pman.user`.\nThis configuration file stores user settings and should *not* be checked into version control. \n\nSettings in `.pman.user` take precedence over settings in `.pman` and both take precedence over `pyproject.toml`.\nIf a setting is not defined in a config file, a default value will be used.\n\nWhen storing settings in `pyproject.toml`, section names should be pre-pended with `tool.pman.`.\nFor example, `general` options would be under `tool.pman.general`.\n\n### General Options\nSection name: `general`\n\n|option|default|description|\n|---|---|---|\n|name|`\"Game\"`|The project name. For now this is only used for naming the built application in the default `setup.py`.|\n|plugins|`[\"DefaultPlugins\"]`|A list of plugins to load and use. `\"DefaultPlugins\"` is expanded to the current default plugins, which makes it easier to enable additional plugins.|\n\n### Build Options\nSection name: `build`\n\n|option|default|description|\n|---|---|---|\n|asset_dir|`\"assets/\"`|The directory to look for assets to convert.|\n|export_dir|`\".built_assets/\"`|The directory to store built assets.|\n|ignore_patterns|`[]`|A case-insensitive list of patterns. Files matching any of these patterns will not be ignored during the build step. Pattern matching is done using [the fnmatch module](https://docs.python.org/3/library/fnmatch.html)\n\n### Run Options\nSection name: `run`\n\n|option|default|description|\n|---|---|---|\n|main_file|`\"main.py\"`|The entry-point to the application.|\n|extra_args|`\"\"`|A string of extra arugments that are append to the invocation of `main_file`.|\n|auto_build|`true`|If `true`, automatically run builds as part of running the application (via `pman.shim.init`). This is disabled in deployed applications.|\n\n### Distribution Options\nSection name: `dist`\n\n|option|default|description|\n|---|---|---|\n|build_installers|`true`|Whether or not to build installers for built applications (i.e., run `bdist_apps`).|\n\n## Plugins\n\nTo extend functionality, pman offers a plugin system.\nThese plugins are found by pman using [entry points](https://packaging.python.org/specifications/entry-points/).\n\n### Default Plugins\n\nBy default, pman loads the following plugins:\n\n* native2bam\n* blend2bam\n\nWhen specifying plugins, a special `DefaultPlugins` string is available that expands to pman's current default plugins.\nFor example, to use `MyAwesomePlugin` in addition to pman's default plugins use:\n\n```toml\n[General]\nplugins = ['DefaultPlugins', 'MyAwesomePlugin']\n```\n\n### Built-in Plugins\n\nBelow are plugins that ship with pman and their options.\n\n#### native2bam\nSupport file formats: `egg`, `egg.pz`, `obj` (and `mtl`), `fbx`, `dae`, `ply`\n\nLoads the file into Panda and saves the result out to BAM. This relies on Panda's builtin file loading capabilities.\n\n##### Options\nNone\n\n#### blend2bam\nSupported file formats: `blend`\n\nConverts Blender files to BAM files via [blend2bam](https://github.com/Moguri/blend2bam).\n\n##### Options\nSection name: `blend2bam`\n\n|option|default|description|\n|---|---|---|\n|material_mode|`\"pbr\"`|Specify whether to use the default Panda materials (\"legacy\") or Panda's new PBR material attributes (\"pbr\"). This is only used by the \"gltf\" pipeline; the \"egg\" always uses \"legacy\".|\n|physics_engine|`\"builtin\"`|The physics engine that collision solids should be built for. To export for Panda's builtin collision system, use \"builtin.\" For Bullet, use \"bullet.\" This is only used by the \"gltf\" pipeline; the \"egg\" pipeline always uses \"builtin.\"|\n|pipeline|`\"gltf\"`|The backend that blend2bam uses to convert blend files. Go [here](https://github.com/Moguri/blend2bam#pipelines) for more information.|\n\n## Development\n\nDevelopment relies on [uv](https://docs.astral.sh/uv/).\n\n### Running Tests\n\nLint checks:\n```bash\nuv run ruff check\n```\n\nUnit tests:\n```bash\nuv run pytest\n```\n\n### Building Wheels\n\n```bash\nuv build\n```\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMoguri%2Fpman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMoguri%2Fpman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMoguri%2Fpman/lists"}