Version History: 3.2(Dec 30, 2017), 3.1(Jan 20, 2017), 3.0(Jun 14, 2016)
https://twitter.com/olemoritz/status/1076100492688789504
It has been about 17 months since the latest version. I have to say, I started to worry about whether it is the end of Pythonista.
Forum Archive
Time to release a new version to App Store
There really is no need to have this subject raised again. It's been brought up before (by you) and remains unanswered (here. The fact there is a beta program and it was recently re-released means there is a developer involved, and it means that one day a product will most likely be released. Until that day, be satisfied with the community resources that have been made available here and on/off line in the app.
Given the amazing Pythonista is, the detailed documentation, the ease of the IDE and tools, and the available community resources, it is something the developer has obviously spent a lot of time getting right. There's no need to bug them and tell the current version being 17 months old. It's running Python 3.6, (considering 3.7 was only in beta when Pythonista was released, I think that's pretty good).
I do admit, I would like to see some sort of update from them giving something away, but this is the current paradigm of developers today; you rarely hear about new features in most operating systems, phones and devices, other development suites, just about everything today, that is until it is released.
If you'd like to be a part of the beta and have the latest features, follow the information in the [New Beta for Pythonista 3.3] (https://forum.omz-software.com/topic/5295/new-beta-for-pythonista-3-3) post (you only have to download TestFlight and click on a link in here and the update will be pushed to you if you want it). TBH, it was a little confusing for me when I first signed up, you HAVE to visit that link from the iOS device you wish to have the beta pushed to. I kept doing it from the desktop and couldn't work out why nothing appeared for a few days.
We could all speculate why the developer has gone dark. He use to be around, posting to the community and the occasional tweet, but he hasn't replied in several months to anyone publicly by any means of communication (community, tweets and emails). He must have his reasons. Given the beta is active and has just been renewed, let us be satisfied with that! When the next version is ready it will be released and it will be made available to the community.
(I personally want to believe he has locked himself in a cave and is working hard to make a perfect product for all of us to enjoy!) :D
@lpl Please cease with the doomsday prophecies and grumpy demands. If you do not feel secure with Pythonista’s future then chose an alternative. There are alternatives now. Please remember that the purchase price of Pythonista is about as much as a drink at Starbucks so switching costs are not prohibitive.
i am 100% agree with @ccc except that my comparison unit is not a cafe but a 🍺
Ok, sorry, I forgot, I 🤐
@ccc So do you mean if I bought this for 100$ then I can worry about the future of the Pythonista?
@madivad I hope omz is working on this. But I sent him many emails before in 2018 and 2019 and I have to say, I haven’t seen other authors like this before, no replying at all.
I hope you understand that I’m not disappointed about the 17 months. I just don’t like no replying and no news about the progress.
There is pretty neat Python 3.7 implementation, called Pyto.
It supports numpy, matplotlib and ... pandas!
I just wished it had the same Scene interface as Pythonista or even better supported tkinter or pygame.
@upwart Quid about Objectivec?
Pyto iirc has Rubicon for objc, which is similar to objc_util. It does have a UIKit module, but it is a little lower level than pythonistas UI module.
@Ipl, pyto is open source, and is updated frequently. Since that is a priority for you, you should go hang out in the pyto forums.
@JonB your @Ipl did not work, it is @lpl
@lpl said:
So do you mean if I bought this for 100$ then I can worry about the future of the Pythonista?
My comment was about switching costs which are defined as relative costs.
@JonB I don't like its UI. So I came back.
@ccc I just bought an app and no services?
So do you mean that I bought this then I should sit on the bench patiently and hope author won't give up? If I said, hey, you should share something for us or just reply the message, then I'm not a good customer and I should feel ashamed and shouldn't use this app any more?
If not, why are you keep asking me to switch to another app? Sorry I can't get it. Why don't you confront my question? SHOULD THE AUTHOR REPLY THE EMAIL OR SHARE NEWS ABOUT APP WHEN HE HASN'T UPDATED APP FOR 17 MONTHS?
I have had the privilege to meet Ole face-to-face a few times in Berlin and I understand his perspective. It is difficult to create a full featured Python on iOS devices. Apple does not make it easy. Lots of models, os changes, lots of changing rules from the AppStore, and an app submission process that requires the patience of a saint. Doing the management of this forum and Slack and docs plus his other apps and living a life beyond the screen is a strain.
Python is growing so fast in so many directions these days that there are tons of new packages/modules/libraries every month. Many Pythonista users want to be able to do everything on their iPad that they can do on their Mac without any regard to the constraints that Apple places on iOS app multiprocessing, single binary, etc. The data science crowd wants all of the Anaconda distribution running on their iPads. When key libraries like NumPy or Matplotlib are ported, there is little sharing of code/examples on the forum so are those efforts really building any community around the Pythonista app?
Pip is a nightmare all on its own especially in the face of Apple’s iOS constraints. Many users view it as a Pythonista bug when pip install in StaSH doesn’t magically compile the C or Fortran code in their dependencies into something that the iOS sandbox is willing to run. Helping Pyto through a few of these nested dependency issues for basic packages like flake8 and mypy has demonstrated to me what a minefield this can be.
Bottom line: Pythonista is awesome. Pleasant ui/ux, a strong core engine, docs, community forum, Slack, and nice add-ons including objc and ui. The app has incredible value given its purchase price. Updates will come when they are ready to ship so please have patience.
If you are pacing back and forth full of impatience then please do not belittle the hard work of others. Instead, get busy helping Adrian to improve Pyto. He is young, smart, energetic, responds quickly to issues / pull requests and releases new versions often. If you do not like its UI then submit pull requests until it is as great as you need it to be.
@ccc Plz don't talk about Pyto any more. I SAID I don't like the UI, and I'm not a developer for iOS. So I can't help him but I did share this app to my friends.
Still I don't understand that. He can share news with pythonista or just send a twitter like "I'm still work on pythonista." So my friends won't ask in Telegram again and again, did the author give up?
And I just want to know why my friends(in a Telegram group for Pythonista) feel disappointed and all of you just say sit down and calm down, and try Pyto?
@lpl Hi, I can understand your disappointment, because omz in the last year was significantly more absent on this forum than some years ago. People who bought Pythonista in the last year are less lucky (in my opinion) than people who bought Pythonista in previous years, due to less support by omz on this forum in the last year compared to previous years, so for this reason (in my opinion) people who bought Pythonista in the last year feel more abandoned than others. I should say also that in this forum you will find a lot of info about Pythonista written by a lot of great people, you know omz can't answer every question personally, especially if the questions are often the same made by different people.
Unfortunately for us (who buy softwares) the cost of a software does not always means that the author provides future updates included in the purchase; about Pythonista you pay once for the application itself and the author has not specified anywhere that he will release regular updates (in other words, like someone already said before in this forum, when you pay about $ 10 for Pythonista, you pay only the app, not future updates because nowhere it is known that the $ 10 also includes updates). It is also for this reason that those who bought Pythonista some years ago were more lucky to pay for the same price the app and to see several updates of it.
I use only (I think) some little percent of all features provided by Pythonista, that is one of the very few apps in AppStore that tries to be customizable through ObjC. It is really powerful and if you can perform experiments on it, you could improve a lot of things of Pythonista without needing any updates by omz. But I suppose that it is possibile to perform experiments on ObjC for Pythonista only if you have XCode and a Mac computer...
If you, instead, wants to be able to install anything on Pythonista, unfortunately not even the powerful and mysterious objc world can allow you to install anything you want, it needs suitable full C-Fortran compiler, and in ios world it doesn't currently exist. But even if it existed, in order to create your application with some not-pure python code, you should pay Apple to install on your iPhone or iPad your app... So you understand that Apple make things a little strange...arousing the disappointment of many people, which then attack the developer...
I'd like to ask you what would you expect in a new version of Pythonista, regardless of the fact that the author does not answer frequently on the forum and gives poor info about his app in the last year?
Bye
@Matteo said:
I suppose that it is possibile to perform experiments on ObjC for Pythonista only if you have XCode and a Mac computer
Hello, I agree with almost 100% of what you said.
For info, I have a Mac (that I no more use) but not XCode, and all I have programmed using ObjectiveC has been done with Pythonista
@Matteo I understood that I can only install pure python modules and I think it is good enough for most of us. I hope pythonista can upgrade the modules like numpy, PIL and others. And I'm waiting for the features about siri. And I think all of you have seen that many people are still waiting for Pandas.
@cvp Hi, but which tool do you use to learn objc using only Pythonista? Any particular library written by someone here? Where do you find documentation about it? And can you make experiments in a protected environment (any sandboxed environement inside Pythonista main folder) on your idevice without risks to delete anything if some objc tests are not what you expected? only to learn something, not to become a objc guru :-)
@lpl Hi, yes I'm agree with you about some old not-pure python libs, but only if you need to use some extra-new features of the new versions of numpy, matplotlib, PIL, ... I mean, about your use of Pythonista, really you need new features of new libraries versions listed by you or you can do what you want with the old ones built-in? For example, which kind of great new features the new version of numpy can offer compared to version 1.8.0 version of Pythonista? Remember, also if you had the newest version of numpy on Pythonista, you could not install anything not-pure python that requires the last version of numpy, and any pure-python library that requires the last version of numpy could be modified to be used with the old built-in numpy version (not always, you are right, and only if you know how to modify it, but generally it is possible).
About Siri, which kind of innovation could exist for people who write python scripts with Pythonista? You know, about Siri I'm still waiting for Apple to add in iOS a feature that allows me to automatically answer incoming calls with Siri and to end a call at any time when I say with my voice a word that I saved in a Siri database (but it doesn't exist)... Sorry but I can't see any great advantages in developing Siri capabilities in Pythonista, can you suggest me someone? In my opinion it is better if someone could create an interface to use Pythonista on any computer with big screen, with a bluetooth connection (for example). I mean, I would use more and more Pythonista if I could link it to any computer that I use in order to use big keyboard, mouse, big screen, and to have on computer screen all keys, buttons, windows that I see on my iphone when using Pythonista.
Regards
Bye
@Matteo The doc I use is only the Apple developer doc...You find there all classes documentation.
Often, I only type dir(ObjCInstance(any Pythonista object)) and I spend some time to check the methods and properties listed
@Matteo You can't imagine what you can find with our big friend Google
Try this little script, only to see what you could do with Pythonista
And read this interesting topic and this one
# https://rambo.codes/ios/2019/01/11/hacking-with-private-apis-on-ipad.html
import ui
from objc_util import *
NSBundle = ObjCClass('NSBundle')
UIWindow = ObjCClass('UIWindow')
UIColor = ObjCClass('UIColor')
window = UIWindow.new()
window.setBackgroundColor_(UIColor.darkGrayColor())
NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/SpringBoardUIServices.framework').load()
controller = ObjCClass('SBUIPowerDownViewController').new()
window.setRootViewController_(controller)
window.setHidden_(False)
def close():
window.setHidden_(True)
ui.delay(close,5)
@Matteo Like this? https://pillow.readthedocs.io/en/stable/releasenotes/3.4.0.html#append-images-to-gif
And for siri, we can get weather from different resources. Or we just roll the dice to make a decision.
@lpl said:
for siri, we can get weather from different resources
Sorry, I don't understand what you want to do with Siri
@cvp
-- Hi, siri how is the weather?
-- Here are some reports from different resources.
-- Hi, siri. Should I go with her?
-- I roll the dice. The answer is yes.
@lpl I think you can do that with the beta version, isn'it?
You have even Examples/Roll Dice.py
@cvp yeah. I'm using this.
@lpl you can use requests to get internet info in Shortcuts, even in background mode
#!python3
import requests
import shortcuts
def main():
if shortcuts.is_shortcut():
#shortcuts.set_tap_action(shortcuts.ACTION_SHOW_RESULTS)
url = 'https://www.google.be/search?client=safari&q=meteo+local'
r = requests.get(url)
html = r.text
shortcuts.set_html_output(html)
if __name__ == '__main__':
main()
@cvp Sorry, I don't like shortcuts and it is hard to debug on shortcuts. But I think I'll try this, that sounds interesting. Do you have a documentation about this module?
@lpl It is a standard module of the beta version.
Thus you find documentation by the normal way:
- select the word shortcuts in your edited script, choose help, as usual.
- Or the ? In the console part, then "What’s New in Pythonista"
Edit: shortcuts is not the Apple app Shortcuts but a module added by omz in the beta, thus is not difficult to debug. In background mode = without running the full Pythonista app.
@lpl you can even run a Pythonista script with Siri without using the new Shortcuts module:
#!python3
import ast
import requests
#import shortcuts
city = 'Waterloo,be'
url = "http://api.openweathermap.org/data/2.5/weather?q="+city+"&APPID=beb97c1ce62559bba4e81e28de8be095"
r = requests.get(url)
dict = ast.literal_eval(r.text)
for k in dict:
print(k,dict[k])
Edit: you can run and thus test this script in Pythonista normal mode, then configure as a Siri shortcut linked to a sentence, like "get my weather"...
for key, value in requests.get(url).json().items():
print(key, value) # or
print(f"{key}: {value}")
@ccc I knew there was something better 😀
Edit: print(f”{key}: {value}”) Refused
Edit: invalid double quote
print(f"{key} : {value}")
Thx. Fixed inline above.
@cvp try f-str
f"http://api.openweathermap.org/data/2.5/weather?q={city}&APPID=beb97c1ce62559bba4e81e28de8be095"
import location, requests, speech
loc = location.reverse_geocode(location.get_location())
city_country = "{City},{Country}".format(**loc[0])
print(f"Weather in {city_country}:")
url = "http://api.openweathermap.org/data/2.5/weather?APPID=beb97c1ce62559bba4e81e28de8be095&q="
weather = requests.get(url + city_country).json()
for key, value in weather.items():
print(f"{key}: {value}")
speech.say(f"It is currently {weather['weather'][0]['main']} in {city_country}.")
@ccc if you want to use Siri shortcut, you can, instead of speech, use
shortcuts.set_spoken_output(f"It is currently {weather['weather'][0]['main']} in {city_country}.")
@lpl yes, for me this is ok and better than my ..."+city+"... thanks for advice
city = 'Waterloo,be'
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&APPID=beb97c1ce62559bba4e81e28de8be095"
@lpl ok yes you are right sometimes it is not possible to do something with current versions of some libs in Pythonista, the only thing I can suggest is to try searching alternatives in Python world, you should search for some pure-python libs that can help you about your specific task: trust me, in Python world someone thinks something, and it already exists at 99,999% (python is so famous...;-))
@cvp @ccc and many others, thanks that you continue to share useful info and propose code with which many other users can experiment!
Bye bye
@Matteo But the performance is terrible. Try lxml.
@lpl Hi, sorry but I don't know lxml library, never used it. But I'm agree with you that a c compiled library is faster than a pure python equivalent code. However I'm not completely agree with you about "terrible" performance. In my opinion I would consider with "terrible" performance a pure python code that runs for some hours instead of some seconds of an equivalent c compiled code. Which kind of test have you performed to state that the performance is terrible?
In other words, with practical example: let's suppose that an algorithm has time complexity O(n^3) and you write a pure python code and the equivalent C code that both execute the algorithm. Well, based on the input (that, simplifying, can be 10kbyte, 100 kbyte, 1000 kbyte and so on), how much time the execution of the pure python code costs compared to the C one if both are executed on same machine and in the same conditions (machine with same X% free RAM and CPU power)?
Thank you
Bye
@lpl What exactly are you trying to do in Pythonista where XML performance is a showstopper? It would be good to have real world use cases to use in trying to convince Apple to be more reasonable in its app reviews.
@Matteo Try cchardet https://github.com/PyYoshi/cChardet/blob/master/README.rst . 0.37 call/s VS 1467.77 call /s ≈ 1/3600
@ccc How about Pandas?
I am afraid that I do not understand. Pyto has Pandas but not lxml. What is the use case?
For chardet, if the use case is in requests, one can set r.encoding manually (for instance, for repeated messages where you know encoding won't change), and just bypass chardet altogether.
For lxml, as has been discussed, apple won't allow it, unless the dev completely refactors lxml and it's dependencies to use non-private api names.
Pandas been discussed a lot, and you ought to know not to depend on it soon inside pythonista. (I wonder: does pyto yet support url schemes/shortcuts? Pythonista IDE + Pyto as an "engine" might support the workflow of people who prefer the pythonista user interface, but want pandas or compile their own app with modules of their choosing.)
Let’s see if https://github.com/lxml/lxml/pull/281 sparks any solutions...
@ccc Pandas is the most popular tool to analyse data. https://pandas.pydata.org/
@JonB Sorry but I'm using aiohttp. And for most of us, we don't set r.encoding manually, unless we are sure that chardet can't detect rightly.
I know what Pandas is but my question was about lxml, not Pandas.
@ccc https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser
No one is questioning that lxml is superior. But Apple's app store forbids it. Email apple with your complaint.
I gotta say @lpl if you do not have a use case for a capability then please stop complaining about its absence. Nice to have does not help us. We are in search of needs that justify the investment of time, effort, and the addition of risk.
@lpl Hi, interesting, you are right, the author (PyYoshi) used a txt file in Japanese language (about 330 kbytes) to perform the benchmark. I tried with other kind of files with same size and the ratio sometimes was about 1:500 (obviously not always 1:3600). I think the ratio could be less than 1:3600 (the average estimated by the author) with some kinds of files (maybe critical/bad for function chardet.detect?).
Also I tried his bench script with some modifications like:
1. variable do_times set to 10 instead 100 (to speed up the calculation)
2. same txt file as input for function c(c)hardet.detect but I executed a benchmark for 5 files, with size x1, x2, x4, x8 and x32 (I created them simply by creating a copy of the original file with 330kbyte size and by adding the same content inside the file 2 times, 4 times, and so on..., in order to have a little set of input data with a geometric progression as size, as an example).
I noticed that, by performing the test with my computer, with some available ram, cpu, etc...,:
-
with chardet : the time cost is quite near to follow a linear law , with an estimated time complexity of about O(kn) where k* approximately equal to 5e-4
-
with cchardet : same as chardet but with k approximately equal to 9e-8
This thing surprises me enough, I didn't think there was such a big difference between pure-python and c for the function chardet.detect, that is c is a few thousand times faster than pure python (my test using the author's bench script is however a very simplified test and not good enough to estimate the time complexity with high precision and as much as possible independently from the computer in use).
But I still believe that in real life with Pythonista the user can easily write scripts that he/she can test anywhere (just have the idevice in own hand) and then can export to a computer the script created with Pythonista for large input files. Pythonista in this case helps a lot in preparing the calculation script (I mean, you can verify it with little input data by using Pythonista and pure-python libraries installed via pip) and then you can use all the power of a computer when working with large input data.
Concluding, for me the only limit with Pythonista and pure python libraries is not the performance (in most cases the user should use Pythonista like a platform to write good code, without worrying at first to execute the script with large inputs), but the impossibility to install not pure python libraries that haven't pure-python alternatives on the web.
Bye
@lpl Ok, fair enough. Let's close the topic until someone completely refactors lxml, then you can ask again, k?
@JonB lxml is just an example I used to prove my words.