PyDMXControl icon indicating copy to clipboard operation
PyDMXControl copied to clipboard

Consider allowing outside module names for light definitions

Open crscheid opened this issue 11 months ago • 1 comments

At present, its difficult to add light definitions without contributing directly to the project since the validate_item function assumes the PyDMXControl.profiles.<XXX> module name being present. Perhaps the code could be modified si that if the module is not found you search the broader namespace for the module before failing.

I plan to hopefully contribute to this projects codebase on a few fronts after I get done with my own testing. 😄

In the meantime, I found a work around. If one defines a light in a file called MyLight with a class of MyAwesomeLight, they can add this to their executing class:

test.py

import sys
from PyDMXControl.controllers import OpenDMXController

import MyLight
sys.modules['PyDMXControl.profiles.MyLight'] = MyLight

dmx.json.load_config('light_config.json')

light_config.json

[
    {
        "type": "MyLight.MyAwesomeLight",
        "args": [],
        "name": "Light 1",
        "start_channel": 1
    },
    {
        "type": "MyLight.MyAwesomeLight",
        "args": [],
        "name": "Light 2",
        "start_channel": 8
    }
]

crscheid avatar Jul 26 '23 02:07 crscheid

Ah yes, that is a very good point, I hadn't really put in any consideration at all for custom fixtures when I wrote the JSON logic. Open to either scanning the wider namespace if the profile isn't found within the library, or open to allowing a way for profiles to be passed in as a second argument with the JSON load, so that we look at in-library plus the ones passed in, rather than scanning the whole wider namespace.

MattIPv4 avatar Jul 26 '23 02:07 MattIPv4