Seite 2 von 2
Verfasst: Donnerstag 24. September 2009, 09:48
von Trundle
@lunar: Danke, gefixt.
Verfasst: Donnerstag 24. September 2009, 11:54
von cofi
apollo13 hat geschrieben:lunar hat geschrieben:@mkallas: Ist das wirklich die Standardeinstellung ist? Meine KDE 4-Konsole ist jedenfalls weiß auf schwarz, ohne das ich mich erinnern könnte, die Konfiguration verändert zu haben.
Ist iirc seit KDE4 so.
Kann ich nicht bestaetigen, hatte das auch schon in KDE 3.5 als Standard.
Verfasst: Dienstag 17. November 2009, 15:47
von vicbrother
Gibt es in bpython auch die Möglichkeit, die/den letzte/n Funktion/Codeblock zu laden und zu editieren wie in ipython?
Verfasst: Samstag 21. November 2009, 21:06
von Trundle
Nein, Codeblöcke editieren kann bpython leider (noch) nicht. Wobei ich das in ipython auch nie so überzeugend fand.
Verfasst: Sonntag 22. November 2009, 12:05
von snafu
Code: Alles auswählen
>>> import sys
>>> sys.stdout.fileno()
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'Repl' object has no attribute 'fileno'
Ist vermutlich kein gewolltes Verhalten, oder?
Was ich noch heraus gefunden habe:
Sobald ich die öffnende Klammer setze, beendet sich BPython und es erfolgt ein
langer Traceback.
Vergleich:
Code: Alles auswählen
Python 2.6.4 (r264:75706, Nov 2 2009, 14:38:03)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll
>>> cdll.foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/ctypes/__init__.py", line 423, in __getattr__
dll = self._dlltype(name)
File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: foo: cannot open shared object file: No such file or directory
...und kein Absturz. Das hier offenbar etwas mit dem `ctypes`-Modul nicht stimmt (oder ich etwas nicht verstanden habe *hihi*), will ich mal außen vor lassen.
Hat BPython eigentlich ein Pendant zu IPythons `<Name>?` bzw. `<Name>??` ?
Diese beiden Features sind mir schon sehr wichtig.
Verfasst: Montag 23. November 2009, 07:31
von vicbrother
Trundle hat geschrieben:Nein, Codeblöcke editieren kann bpython leider (noch) nicht. Wobei ich das in ipython auch nie so überzeugend fand.
Ich sprach mit dem Hauptentwickler per IRC - bei ihm steht das auf der TODO. Er meint das wäre allerdings recht umfangreich einzufügen. Warten wir es ab.
Verfasst: Dienstag 24. November 2009, 23:06
von birkenfeld
snafu hat geschrieben:Code: Alles auswählen
>>> import sys
>>> sys.stdout.fileno()
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'Repl' object has no attribute 'fileno'
Ist vermutlich kein gewolltes Verhalten, oder?
Naja, was würdest du erwarten? Ein stdout-Wrapper muss halt nun mal nicht das volle file-Interface unterstützen.
Verfasst: Dienstag 24. November 2009, 23:10
von Trundle
@snafu: Das ist in der Tat eher weniger das beabsichtigte Resultat. Dadurch, dass es eine curses-Anwendung ist, muss `sys.stdout` eben komplett gewrappt werden und bis jetzt hat sich noch niemand beschwert, dass es `fileno()` nicht gibt.
Den Fehler mit ctypes werde ich mir bei Gelegenheit mal zu Gemüte führen. Prinzipiell empfiehlt es sich, Bugs in den
Issue-Tracker einzupflegen, so dass sie nicht verloren gehen.
@vicbrother: Ich bin mir nicht sicher, ob du da Bob richtig verstanden hast. Wir sind uns natürlich dessen bewusst, dass man gerade keine Blöcke editieren kann und haben auch nichts dagegen, wenn bpython das könnte. Das heißt aber leider nicht, dass bpython das in absehbarer Zeit auch können wird.
Edit: Es steht natürlich jedem frei, das für bpython zu implementieren und einen Patch beizusteuern.
Verfasst: Mittwoch 25. November 2009, 00:22
von Trundle
snafu hat geschrieben:Hat BPython eigentlich ein Pendant zu IPythons `<Name>?` bzw. `<Name>??` ?
Den Quelltext bekommt man mit F2, für den Docstring gibt es (IIRC) noch keinen Shortcut. Aber bei Aufrufen wird der ja auch zusammen mit der Signatur angezeigt.
Verfasst: Mittwoch 25. November 2009, 05:34
von snafu
birkenfeld hat geschrieben:snafu hat geschrieben:Code: Alles auswählen
>>> import sys
>>> sys.stdout.fileno()
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'Repl' object has no attribute 'fileno'
Ist vermutlich kein gewolltes Verhalten, oder?
Naja, was würdest du erwarten? Ein stdout-Wrapper muss halt nun mal nicht das volle file-Interface unterstützen.
Ich würde von einer Python-Shell erwarten, dass es mich als Benutzer nicht interessieren muss, wie `sys.stdout` zu Stande kommt, sondern dass es einfach wie gewohnt funktioniert.
Verfasst: Mittwoch 25. November 2009, 17:21
von Trundle
So einfach ist das aber halt mal nicht. Das geht nicht zu ignorieren. Es sind einfach keine realen Dateiobjekte. Beispielsweise wird ``os.write(1, 'Yay')`` nicht auf dem Bildschirm landen. Was also sollte `fileno()` zurückgeben? Die Dokumentation von Python drückt sich hier auch klar aus. Über `sys.stdout` und `sys.stderr`: "stdout and stderr needn’t be built-in file objects: any object is acceptable as long as it has a write() method that takes a string argument" sowie über `file.fileno()`: "Note: File-like objects which do not have a real file descriptor should not provide this method!"
Verfasst: Mittwoch 25. November 2009, 17:39
von jerch
@snafu:
Gehts Dir darum, auf die Terminaleigenschaften zu zugreifen oder wofür brauchst Du fileno()? Problem dabei ist, das 0,1,2 als stdin,stdout und stderr festlegt sind (Posixstandard, wenn mich nicht alles täuscht) und da aber schon bpython dranklebt. Evtl. ginge es, die Ein-/Ausgabe über ein Pseudoterminal vorzunehmen (also nicht 0,1,2), um an die Eigenschaften zu kommen, dazu müsste aber alles von bpython umgeleitet werden (kA, wie das jetzt gelöst ist). Ob es den Aufwand wert ist, ist eine ganz andere Frage, zumindest löst keine der grossen IDEs das zufriedenstellend, so dass man hier definitiv nicht von "gewohnt" reden kann.
Verfasst: Mittwoch 25. November 2009, 18:25
von snafu
jerch hat geschrieben:Gehts Dir darum, auf die Terminaleigenschaften zu zugreifen oder wofür brauchst Du fileno()?
Naja, ich nutze ja die Kombination `os.ctermid()` + `os.open()`, um den Dateideskriptor zu erhalten, den ich zur Ermittlung der Zeilengröße brauche. Ich hatte in BPython nur mal die Variante mit der `fileno()`-Methode eines Ausgabekanals ausprobiert und festgestellt, dass das dort nicht funktioniert.
Keine Ahnung, wie IPython das intern löst, aber dort scheint es ein Dateiobjekt zu sein:
Code: Alles auswählen
In [4]: sys.stdout.fileno()
Out[4]: 1
In [5]: sys.stdout
Out[5]: <open file '<stdout>', mode 'w' at 0xb78aa070>
Ist ja nicht zwingend ein Must-Have, wenn die Meinungen darüber anders sind. Mir ist es halt aufgefallen.
Verfasst: Mittwoch 25. November 2009, 18:26
von vicbrother
@Trundle: Gibt es eine Roadmap zu bpython?
Verfasst: Mittwoch 25. November 2009, 23:19
von Trundle
@snafu: ipython ist keine curses-Anwendung.
@vicbrother: Nope.
Verfasst: Donnerstag 26. November 2009, 08:40
von vicbrother
Trundle hat geschrieben:
@vicbrother: Nope.
Nichtmal eine TODO-Liste?
Verfasst: Sonntag 29. November 2009, 10:59
von Trundle
Es gibt wie bereits angemerkt den
Issue-Tracker.
Verfasst: Dienstag 29. Dezember 2009, 17:09
von Trundle
Eine Vorschau auf 0.9.6. So wies ausschaut, wird es wohl ein Happy-New-Year-Release.

Happy-New-Year-Release
Verfasst: Donnerstag 31. Dezember 2009, 19:06
von Trundle
Und mittlerweile gibt es auch Version 0.9.6.2. Zahlreiche Bugs wurden gefixt und es wurde backward completion (mit Shift+Tab kann man in umgekehrter Reihenfolge durch Vervollständigungsvorschläge wandern) sowie auto dedentation hinzugefügt.
Desweiteren gibt es jetzt auch ein Gtk+-Frontend, das zwar noch nicht über alle Features vom curses-Frontend verfügt, dafür aber durch das XEmbed-Protokoll leicht in andere grafische Anwendungen einbindbar sein sollte.
Einen guten Rutsch und ein frohes neues Jahr,
Andreas