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.


    Beta Status Update

    Pythonista
    32
    124
    161165
    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.
    • polymerchm
      polymerchm last edited by

      Hooked up to my Mac and used XCODE to look for a crash report. None.

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

        (Thought I had posted this before...)

        I manually imported jedi and tried to get a code completion on one of the problematic spots. At some point it ends up in an infinite recursion loop, until the interpreter throws an exception due to exceeding the recursion limit. Why exactly this happens I can't say though.

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

          An off switch would be nice. This was not a problem (in 1.5). @degelessus: Which version of jedi did you try? The installed jedi in 1.6 is 0.9.0. Perhaps a rollback to 0.8.1?

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

            @polymerchm It seems that only crash reports with file names ending in ".ips" are shown in Xcode. Those that have been transferred are renamed on the device to ".ips-transferred" or similar. Those from the Pythonista beta end in ".ips-beta" or so. Fortunately, they call all be viewed on the device, if you go to Settings -> Privacy -> Diagnosis ... -> Diagnosis ... (or something close to that).

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

              @OMZ Do you automatically get crash logs, or can I send them to you? Will sync device tonight and see if I have logs relevant to the autocomplete bug (now that I know where to find them).

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

                I've found an issue where editor.make_new_file() causes the app to crash. It doesn't seem to matter what arguments I pass to it the app just shuts down.

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

                  works fine for me (iOS 8.3, beta 1.6).

                  import editor
                  
                  editor.make_new_file('test.py','this is a test')
                  

                  create a file in the root directory each time its run, adding a number to the end to avoid a duplicate name.

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

                    I love the updates!!! especially tabs and search. Also love the purplish theme. And most of all love the improved traceback readout. And the consolidated keyboard is a great idea.

                    Great job OMZ you've created the premier development platform for (on) iOS!

                    Just an observation - the yellow dot to the left of "Pythonista" under the icon doesn't go away for me. I believe it's supposed to indicate that there's a new version of the app on your device that you haven't opened yet...but I have. Pythonista is the only app I have in test flight so forgive me if I'm wrong - either way sounds like it would be a test flight issue.

                    Also one gripe - if you have a script in the foreground and it runs, you can click the x in the upper right while in console view to stop it. You can't press play(run) from the same place - instead it's a greyed out x and you have to backup to the script to press play again. It wasn't like this in previous versions, and while I can see the logic in making sure you're at the script before you can run it, being able to run a script multiple times while looking at the console without backing out of it is very useful to quickly try code modifications out during development...for me at least. Perhaps a toggle for this functionality deserves to exist in settings?

                    Thanks again.

                    ALSO, since the new version I get this error all the time. Everything still works, but this error shows up in red in the console.

                    D96-4218-87C0-D09DA5054558/Pythonista2.app/pylib/site-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
                      InsecurePlatformWarning
                    
                    1 Reply Last reply Reply Quote 0
                    • ccc
                      ccc last edited by

                      I believe the yellow dot means the app is in testing/beta state.

                      The lack of a run button on the console is explained in the Beta readme and/or in a post above.

                      The insecure platform thing is tied to new security checks in the requests module.

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

                        Just another bug report (maybe it's just me doing everything wrong) for the sk module:

                        Here is the code I'm using:

                        # coding: utf-8
                        
                        import sk
                        import random
                        
                        MAXSPD = 700
                        MAXLIFE = 15
                        TEXTURE = 'shp:Circle'
                        MINLIFED = -350
                        MAXLIFED = 350
                        SCALE = 2
                        
                        decayrate = 0.005
                        collider_f = 0.35
                        
                        def randvec(maxspd):
                            return (random.randint(-maxspd, maxspd), random.randint(-maxspd, maxspd))
                           
                        particle_tpl = sk.SpriteNode(sk.Texture(TEXTURE))
                        particle_tpl.name = 'particle'
                        particle_tpl.color_blend_factor = 1
                        particle_tpl.age = 0
                        particle_tpl.lighting_bit_mask = 1
                        particle_tpl.x_scale = SCALE
                        particle_tpl.y_scale = SCALE
                        particle_tpl.alpha = 0.5
                        particle_tpl.shadow_cast_bit_mask = 1
                        physics = sk.PhysicsBody.circle(particle_tpl.size.x/2 * collider_f)
                        physics.restitution = 1.2
                        physics.affected_by_gravity = False
                        physics.allows_rotation = True
                        physics.mass = 2
                        physics.pinned = False
                        physics.angular_velocity = 0
                        physics.category_bit_mask = 1
                        physics.contact_test_bit_mask = 1
                        particle_tpl.physics_body = physics
                        
                        class Game (sk.Scene):
                            def __init__(self):
                                sk.Scene.__init__(self)
                                self.name = 'scene'
                                self.particles = set()
                                self.img = sk.Texture(TEXTURE)
                                self.maxspd = MAXSPD
                                self.handles_node_touches = False
                                self.maxlife = MAXLIFE * 60  # convert to frames
                                self.selected = None
                                
                                # init walls
                                for y in [768, 0]:
                                    wall = sk.Node()
                                    wall.position = (512, y)
                                    physics = sk.PhysicsBody.rect(1024, 100)
                                    physics.affected_by_gravity = False
                                    physics.allows_rotation = False
                                    physics.restitution = 1.2
                                    physics.pinned = True
                                    wall.physics_body = physics
                                    self.add_child(wall)
                                    
                                for x in [0, 1024]:
                                    wall = sk.Node()
                                    wall.position = (x, 384)
                                    physics = sk.PhysicsBody.rect(100, 768)
                                    physics.affected_by_gravity = False
                                    physics.allows_rotation = False
                                    physics.restitution = 1.2
                                    physics.pinned = True
                                    wall.physics_body = physics
                                    self.add_child(wall)
                                
                                # lighting
                                light = sk.LightNode()
                                light.position = (10, 758)
                                light.shadow_color = (1, 0, 0)
                                light.ambient_color = (0, 0, 1)
                                light.light_color = (0, 1, 0)
                                light.enabled = True
                                light.category_bit_mask = 1
                                light.alpha = 1
                                light.falloff = 0.4
                                light.name = 'light'
                                self.add_child(light)
                            
                            def update(self):
                                for p in self['particle']:
                                    p.age += 1
                                    if p.age >= p.lifespan:
                                        # if exceeded life, reduce alpha by 1
                                        p.alpha -= decayrate
                                        if p.alpha <= 0:
                                            p.run_action(sk.Action.call(p.remove_from_parent))
                            
                            def touch_began(self, node, touch):
                                self.selected = None
                                new = particle_tpl.__copy__()
                                new.position = touch.location
                                new.physics_body.velocity = randvec(MAXSPD)
                                new.color = (random.random(), random.random(), random.random())
                                new.lifespan = self.maxlife + random.randint(MINLIFED, MAXLIFED)
                                #new.z_position = random.randint(0, len(self.get_children_with_name('particle')))
                                self.add_child(new)
                            
                            def touch_moved(self, node, touch):
                                self.touch_began(node, touch)
                            
                            def did_begin_contact(self, collison):
                                # Make the color change on collison
                                collison.body_a.node.color = (random.random(), random.random(), random.random())
                                collison.body_b.node.color = (random.random(), random.random(), random.random())
                        
                        def main():
                            game = Game()
                            scene_view = sk.View(game)
                            scene_view.shows_fps = True
                            scene_view.shows_node_count = True
                            scene_view.present()
                            return game
                        
                        if __name__ == '__main__':
                            g = main()
                        

                        It's similar to the old Particles example, however using physics. I'm running into two problems:

                        1. No matter what I do, I can't make the sk.LightNode() do anything.
                        2. In did_begin_contact, I'm getting the following error:
                        AttributeError: 'NoneType' has no attribute 'color'
                        

                        It says in the docs that the collison.body_a.node attribute should be the node it is attached to, but for me it seems to be just None.

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

                          @misha_turnbull It looks like both issues are caused by bugs in sk.Node.__copy__. Try setting the lighting_bit_mask attribute manually after creating the copy. To make the contact callback work properly, you'd probably need to create a new PhysicsBody instead of relying on the one that gets copied along with the node. I'm looking into this. One other thing: If you want to make your physics bodies "immovable", set dynamic to False instead of pinned to True.

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

                            I must say, after being out of the Python world for a while, this makes me very excited to get back in!!

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

                              @omz There seems to be some issue affecting the canvas module. In both the recent betas (160013 and 160014), your turtle.py example crashes Pythonista immediately. But other simple canvas usage does not. In released versions like 1.5, and the earlier betas, I have only observed canvas crashes when I edited the script while it was running.

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

                                https://github.com/cclauss/pythonista-module-versions is still throwing warnings on requests calls in 160014.

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

                                  @ccc I mentioned in the release notes why I rolled back to an older version of requests.

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

                                    I read that but Pythonista_module_versions.py is still throwing warnings like it would if you did NOT roll back the version of requests.

                                    Requests is indeed fairly current according to Pythonista_module_versions.py:

                                    | module        | local    | PyPI       |
                                    | name          | version  | version    |
                                    | ------------- | -------- | ---------- |
                                    | requests      | 2.6.0    | 2.6.2      |
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • omz
                                      omz last edited by

                                      Hmm, looks like something went wrong in my deployment script, should be 2.5.1.

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

                                        This has been a problem for a looong time, but I never got around to reporting it: in the interpreter input field you cannot use the tab key on an external keyboard. It probably tries to switch to the next input field instead, which does nothing, because there is no other input field.

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

                                          P.S. No Watch folder. Not that I am buying a watch. I did the Testflight install over the previous beta, not fresh.

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

                                            misha,
                                            regarding your issue.
                                            new = particle_tpl.copy() #does not correctly copy the physics body.
                                            new.physics_body = particle_tpl.physics_body.copy() #should fix your problem.

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