Beta Status Update
Unfortunately, I've recently been unable to provide a new beta version of Pythonista 1.6. This is partly my own fault, and partly due to unexpected difficulties with TestFlight.
First off, I've been working on two different branches of Pythonista for quite some time, one being the current (expired) 1.6 beta, a relatively minor update with new Python modules but not much else, the other a more significant update with a major UI refresh and quite a few other new features that I'm pretty excited about (more on that soon).
This approach has sometimes made it difficult to keep both versions in a working state. When I changed something in version B, I sometimes ended up accidentally breaking stuff in version A... So a couple of weeks ago, I decided to ditch the current beta branch, and exclusively focus on the new version instead, but I have to admit that I vastly underestimated the amount of work that this would take – a lot of basic things were still missing in the new branch, and even though it had some nice new features, it would have been a step down in terms of stability and basic functionality that you'd expect, even if you were coming from 1.5.
Right now, it's still a bit rough around the edges, but definitely usable and an improvement over the current version. Unfortunately, I haven't been able to get TestFlight to work with it yet. I continue running into server-side issues with builds not processing properly after I upload them. In order to make some new features work, I had to change the App ID (for code-signing), and it seems that this is a scenario that just doesn't work very well with TestFlight – it's difficult to go back now because that would mean sacrificing new functionality that I spent quite a lot of time on... At first, the only reason for the new App ID requirement was the document picker support in the new
dialogsmodule (requires iCloud entitlements), but the new version also contains an app extension (for running scripts from the share sheet in other apps), and I've realized now that this also doesn't work with the old App ID, and while the document picker support wasn't that important to me, the app extension is a major feature that I really want to ship.
If you do have the current (expired) beta installed and would like to get your data out of it, here are two options you can use:
Option 1 (if you have a Mac with Xcode):
- Connect your device via USB
- Start Xcode and select Devices from the Window menu, then select the connected device in the sidebar
- Under Installed Apps, select Pythonista
- Click on the "Gear" icon and select Download Container...
The downloaded container is a package (i.e. folder), so you can view the individual files in Finder by selecting Show Package Contents from the context menu.
Option 2 (if you're on a PC or don't want to install Xcode):
- Make an unencrypted(!) backup of your device using iTunes
- Download the iBackup Viewer tool (Mac or Windows) – (the free version will do, if you have the paid version, you could also encrypt your backup)
- Go to "(your device)/Applications" (this may take a while to load)
- Select Pythonista in the list of apps, then click the "gear" button and select Save all Files.... I would recommend that you create a new folder for this because the app will create multiple folders while extracting the backup files.
Edit: You can also try downgrading by downloading 1.5 from the App Store. Apparently, this didn't result in data loss for some people, but I'm not quite sure if this always works.
That's all I have for now. I'm very sorry this took so long. When I know more, I'll post it here.
On the new scenekit, I haven't been able to get gravity to work. I tried to modify the Physics Clock demo to add gravity from motion, but using self.physics_gravity = motion.get_gravity()[:2] doesn't seem to work; in fact self.physics_gravity = (5,-5) or something similar does not work either. Numbers still fall straight down. Am I missing something?
@omz Thanks for the new beta. Lots of fun toys to play with.
I haven't run any of my code yet (figuring out how to restore from dropbox when my sync script is only on dropbox ;-) but here are some issues running through the examples. I'm running on iPhone.
CB isn't mentioned in the release notes. I hope it is still there. I see it in the doc so it probably is.
I can't figure out how to add an image. The file menu (now under "+" instead of the select menu) doesn't seem to have the user image choice with the "add" button anymore.
There used to be a png file in the files menu but it went away. Did I delete this by accident or was this a bug? I don't know how to delete things in the files menu. It is not in the trash. I hope it wasn't needed for an example or something. Now the files menu seems pretty useless. Nothing to select, no obvious add functionality. It seems like some user interface element is missing.
Random MIDI example doesn't work. The home screen pops up and no sound happens. The Pythionista app is still there but seems to have restarted because the editor state (open files) reverts to an older state.
@omz Low priority issue: I had never heard of a share sheet until I saw the comment in the release notes. I'll figure it out with Google's help but it might be worth updating the doc on editor/file actions for users who might not know about the functionality.
@omz - I was able to install over the previous beta with no issues or loss of data. The install took quite some time on my iPad4 - probably 10 minutes. I was beginning to think it had hung. Nothing like the issues @dgelessus was having.
How do you close pythonista when ran in safari? The x is grayed out for me and I have to clear safari from memory to remove the pythonista popup.
The x is for stopping scripts (grayed out if nothing is running), tap Done to close the extension. If the console output is visible, swipe right first (a Done button in the console will probably be in one of the next builds)
I was able to update from the previous beta without a loss of data as well.
Maybe I was just impatient then, the long wait at the start of the update made me think that something was wrong. My attempts to cancel the installation probably just made things worse.
@dgelessus I loaded the beta last night. After backing out to 1.5. It took a long time (hours) but it eventually worked. It failed once so I just restarted. I assume the problem was with testflight and moving in and out of wifi range, unrelated to Pythonista. I've had similar issues with testflight before. I don't think testflight is very robust and it is certainly slow. It used to be worse.
The midi example crashes on my iPad 2 air. Kills the interpretor w/oany tracebeck when executing the line
player = sound.MIDIPlayer('output.mid')
Midi file is there 144 bytes and is recognized by external midi programs.
Traceback (most recent call last): File "/var/mobile/Containers/Data/Application/9C6CA438-893C-4AD6-BB3C-62437E69416C/Documents/chordcalc/chordCalc/Spinner.py", line 188, in <module> spinner1.position = (110,150) File "/var/mobile/Containers/Data/Application/9C6CA438-893C-4AD6-BB3C-62437E69416C/Documents/chordcalc/chordCalc/Spinner.py", line 110, in position self.frame = value + tuple(self.frame[2:]) TypeError: sequence index must be integer, not 'slice'
ui.View.frameobject is now type Rect and not a list. Need to read the new ui docs.
There was a new version of
TestFlightreleased a few daze after the Beta. Perhaps that new TF release helped with the issue of installing of one beta on top of another.
@polymerchm, try converting to a tuple before slicing:
@ccc, if I were to guess TestFlight is only the front-end to the beta app system, similar to the App Store app. Both of those don't actually need to be running during the installation of apps, they are just necessary to start the installation. I'd imagine that TestFlight gets the app package from somewhere else, but installs it like any normal app, so I doubt the TestFlight update would have any direct effect on the installation process.
MIDIPlayercrash: I made a last-minute change there that I didn't test properly. Here's a quick workaround – just replace the last two lines with this:
import os soundbank_path = os.path.abspath(os.path.join(os.__file__, '../../merlin_silver.sf2')) player = sound.MIDIPlayer('output.mid', soundbank_path) player.play()
Here's another missing feature: changing the console font and size. Is it just me, or are the default fonts in the new beta larger than they used to be?
Found a bug in the
uimodule - an
boundsattribute is a
ui.Rect, but expects a tuple when setting. For example, this code will fail:
import ui sv = ui.ScrollView() sv.bounds = sv.bounds """ Traceback (most recent call last): File "<string>", line 3, in <module> TypeError: Expected a tuple """
@omz The workaround worked for me. Thanks.
On the new scenekit, I haven't been able to get gravity to work. I tried to modify the Physics Clock demo to add gravity from motion, but using self.physicsgravity = motion.getgravity()[:2] doesn't seem to work; in fact self.physics_gravity = (5,-5) or something similar does not work either. Numbers still fall straight down. Am I missing something?
Not sure why this doesn't work for you, here's a slightly modified PhysicsClock script that uses motion data for changing the gravity: