pydoc - no Python documentation found

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
KoenigGunther
User
Beiträge: 22
Registriert: Donnerstag 19. April 2007, 10:05

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... :(
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
KoenigGunther
User
Beiträge: 22
Registriert: Donnerstag 19. April 2007, 10:05

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?!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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.
Antworten