With Python 3.4 now out and 2.7 approaching EOL (final maintenance release planned next year), I think it's a good time to start moving on to Python 3. Python 3 first came out in 2008 and is now the the default language for most new projects. All important libraries that one would want on Pythonista are available on Python 3, or have superior replacements available on Python 3. Switching to Python 3 will make it easier for those that are running Python 3 on the desktop.
The switch is inevitable and Python 3 has been out for 5.5 years now. It's time to move forward,
I've been using Pythonista for about an year now, and I have to say that it is an absolutely fantastic piece of software.
Lately, I've been experimenting with sensor fusion and dead reckoning algorithms, and I'd love to be able to put together and test quick prototype algorithms on an iOS device. The scene.gravity function provides a good estimate of the gravity vector, but I'd like to be able get raw accelerometer, gyro, and magnetometer readings, as well as more options for processed data.
For another project I've been working on, I've been wanting to take pictures programmatically using my iDevice's camera to do image processing. I don't need a fast real time video stream, just the ability to take static photos programmatically. It would also be nice to control the torch/flash in code.
I'd be very excited if you could incorporate such functionality into Pythonista. These are very useful sensors that iOS devices have that most desktop computers don't. Such functionality would greatly extend the possibilities of Pythonista and make my iPad and iPod invaluable tools for my research.
One more thing: it would be nice if one could get these readings without running a scene.
Perhaps you can create a motion module with a Motion python class that instantiates a CMMotionManager and sets it up to update the sensor readings at a user specified frequency. One could then call methods of the Motion python class to get the raw and calculated motion measurements.
The current scene.gravity() function provides the direction of the down vector (with a normalized magnitude), computed using a combination of the gyroscope and accelerometer readings. This is not what I am asking for.
The scene.gravity() function gives the output of the gravity function from the Core Motion CMDeviceMotion class.
The Core Motion CMDeviceMotion class can give a lot more processed values too:
Furthermore, for raw data:
- CMAccelerometerData gives raw accelerometer readings
- CMGyroData gives the raw rotation rate
- CMMagnetometerData gives the raw magnetometer readings
I am asking for the additional calculated values offered by the CMDeviceMotion class, plus the raw readings from the accelerometer, gyro, and magnetometer.
Pythonista should eventually move over to Python 3. It has improved syntax, new features, and is the current standard. Python 2.7 will be phased out eventually. The only technical reason you mentioned, that lack of PIL on Python 3, is not much of a reason at all. PIL is essentially obsolete now. The Python community is largely moving to better maintained backwards compatible forks of PIL, such as Pillow, which has more features, fewer bugs, and is fully compatible with Python 3.
With that said, there is no urgency in moving Pythonista over to Python 3. I would welcome two separate versions of Pythonista for Python 2 and Python 3, but it isn't really necessary yet.
What I would really appreciate soon is a new version of Pythonista that includes Python 2.7.5 and is compatible with iOS 7. There are many bugs that significantly impair the usability of Pythonista on iOS 7, and roughly 3/4 of all iOS users are running iOS 7 now. If funding is an issue (though it doesn't seem to be), I and likely many other Pythonista users would be willing to help out.