Hmm... Du bist ja nun schon länger hier im Forum aktiv, da frage ich mich bei dem Code leider, wie wenig bei Dir augenscheinlich hängen geblieben ist.
Grundsätzlich scheinst Du Dir ja schon Mühe gegeben zu haben, aber alleine die Namen zeigen, dass Du PEP8 immer noch nicht verinnerlicht hast. Daran solltest Du *dringend* arbeiten; speziell wenn Du nach Mitstreitern suchst, wie auf Github beschrieben.
Zufällig stach mir das hier ins Auge:
Code: Alles auswählen
class ClassRegister(Enum):
"""This registered all classes"""
#...
def hasInstanz(self, name):
try:
self[name]
return True
except KeyError:
return False
Das ist doch furchtbar umständlich! Für das Prüfen, ob ein Schlüssel in einem Dictionary enthalten ist kann man den ``in`` Operator benutzen:
Code: Alles auswählen
class Foo:
def has_key(self, key):
return key in self.__dict__
f = Foo()
f.has_key("foo")
False
f.__dict__["foo"] = 42
f.has_key("foo")
True
Dazu kommt auch hier der Name... klassisches Denglisch! ``hasInstanz``... wenn schon ``hatInstanz`` oder ``hasInstance``. Dazu ist die Formatierung eher Javaesque; in Python gilt bei Funktionen und Methoden lower_case_with_underscore, in diesem Falle also ``has_instance``.
Das sind zwar Kleinigkeiten, aber ich denke das zieht sich durch das gesamte Projekt. Daran solltest Du wirklich arbeiten.
Dein selbst gebauter ORM ist auch eher... naja - von Transaktionen sehe ich da z.B. nichts. Ebenfall ist mir unklar wo sich das "API-System für SQL-Server Anbindung" befindet. Ich sehe da nur Code für SQLite.
Wenn Du schon viel abstrahieren willst und wohl Wert auf den Support verschiedener DBMS legst, würde ich Dir einfach SQLAlchemy ans Herz legen, ehrlich! Das spart am Ende Arbeit, auch wenn Du Dich zunächst darin einarbeiten musst.
Das hier riecht auch eher nach Java:
In Python ist es eigentlich Konvention, in einer zu überschreibenden Methode eine Exception auszulösen:
Code: Alles auswählen
def createTable(self):
raise NotImplementedError("Please implement 'createTable'")
Mir fehlt irgend wie auch ein Domain-Layer. Evtl. könnte man den Datenbank-Teil als solchen ansehen, aber so eine enge Kopplung an die Persistenzschicht ist imho eher unschön, wenn man (später?) Domänenlogik implementiert.
Generell würde auch erwarten, dass *mehr* und *genauere* Infos auf der Projektseite verfügbar sind, die das Projekt beschreiben. Unter einem Bug-Tracker kann man sich sicherlich etwas vorstellen, aber ein paar Features sollte man schon erwähnen. Evtl. auch, was Deine Software von Bugzilla, Track, Mantis usw. abhebt. Last but not least helfen Screenshots durchaus das Interesse bei einem potenziellen Nutzer oder gar Mitstreiter zu wecken.
Außerdem musst Du an der Dokumentation arbeiten; es muss ja nicht nur reine API Doku sein, aber aktuell ist da im Grunde genommen nichts, was mir zeigt, wie ich Code oder auch das Programm verwenden soll.
Bevor ich einen solchen Schnellschuss ("Ich habe das Programm in 3 Tagen zusammengeschrieben, ...") veröffentliche (oder publik mache), würde ich doch an diesen Punkten arbeiten
