Seite 1 von 1
pydoc - no Python documentation found
Verfasst: Donnerstag 2. August 2007, 09:12
von KoenigGunther
Hi!
Ich würde mir gerne mit Pydoc eine HTML Datei meines Quellcodes erstellen lassen, also von den Kommentaren.
Die Datei sieht in etwa so aus:
Code: Alles auswählen
import sys, os, threading, signal, re
import logging
from os.path import dirname, join
class Test:
"""
Beschreibung
"""
#-------- Methods for modifying incomming source code ------------------------
def removeStaticDeclarations(self,source):
"""
Removes all "static" declarations by sorrounding it by comments.
@param source: Java source code.
@return: source without static methods.
"""
return re.sub('[^a-z,A-Z,0-9]\s?static\s+',' /*static*/ ',source);
[...]
Prinzipiell sind doch alle Kommentare richtig gesetzt, oder?
Pydoc sagt aber immer dass keine Dokumentationen auffindbar sind...

Re: pydoc - no Python documentation found
Verfasst: Donnerstag 2. August 2007, 09:59
von gerold
KoenigGunther hat geschrieben:Ich würde mir gerne mit Pydoc eine HTML Datei meines Quellcodes erstellen lassen, also von den Kommentaren.
Hallo KoenigGunther!
Ich habe keine Ahnung von Pydoc. Ich verwende dafür immer EpyDoc:
http://epydoc.sourceforge.net/ Das schluckt dein Beispiel sicher.
mfg
Gerold

Verfasst: Donnerstag 2. August 2007, 10:34
von KoenigGunther
Ich habe ein größeres Projekt in einem Ordner und möchte dieses mit allen Unterordnern dokumentieren.
Da müsste es doch mit epydoc (oder auch mit pydoc) funktionieren!
Mein Aufruf:
epydoc --html OrdnerMitDenDaten/
funktioniert nicht richtig.
Er schafft es nur die index.html mit OrdnerMitDenDaten als Package zu erstellen, weiter kommt er nicht.
Er hat Probleme die Module zu finden, aber warum?!
Verfasst: Donnerstag 2. August 2007, 10:52
von gerold
KoenigGunther hat geschrieben:Ich habe ein größeres Projekt in einem Ordner und möchte dieses mit allen Unterordnern dokumentieren.
Da müsste es doch mit epydoc (oder auch mit pydoc) funktionieren!
Hallo KoenigGunther!
Ich habe dafür ein eigenes Skript (create_epydoc.py):
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
Erstellt die EpyDoc-Dokumentation mit Epydoc 2.0alpha3
Epydoc muss dazu im Pfad enthalten sein.
Created: 2006-07-12 by Gerold
"""
import os
import re
from glob import glob
# Konstanten
PROJECTNAME = "Bodygraph"
PROJECTDIR = r"P:\dev\bodygraph"
EPYDOCDIR = r"P:\dev\bodygraph\help\epydoc"
os.chdir(PROJECTDIR)
pythonfilenames = " ".join('"%s"' % filename for filename in glob(PROJECTDIR + "/*.py"))
pythonfilenames += " ".join('"%s"' % filename for filename in glob(PROJECTDIR + "/*.pyw"))
# Kommando für EpyDoc zusammenstellen
cmd = (
r'epydoc.py --docformat "restructuredtext de" --show-source '
r'--html --parse-only --output "%(EPYDOCDIR)s" --name "%(PROJECTNAME)s" '
r'%(pythonfilenames)s'
) % locals()
print cmd
print
# EpyDoc Ausführen
os.system(cmd)
print "...EpyDoc generiert"
# Uhrzeit aus den HTML-Dateien entfernen (by Viktor)
os.chdir(EPYDOCDIR)
for filename in os.listdir(EPYDOCDIR):
filename = os.path.abspath(filename)
if filename.lower().endswith('.html'):
# Auslesen
actual_file = file(filename, 'r')
inhalt = actual_file.read()
actual_file.close()
# Ersetzen
regexp_comp = re.compile(
r'<td align="left" class="footer">.*?\d{2}:\d{2}:\d{2}.*</td>',
re.I | re.S | re.M
)
# Kompletten Fußbereich erruieren
suche = regexp_comp.search(inhalt)
if suche:
bereich = suche.span()
# Zu wechselnden Bereich zw. speichern
for_change = inhalt[bereich[0]:bereich[1]]
#Bereich verändern:
regexp_comp = re.compile(r'\d{2}:\d{2}:\d{2} ', re.I | re.S | re.M)
new_inhalt = regexp_comp.sub('', for_change)
# Neu schreiben
new_file = file(filename, 'w')
new_file.write(
inhalt[:bereich[0]] + new_inhalt + inhalt[bereich[1]:]
)
new_file.close()
print "...Uhrzeiten aus dem HTML-Code entfernt"
Achtung! Ich verwende reStructuredText für die Docstrings. Wenn du etwas anderes verwendest, dann musst du den Aufruf von EpyDoc ändern.
mfg
Gerold

Verfasst: Donnerstag 2. August 2007, 11:13
von BlackJack
@KoenigGunther: Gute Frage, und in beiden Fällen fehlt eine ordentliche Fehlerbeschreibung. Wie wird `pydoc` aufgerufen und wie sieht die Ausgabe genau aus? Gleiches gilt für `epydoc`.
Ach so: Du solltest dafür sorgen, dass Deine Module importiert werden können und dann nicht einfach so als Programme laufen.