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.
Xcode Template for Pythonista
-
@peterdougstuart any chance you would be willing to share your updated template?
-
@sreyemnayr could you please update your script to work in Python 3?
-
if extension == '.py' or extension == '.pym' # can be shortened to: if extension in ('.py', '.pym')
-
Sorry for delay responding....
Happy to share @RomSpy, but please note that my templates have been minimized to my project i.e. deleted lots of modules I'm not using. Therefore it may not work for your project. You might be better off following the principles of steps I outlined above.
If you are still interested in my templates can you send me a PM on twitter (same handle as here) and I'll send you a zip or something. Alternatively point me to somewhere I can upload the files and I'll do so.
-
@peterdougstuart thank you for the offer. I ended up doing what you did and removing everything I wasn't using and then running the script above. I was able to successfully update my app in the store using that method in addition to your added steps. Thanks again.
-
@peterdougstuart
Hi, i am interested in your templates which is submitted to itunesConnect successfully, can you send me a zip ? -
Hi @xino386 can you PM on twitter and I’ll send you a zip of my scripts (same handle as here). Note that my scripts have been trimmed down to match the subset of the libraries used in my app so you might be better off following the steps above to get it to work.
-
@omz
I have a succes storey with your fix script (June 19/18). Here’s what I did. Pasted approx 400 #\input texinfo ‘s into a text file. Pasted the contents (all one line, no line breaks) into your script as a string (replacing the existing ‘#\input texinfo’. Changed the folder permissions for the two lib folders to read/write (temporarily).ran your script. It fixed all but a half dozen of the files. Went into the folders manually. The unchanged files stood out cause they didn’t have today’s date of modification. Manually pasted in the approx 400 from the original text file into those few.
Successfully uploaded to app connect where my app is now in Beta on test flight.
Thank You very much! -
@stepper That's interesting, though I've found a better solution recently: You can add something like
#import pythonista
as the first line, and it'll be recognized as Objective-C source code (which isn't directly executable, so it doesn't cause issues with code signing). -
@omz
Any chance we will see an updated template that uses all the great new features in version 3? -
@RomSpy Yes, that's something I'd really like to do soon, and I've already done some of the work required, but it's still kind of a mess.
-
Is there an up-to-date summary of the idea for packaging up a Pythonista project to make an app? I see that the template linked from
https://forum.omz-software.com/topic/1911/new-xcode-template-beta
doesn't exist anymore, and I'm not sure where to begin learning.
-
@sreyemnayr I tried your re-worked script and it worked well.
I used#import pythonista\n
rather than#\input texinfo\n
To make it run faster I prepend 10 strings in each iteration, e.g.f.write("#import pythonista\n" * 10 + source)
and set counter to increment by 10. -
Hello everyone,
Here is a reworked script that adds the comments at the top but preservers coding= comments.
It is not perfect, but it helped me succesfully submit an app to the Appstore, I hope it is of help to every one.#import pythonista # Change the ********** to point to the directory containing the Pythonista framework : project_path = '**********/PythonistaAppTemplate' pylib_path1 = '%s/PythonistaKit.framework/pylib' % project_path pylib_path2 = '%s/PythonistaKit.framework/pylib_ext' % project_path MAX_REPEATS = 10 import shutil import os import subprocess def check_is_executable(file_path): file_output = subprocess.check_output(['file', file_path]) if 'executable' in file_output: return True, file_output return False, file_output def fix_executable(file_path, dry_run=False): with open(file_path, 'r') as f: source = f.readlines() if 'coding:' in source[0].lower(): firstline = source[0] start = 1 else: firstline = '' start = 0 if dry_run: if firstline: print(firstline) else: with open(file_path, 'w') as f: f.write(firstline + '#import pythonista\n' * MAX_REPEATS + ''.join(source[start:])) is_executable, out = check_is_executable(file_path) return not is_executable def fix_pylib(pylib_path, dry_run=False): print ("fixing", pylib_path) for path, dirs, files in os.walk(pylib_path): print(path, dirs, files) for filename in files: full_path = full_path = os.path.join(path, filename) is_executable, file_output = check_is_executable(full_path) if is_executable: extension = os.path.splitext(full_path)[1].lower() if extension in ['.py', '.pym'] or filename == 'command_template': if dry_run: print '### Executable found: %s' % (filename,) fixed = fix_executable(full_path, dry_run) else: print 'Fixing %s...' % (filename,) fixed = False counter = 0 while not fixed: fixed = fix_executable(full_path) counter += MAX_REPEATS print 'Fixed with '+str(counter)+' dummy lines.' else: print '### Executable found, but does not seem to be Python code: %s' % (full_path,) if __name__ == '__main__': fix_pylib(pylib_path1, False) fix_pylib(pylib_path2, False)
Cheers
Andre -
so, this may be a stupid question, but my understanding of this problem is that
file
is running locally, and is getting rejected locally.so, why not just edit /usr/share/file/magic (or copy it, edit it, then file -C to compile it to a new .mgc), or create an alias to file with a -m argument pointing to your custom magic file. It should be possible to edit the entry for pythonm or add custom search for the shebang or coding lines, to simply output a safe mimetype,
-
Hi Jon,
I think that is a very good question and a very interesting option to explore as it would avoid modifying the framework. I'll look into it as soon as I get a chance and report my findings back.
Cheers
Andre -
I really want to have a new Xcode template for Pythonista 3. I realize that I've already bought Pythonista so I'm not generating new income for @omz.... so I hereby pledge to send money via Paypal/Zelle (or any other method) to @omz to help support his time for the production of a new Xcode template. I'd gladly pay $25 for a new template. I'd even pay this annually if it would be updated regularly.
Thoughts anyone? @omz?? How can we help get a new Xcode template made?
-
@TheRealBret Good news!
@omz said:Here's a first attempt at a Python 3-based Xcode template: https://www.dropbox.com/s/5l94m0xjbot5je0/Pythonista3AppTemplate.zip?dl=1
This is roughly equivalent to the current App Store version (not the 3.3 beta), and not final, just something to play around with for people interested in the Xcode template. Let me know if anything's unclear.
-
Indeed - I’m very happy to see the new template. Thank you!
My offer still stands - I would like a way to give a donation to @omz to help offset continued development of Pythonista. I can’t see how my payment a year ago is helping today.
-
Is it possible for someone to upload a version of the template for python3 with the fix to include the line at the top of all the files already done? I am having lots of trouble doing it myself.