Okay, I'll probably take a look tonight and see if I can spot any problems - just let me know when you think it's ready to go upstream and we'll sort it out.
On Thu, May 14, 2009 at 03:13:12PM -0700, Pavel Panchekha wrote: > > Committed changes to my bpython fork. Likely, these changes can be > committed to upstream, but its probably better to test them. I suspect > that it may be best not to include oranj support for the main bpython, > but instead do the following: > > Move the python.py file to a languages package within the bpython > folder > Add a command line switch -l which takes an argument, a language name, > and imports languages.xxx as language. Then, one could install > additional languages by dumping their files into that directory. > > This would fix several problems associated with the current oranj > support (it requires oranj itself, which is currently hard to install) > and also means not distributing other modules such as OranjLexer. > > I'll spend a bit more time looking for changes to make (I think that > there are a few more things to language-agnostify), and then hopefully > prepare a nice patch / ask for commit privilages. > > On May 13, 8:18 pm, Bob Farrell <[email protected]> > wrote: > > So, after a long time trying to get everything running (largely due to being > > distracted on IRC, granted), I managed to track down and fix the problems. > > > > Before I start, I'd like to say I'm really impressed with the work you've > > done > > - I nearly had a shit fit when I saw you'd gutted all of the attribute > > lookup > > stuff and wondered why on earth you were surprised it was not working, and > > then > > noticed the "python" module and dependency injection stuff you're doing. So, > > good work ! > > > > Now, here's why you weren't finding the problem: > > try: > > self.completer.complete(cw, 0) > > except Exception: > > # This sucks, but it's either that or list all the exceptions that could > > # possibly be raised here, so if anyone wants to do that, feel free to send > > me > > # a patch. XXX: Make sure you raise here if you're debugging the completion > > # stuff ! > > > > Unfortunately, given that all kinds of exceptions can occur during > > completion > > stuff (since we're letting the user execute code inside our program), a long > > time ago I resigned to just catching "Exception" and dealing with it - > > TypeError, ValueError, blah blah blah, can all be raised. So, unless you do > > a > > "raise" in that except block, anything that goes wrong in the completion > > stuff > > will be ignored and you won't see any legitimate bugs in the code. > > > > In this case, firstly the "types" module hadn't been imported in python.py, > > secondly "matches" doesn't get defined here if attr_lookup fails (this is > > technically a bug in my code): > > try: > > matches = attr_lookup(obj, expr, attr) > > finally: > > # Dark magic: > > if __getattribute__ is not None: > > setattr(type_, '__getattribute__', __getattribute__) > > if __getattr__ is not None: > > setattr(type_, '__getattr__', __getattr__) > > # /Dark magic > > return matches > > > > so that raises a NameError, and thridly, "expr" and "attr" weren't being > > passed > > in to get_obj_attrs, so they were undefined too. attr_matches now passes > > them > > in: > > > > def attr_matches(self, text): > > """Taken from rlcompleter.py and bent to my will.""" > > > > m = re.match(r"(\w+(\.\w+)*)\.(\w*)", text) > > if not m: > > return [] > > > > expr, attr = m.group(1, 3) > > obj = eval(expr, self.interp.locals) > > > > s = language.get_obj_attrs(obj, expr, attr) > > return s > > > > (Previously just did "language.get_obj_attrs(obj)"). > > > > Okay ! So, I've attached a patch; everything seems to work fine now; > > hopefully > > you'll be able to use what I've done to get it working with oranj - just > > make > > sure to raise that exception I mentioned ! > > > > Oh, and that "foo(" stuff in the completion list is pretty cool; looking > > forward to pulling that upstream. > > > > As far as I can tell everything's ready to go as-is as far as pulling > > changes > > upstream goes. Once we've got that done I'm happy to give you commit privs > > to > > the main bpython repo so you can push your changes there directly - you've > > done > > a great job on the language-agnostic front. Can you think of anything that's > > preventing me pulling upstream now ? I'll let you get back to me before I do > > anything. > > > > On Wed, May 13, 2009 at 12:01:12PM -0700, Pavel Panchekha wrote: > > > > > Committed new revision to oranj. Try to redownload it and modify the > > > file src/objects/about.py to the installation path (or just read the > > > INSTALL file). > > > > > I'll get a build script up and running for that at some point. > > > > > On May 13, 5:19 pm, Bob Farrell <[email protected]> > > > wrote: > > > > Been fighting for a while now to get this working but there are a some > > > > missing > > > > dependencies. > > > > > > I'm guessing this: > > > > http://code.activestate.com/recipes/475116/ > > > > is the "terminal" module. > > > > > > No idea what the "files" module is, but it's looking for that too, and > > > > I really > > > > need to get out of the office now. I might take a look at this later but > > > > ideally if you could get this working in a --no-site-packages > > > > virtualenv and > > > > list any dependencies on the bitbucket.org wiki (or include any extra > > > > deps in > > > > the distribution) that'd be great. > > > > > > Nice work, though - good to see you're taking the right approach with > > > > keeping > > > > bpython agnostic. Once we figure out what's up with the attribute > > > > lookup issue > > > > (which I can probably diagnose by just using bpython without the > > > > --oranj flag) > > > > I'll do some testing and then I see no problem pulling your changes > > > > upstream. > > > > > > On Wed, May 13, 2009 at 08:20:32AM -0700, Pavel Panchekha wrote: > > > > > > >http://bitbucket.org/pavpanchekha/bpython-oranj/ > > > > > > > Python is now a bit broken (no attr matching), oranj just as good (use > > > > > --oranj command line flag). > > > > > > > Because I've yet to make a build system thing for oranj, the following > > > > > directory tree is required: > > > > > > > oranj > > > > > - folder > > > > > - bpython > > > > > - src > > > > > - ... > > > > > > > folder can be called anything. > > > > > > > I should really fix that. > > > > > > > On May 13, 2:22 pm, Bob Farrell <[email protected]> > > > > > wrote: > > > > > > Well, there's some hideously dark magic that goes on with the > > > > > > autocompletion > > > > > > stuff which you might want to bypass. Feel free to send a patch > > > > > > over (or, > > > > > > ideally, if you can fork the bpython project on bitbucket.org so I > > > > > > can pull and > > > > > > push without having to worry about emailing patch files around) and > > > > > > I'll take a > > > > > > look. I'm at work, may as well do something interesting. :) > > > > > > > > On Wed, May 13, 2009 at 05:58:47AM -0700, Pavel Panchekha wrote: > > > > > > > > > Hmm. I have it mostly working, but I seem to have completely > > > > > > > broken > > > > > > > attribute matching. Don't know why, and can't seem to be able to > > > > > > > debug > > > > > > > anything. If you want, I can send you a patch as it is now, maybe > > > > > > > you > > > > > > > will understand better than me. Don't want to waste your time > > > > > > > though. > > > > > > > > > What I have right now is that I split out all of the language > > > > > > > specific > > > > > > > stuff completely, and everything but the attribute matching works > > > > > > > (Oh, > > > > > > > and I haven't tested rewind, but that shouldn't be a problem). > > > > > > > > > On May 13, 9:46 am, Bob Farrell > > > > > > > <[email protected]> > > > > > > > wrote: > > > > > > > > Hi Pavel, > > > > > > > > > > On Tue, May 12, 2009 at 05:58:13PM -0700, Pavel Panchekha wrote: > > > > > > > > > > > Having a bit of trouble here with the color formatting. The > > > > > > > > > BPythonFormatter works (mostly, had to fix it up a bit) but > > > > > > > > > there's > > > > > > > > > another issue. > > > > > > > > > > > When Oranj prints error messages, it'd be nice if they were > > > > > > > > > colored. > > > > > > > > > They already are when using the console, but I need to use > > > > > > > > > the curses > > > > > > > > > color codes for printing in the bpython. > > > > > > > > > > > What I'm doing is this: > > > > > > > > > > > msg = "\x01r\x03%s\x01d\x03%s" % (type(e).__name__, ("" if > > > > > > > > > not e.args > > > > > > > > > else (": " + " ".join(map(str, e.args))))) > > > > > > > > > > > Ideally, this should make the first bit (type(e).__name__) > > > > > > > > > red and the > > > > > > > > > other bit normal gray colored (Its the error message). This > > > > > > > > > isn't > > > > > > > > > working, however - the entire line is red. > > > > > > > > > > I thought this was already possible, but turns out it wasn't - > > > > > > > > I've changed the > > > > > > > > code so that you can achieve what you were aiming for now by > > > > > > > > doing this: > > > > > > > > msg = "\x01r\x03what\x04\x01d\x03hello" > > > > > > > > and then passing that to Repl.write, which will now split on > > > > > > > > \x04 - you'll have > > > > > > > > to pull from the hg repo to get the latest changes, or just use > > > > > > > > this: > > > > > > > > > > def write(self, s): > > > > > > > > """For overriding stdout defaults""" > > > > > > > > if '\x04' in s: > > > > > > > > for block in s.split('\x04'): > > > > > > > > self.write(block) > > > > > > > > return > > > > > > > > if s.rstrip() and '\x03' in s: > > > > > > > > t = s.split('\x03')[1] > > > > > > > > else: > > > > > > > > t = s > > > > > > > > > > if isinstance(t, unicode): > > > > > > > > t = t.encode(getattr(sys.__stdout__, 'encoding') or > > > > > > > > sys.getdefaultencoding()) > > > > > > > > > > if not self.stdout_hist: > > > > > > > > self.stdout_hist = t > > > > > > > > else: > > > > > > > > self.stdout_hist += t > > > > > > > > > > self.echo(s) > > > > > > > > self.s_hist.append(s.rstrip()) > > > > > > > > > > The more I look at the way the colours work in bpython, the > > > > > > > > more I hate it. Oh > > > > > > > > well. :) > > > > > > > > > > > Anything I'm doing wrong? I could send complete, (sorta) > > > > > > > > > working code > > > > > > > > > if you want, but in any case, is there anything obviously > > > > > > > > > wrong? > > > > > > > > > > > On May 12, 5:06 pm, Pavel Panchekha <[email protected]> > > > > > > > > > wrote: > > > > > > > > > > Thanks for the rundown. It shouldn't be too hard - most of > > > > > > > > > > the stuff > > > > > > > > > > you mentioned is already there in a half-done way, just > > > > > > > > > > need to clean > > > > > > > > > > it up. With luck, I'll extract the python-specific bits as > > > > > > > > > > I go, so it > > > > > > > > > > can be merged upstream. I'll try to keep the mailing list > > > > > > > > > > posted if I > > > > > > > > > > finish up. > > > > > > > > > > > > On May 12, 4:53 pm, Bob Farrell > > > > > > > > > > <[email protected]> > > > > > > > > > > wrote: > > > > > > > > > > > > > Hi Pavel, > > > > > > > > > > > > > On Tue, May 12, 2009 at 11:01:05AM -0700, Pavel Panchekha > > > > > > > > > > > wrote: > > > > > > > > > > > > > > I'd like to write a shell for oranj similar to bpython. > > > > > > > > > > > > I've already > > > > > > > > > > > > written a pygments parser for it, and writing > > > > > > > > > > > > completion shouldn't be > > > > > > > > > > > > too hard. What else needs to be changed before I can > > > > > > > > > > > > get a full > > > > > > > > > > > > bpython-esque shell for oranj? Is there anything in > > > > > > > > > > > > curses to fiddle > > > > > > > > > > > > with, for example? (I tried > > > > ... > > > > read more » > > > > attrlookup.patch > > 2KViewDownload > > -- Bob Farrell --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "bpython" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/bpython?hl=en -~----------~----~----~----~------~----~------~--~---
