Hoihoi
Ik ben bezig met een projectje waarbij ik dynamisch een aantal patches wil laden en deze uitvoeren tegen een database aan.
Dit gebeurt in python.
Hiervoor heb ik een applicatietje geschreven met een aantal basale functies (list installed patches, show updateable patches, install patch X, remove patch Y etc). In feite is dit een heel rudimentaire package-manager, maar dan voor een database.
De patches worden aangeleverd door mij en mijn collega in de vorm van een Python module met daarin een class.
De class erft over van een base class PatchBase die een aantal methodes zoals remove() install() etc definieert. Ook wordt er in de class zelf de naam van de patch opgeslagen en een versie van de patch. Deze versie is handig; als je een oude database hebt moet je eerst de oudste versie van de patch installeren, daarna de een-na-oudste etc tot je bij de nieuwste bent.
Dependencies tussen patches zou handig zijn maar heb ik (nog) niet geimplementeerd, omdat hier de noodzaak niet toe bestaat.
Wat me nu stoort is dat bij het uitbrengen van een nieuwe patch, deze handmatig in de file met de main functie moet worden geladen middels een een import, en daarna wordt een instance van die class in een list gezet.
Op zich werkt het prima, maar het is lelijk en foutgevoelig.
Nu weet ik dat een aantal talen het dynamisch laden van classes ondersteunt, echter vind ik niet hoe dit in python kan.
Als ik de module laat kan ik met reflectie wel uitzoeken welke classes ik aantref en die instantieren... dus dat is het probleem niet.
Wat ik echter vind is:
http://technogeek.org/python-module.html
Hier wordt gesproken over hoe je modules kunt laden als je de naam al weet. Nu kan ik wel een ls patches/* doen en die dan een voor een gaan laden, maar dat vind ik ook niet echt mooi. De overige dingen die ik vind over dynamische classes gaat over CLI gebruik, en nog wat dingen waar ik niet direct iets mee kan.
Heeft iemand hier een goede tip voor me?
Een standaard tooltje voor dit doel is hardstikke leuk maar ik lijd vandaag aan het not-invented-by-me syndroom
.
Ik ben bezig met een projectje waarbij ik dynamisch een aantal patches wil laden en deze uitvoeren tegen een database aan.
Dit gebeurt in python.
Hiervoor heb ik een applicatietje geschreven met een aantal basale functies (list installed patches, show updateable patches, install patch X, remove patch Y etc). In feite is dit een heel rudimentaire package-manager, maar dan voor een database.
De patches worden aangeleverd door mij en mijn collega in de vorm van een Python module met daarin een class.
De class erft over van een base class PatchBase die een aantal methodes zoals remove() install() etc definieert. Ook wordt er in de class zelf de naam van de patch opgeslagen en een versie van de patch. Deze versie is handig; als je een oude database hebt moet je eerst de oudste versie van de patch installeren, daarna de een-na-oudste etc tot je bij de nieuwste bent.
Dependencies tussen patches zou handig zijn maar heb ik (nog) niet geimplementeerd, omdat hier de noodzaak niet toe bestaat.
Wat me nu stoort is dat bij het uitbrengen van een nieuwe patch, deze handmatig in de file met de main functie moet worden geladen middels een een import, en daarna wordt een instance van die class in een list gezet.
Op zich werkt het prima, maar het is lelijk en foutgevoelig.
Nu weet ik dat een aantal talen het dynamisch laden van classes ondersteunt, echter vind ik niet hoe dit in python kan.
Als ik de module laat kan ik met reflectie wel uitzoeken welke classes ik aantref en die instantieren... dus dat is het probleem niet.
Wat ik echter vind is:
http://technogeek.org/python-module.html
Hier wordt gesproken over hoe je modules kunt laden als je de naam al weet. Nu kan ik wel een ls patches/* doen en die dan een voor een gaan laden, maar dat vind ik ook niet echt mooi. De overige dingen die ik vind over dynamische classes gaat over CLI gebruik, en nog wat dingen waar ik niet direct iets mee kan.
Heeft iemand hier een goede tip voor me?
Een standaard tooltje voor dit doel is hardstikke leuk maar ik lijd vandaag aan het not-invented-by-me syndroom