omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    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

    Pythonista
    29
    68
    65788
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • omz
      omz last edited by

      @mrcoxall It looks like you're submitting the app directly from the Xcode organizer? Try exporting the archive first ("for App Store deployment"), and then submit it using the Application Loader tool (right-click Xcode in Dock -> Open Developer Tool...). Not sure if this will actually fix the error, but I've seen similar problems in the past that only happened with Xcode, and not with Application Loader.

      mrcoxall marcus67 2 Replies Last reply Reply Quote 0
      • polymerchm
        polymerchm last edited by

        @omz Based on my experiments, am I correct in assuming that the template only has the 2.7 interpretor? Any hope the the 3.5/3.6 template will be forthcoming? I am learning swift just in case.

        1 Reply Last reply Reply Quote 1
        • mrcoxall
          mrcoxall @omz last edited by

          @omz I tried as you suggest and used the Application Loader. Same problem happening. Still getting code signing errors. Have tried using "Auto code signing" and even old school downloading the certificate myself and still getting the same messages.
          Have you been able to get anything uploaded to the App Store?
          Do you have a template that I could try?

          Thanks

          1 Reply Last reply Reply Quote 0
          • mrcoxall
            mrcoxall last edited by

            Wondering if anyone has been able to submit an app successfully since Jan 1, 2017.
            I still am getting signing errors and have no workaround that will work.
            I have app waiting to get approved and need a solution.

            Thanks

            1 Reply Last reply Reply Quote 0
            • JonB
              JonB last edited by

              Have you tried the recommendations here?
              http://stackoverflow.com/questions/39889093/itunes-software-service-authentication-error-domain-error-434

              1 Reply Last reply Reply Quote 0
              • kyelewis
                kyelewis last edited by

                I know this is an older thread, but I just wanted to confirm that with the texinfo fix, I have successfully submitted and had an app approved in the last few days.

                So the fix is required to get past the automatic filter, but submission is OK with the workaround.

                1 Reply Last reply Reply Quote 1
                • marcus67
                  marcus67 @omz last edited by

                  @omz Getting back to the question of @polymerchm : Is it possible to run python3 in Xcode? Using a she-bang line like "#! python3" does not work. sys.version still returns "2.7.5 (default, Feb 15 2016, 15:15:36)". Thanks!

                  1 Reply Last reply Reply Quote 0
                  • omz
                    omz last edited by

                    @marcus67 It's currently not possible, I'm afraid.

                    1 Reply Last reply Reply Quote 0
                    • mrcoxall
                      mrcoxall last edited by

                      @omz Thanks for getting back to me.

                      I was wondering if there is any explanation on why it is no longer possible?
                      I used Pythonista last year with my grade 11 programming course and got over a dozen apps published on the App Store. I have just started using it again with this years group and told them we will be doing the same thing. If there is anything I can do to help the process along, please let me know. We will not be starting to write the final apps until December.

                      Thanks

                      1 Reply Last reply Reply Quote 0
                      • JonB
                        JonB last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • JonB
                          JonB last edited by

                          @mrcoxall Did youthe texinfo trick? Sounds like @kyelewis got something submitted in january or february.

                          TheRealBret 1 Reply Last reply Reply Quote 0
                          • TheRealBret
                            TheRealBret @JonB last edited by

                            @JonB The texinfo trick continues to work. Had an app accepted just last week.

                            1 Reply Last reply Reply Quote 0
                            • ccc
                              ccc last edited by ccc

                              Would it be possible to create a repo or a page on Pythonista-Tools that could be a FAQ for using the template? It seems like there are several prereqs and then several steps to complete the process and it would be great to have a landing page for sharing all that tribal knowledge.

                              1 Reply Last reply Reply Quote 0
                              • TheRealBret
                                TheRealBret last edited by

                                I spoke too soon. I had to upgrade Xcode because of iOS11 compatibility, and now I'm back to getting the code signing errors for all the .py files, even if they have the texinfo header. Building apps for local distribution works fine, I just can't sign the code as part of the validation process for the App Store.

                                TheRealBret 1 Reply Last reply Reply Quote 0
                                • TheRealBret
                                  TheRealBret @TheRealBret last edited by TheRealBret

                                  Looks like the texinfo hack needs to be modified. The code signing process uses file(1) to check the type of file in the package, and file(1) identifies executable code by checking against different file types and scoring each file type. Apple modified the matching "magic" for python to look for python keywords like "def", "import", "try", "except", etc and each use gives a higher score to python. So for the tex info hack to work, it needs to occur more frequently than the python keywords. Some files just need a single texinfo line; other files need 400+ copies of the texinfo line (some of the python checks only examine the first 4096 characters of the file). Its easy to modify the script above to accomplish this, but hardly elegant.

                                  Hopefully somebody will find this useful and find a simple fix.... like perhaps there's another file type that short-circuits the checking magic? Also, the Apple developer documentation say that script files could go into a specially named subfolder, which would be much simpler, but I've haven't gotten this to work.

                                  1 Reply Last reply Reply Quote 0
                                  • JonB
                                    JonB last edited by

                                    out of curiosity, is file used locally, or on the server?
                                    Couldn't you use th older file version for identifying text files?

                                    ritanari31 1 Reply Last reply Reply Quote 0
                                    • jumpbeen
                                      jumpbeen last edited by

                                      @JonB said:

                                      out of curiosity, is file used locally, or on the server?

                                      Yes, It's locally.
                                      @TheRealBret
                                      You can replace older version of 'usr/bin/file' and 'usr/share/file' to fix it, if your mac os version has updated to 10.13.

                                      1 Reply Last reply Reply Quote 0
                                      • TheRealBret
                                        TheRealBret last edited by

                                        Thanks. Will give it a try and test an upload to TestFlight too.

                                        1 Reply Last reply Reply Quote 0
                                        • sreyemnayr
                                          sreyemnayr last edited by sreyemnayr

                                          Here's the re-worked script, which throws as many of those dummies at the top of each file as it needs to stop the madness.

                                          EDIT: There are some problems with this method as well, as it bounces the lines indicating the encoding style, which breaks a bunch of stuff... I ended up having to regex replace them back to the top, but will work this script out to do it better later. Just be aware that this will happen!

                                          # Change these:
                                          pylib_path1 = '/path/to/PythonistaKit.framework/pylib'
                                          pylib_path2 = '/path/to/PythonistaKit.framework/pylib_ext'
                                          
                                          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):
                                              with open(file_path, 'r') as f:
                                                  source = f.read()
                                              with open(file_path, 'w') as f:
                                                  f.write('#\input texinfo\n' + source)
                                              is_executable, out = check_is_executable(file_path)
                                              return not is_executable
                                          
                                          def fix_pylib(pylib_path, dry_run=False):
                                              for path, dirs, files in os.walk(pylib_path):
                                                  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 == '.py' or extension == '.pym' or filename == 'command_template':
                                                              if dry_run:
                                                                  print '### Executable found: %s' % (filename,)
                                                              else:
                                                                  print 'Fixing %s...' % (filename,)
                                                                  fixed = False
                                                                  counter = 0
                                                                  while not fixed:
                                                                      fixed = fix_executable(full_path)
                                                                      counter = counter + 1
                                          
                                                                  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)
                                              fix_pylib(pylib_path2)```
                                          1 Reply Last reply Reply Quote 0
                                          • peterdougstuart
                                            peterdougstuart last edited by

                                            Hi @sreyemnayr, just tried your script, but still getting an error on upload to app store. Any other ideas or refinements to your script?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors