Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Bug list for beta release 160037
-
@ccc said:
grab the name [ ... ] and navigate there in stash.
Means type the following into stash:
cd /var/mobile/Containers/Bundle/Application/C370CA19-1410-4DA3-975F-CBA563809E66/Pythonista.app/Frameworks/PythonistaKit.framework/pylib/site-packages/ ls
😋
I had no idea about this! Thx! -
I love the the possibilities offered by obcj_util. While exploring these, I ran into an error.
I managed to end up with an ObjCInstanceMethod without method attribute, which (not surprisingly) makes Pythonista exit when called
>>> f = ObjCClass('UIDevice').currentDevice().batteryMonitoringEnabled >>> f.encoding 'B0@0:0' >>> f.method Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'ObjCInstanceMethod' object has no attribute 'method' >>> f() Bye bye
I believe this is causes by the final if statement in ObjCInstanceMethod._ _ init _ _ in objc_util, which neither assigns self.method nor raises an exception in case self.encoding is True-ish.
I guess this should be something likeif method: self.method = method if not self.encoding: self.encoding = method_getTypeEncoding(method) else: raise AttributeError('No method found for selector "%s"' % (self.sel_name))
Alternatively, ObjCInstanceMethod._ _ call _ _ could check.
My details: iOS 9.1, iPad Air 2, Pythonista Beta 160036
-
@Olaf Thanks, looking into it now. The problem seems to be that
batteryMonitoringEnabled
is a property, and uses a custom selector name (isBatteryMonitoringEnabled
). -
Yes, @omz, you're right on
...
batteryMonitoringEnabled
is a property, and uses a custom selector name (isBatteryMonitoringEnabled
).I found this isn't unique to battery. The same happens for property
AVCaptureDevice.connected
that needs translation into methodisConnected
. I noticed it happens to boolean properties, as e.g.AVCaptureDevice.localizedName
works fine.
Hope this helps -
import ui ui.SegmentedControl().subviews
/Users/ole/Development/xcode/Pythonista/python/Objects/tupleobject.c:54: bad argument to internal function
-
- image_quad from arguments are incorrectly scaled. (workaround seems to be to multiply by 2, though i suspect this may depend on device)
- ui editor does not save the view when switching focus to console. This leads to confusion when loading/presenting a view from the console( why the $!?& is the button action i added not getting called?). It does seem to save when switching to a different file tab. Seems like whenever console input gets focus, play is pushed, or an action run, any dirty files should be written to disk first.
-
I've mentioned this before in a different thread, but the "replace" text input dialog in the find/replace has a few problems. First, it has no default text as find does.
Second, if you compare the keyboard to the keyboard in the "find" dialog, there are 2 differences. In replace, autocapitalize is on, and dark keyboard themes are not respected. The opposite is true in the find box.
-
Bug in the
scene
module:The documentation for
SpriteNode
states, that a node without texture is rendered as a rectangle with the color of the color attribute. However creating aSpriteNode
like this creates an error:node = SpriteNode(texture=None,position=(10,10),color='blue') TypeError: Expected Texture or image name.
-
@Moe a workaround: omit the texture argument if you don't want a texture.
-
BUG:
ui.TableView
does not respect eitherframe
orflex
attributes. Meaning, it never resizes if you do it programmatically. I haven't tried it another way. A work-around for those wondering:table = ui.TableView() table_pntr = ObjCInstance(table) table_pntr.frame = CGRect(CGPoint(0,0), CGSize(500,500))
Also, can we get a
PhysicsNode
in thescene
module? -
blmacbeth, the issue seems to be that these are not accepted in the constructor. However, setting .frame and .flex attributes after you create the TableView works fine.
import ui v=ui.View(frame=([0,0,200,200])) t1=ui.TableView() t1.frame=(0,0,200,200) t1.flex='w' t2=ui.TableView() t2.frame=(0,250,300,300) v.add_subview(t1) v.add_subview(t2) v.present('panel')
-
I have noticed that sys.lath no longer contains . or Documents.
I thought in 160032 this was changed to- Changed the order of
sys.path
once more, so that files in the main documents folder can't shadow standard library modules anymore. Imports from the current directory should also work again.
which I think had documents and '.' just at the end...
- Changed the order of
-
@JonB The directory of the current script is still in
sys.path
, just as an absolute path instead of.
. I don't remember the details right now, but there were some subtle problems with having.
insys.path
.I think Documents used to be in the import path, but I don't really think it should be there. That's what site-packages is for.
-
There's still that bug in syntax highlighting where if you have multiple same-line imports (
import ui, os
) only the first module will be correctly highlighted. -
@omz
Oh, I see, the starting path of a script is added to sys.path as an absolute path, but not in the interactive console, and not when using chdir. That leads to a confusing situation where imports work when running a script, but not when pasting the same line by line.There is something else strange happening with
from . import xxx
package imports, but not sure if it is related. Gittle imports did not workfrom . import path
(complained about path, perhaps there is a conflicting path.py?). Strangley this woed wh gittle was in site-packages, but not whn it was in stash/lib ( and that path was on sys.path). I will need to experimt with this a bit. -
The current beta expires in 21 hours.
-
13 hours now... Getting down to the wire
While it would be interesting to see what happens when the beta expires. I really prefer not to find out 😰 -
I've found the best way to contact @omz directly is through Twitter. The new beta is "processing" https://twitter.com/1defenestrator/status/670962735560134656
-
@Webmaster4o , thanks, I am not stressing about it. Just a bit of fun. If it goes off online for a day, will give me time to reflect 🤕😃
-
I've uploaded a new build a couple of hours ago. It's still "processing" unfortunately (always a bit unpredictable how long that takes). If the current build expires before the new one is ready, you'll get a "beta expired" alert when trying to launch it, but it won't disappear from your device or anything like that. You might still want to make a backup of your files.