Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    pydsfapi [v3.2.0] - Official Python Client Library for DSF

    Scheduled Pinned Locked Moved
    DSF Development
    6
    51
    3.1k
    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.
    • wilrikerundefined
      wilriker @achrn
      last edited by

      @achrn Thanks for re-reporting. I know then what the problem is. I just could not reproduce it on my setup.

      I already have a solution that I will provide tomorrow. But I need to find a way to make it more efficient. That will be part of the 3.2 release.

      Manuel
      Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
      with probably always latest firmware/DWC (incl. betas or self-compiled)
      My Tool Collection

      1 Reply Last reply Reply Quote 1
      • wilrikerundefined
        wilriker
        last edited by

        Release 3.1.3

        This is another bugfix release to solve the problem if message in (primarily in Subscription mode) are received faster than they are processed it would lead to JSON parser errors.

        It can be found as usual on GitHub Releases page.

        Thanks again to @achrn for reporting.

        Manuel
        Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
        with probably always latest firmware/DWC (incl. betas or self-compiled)
        My Tool Collection

        achrnundefined 1 Reply Last reply Reply Quote 0
        • achrnundefined
          achrn @wilriker
          last edited by

          @wilriker Has the type of the MachineModel type that subscribe_conenction.get_machine_model() returns changed?

          My scripts that previously did that then e.g. for h in machine_model['heat']['heaters'] are suddenly reporting TypeError: 'MachineModel' object is not subscriptable.

          (This might have been a change in 3.1.2 - I had thought I installed 3.1.2, but when I installed 3.1.3 it suggested it was replacing 3.1.1).

          wilrikerundefined 2 Replies Last reply Reply Quote 0
          • wilrikerundefined
            wilriker @achrn
            last edited by

            @achrn I have noticed something similar but TBH I have no idea what is going on here. Nothing has changed in regards to this but still it is no longer working. I have to investigate that.

            Which python version are you using?

            Manuel
            Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
            with probably always latest firmware/DWC (incl. betas or self-compiled)
            My Tool Collection

            achrnundefined 1 Reply Last reply Reply Quote 0
            • achrnundefined
              achrn @wilriker
              last edited by

              @wilriker Wow that was quick!

              It occurred to me I could check for myself when the change happens - it does change between 3.1.1 and 3.1.2 and if I roll back to 3.1.1 my scripts start working again - MachineModel is subscriptable in 3.1.1, but not in 3.1.2 and 3.1.3.

              Having looked at the diff on GitHub 3.1.1 - 3.1.2 I can't see why the changes would change what gets returned (apart from let it be longer). As far as I can see teh changed def receive_json(self): was returning a str and is still returning a str.

              My Python is 3.7.3

              wilrikerundefined 1 Reply Last reply Reply Quote 0
              • wilrikerundefined
                wilriker @achrn
                last edited by

                @achrn Just as an idea, have you removed all .pyc files as well as __pycache__ directories? Just to make sure nothing is stuck in half-way pre-compiled voodoo black-magic bogus.

                Manuel
                Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                with probably always latest firmware/DWC (incl. betas or self-compiled)
                My Tool Collection

                achrnundefined 1 Reply Last reply Reply Quote 0
                • achrnundefined
                  achrn @wilriker
                  last edited by

                  @wilriker I ahdan't, but I was doing pip3 uninstall pydsfapi before each new install.

                  I've tried again - unistall, hunt for any pydsfapi traces and obliterate them (including fo ~/.local/lib/python3.7 where I found a few). I'm not sure I want to remove all __pycache__ and *.pyc - plus it would take a while to hunt them all down. There are no *dsf*.pyc or pydsfapi* (except the .gz I'm installing from) files anywhere on the machine before I do a pip3 install

                  After that, still the same behaviour - MachineModel object is not subscriptable.

                  I have a relatively simple workaround, because if I don't transfer a full model, my first 'patch' gets a whole model. So I can easily change my scripts to start with an empty dict, and use get_machine_model_patch() to obtain a 'patch' containing the whole model (as a nice predictable string). Then I apply that patch to the empty dict, and that gives me a dict of the machine model, and the script proceeds from that point fine.

                  wilrikerundefined 1 Reply Last reply Reply Quote 0
                  • wilrikerundefined
                    wilriker @achrn
                    last edited by

                    @achrn I have a vague theory of what might be the cause for this. But I can probably only test next week.

                    Manuel
                    Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                    with probably always latest firmware/DWC (incl. betas or self-compiled)
                    My Tool Collection

                    achrnundefined 1 Reply Last reply Reply Quote 0
                    • achrnundefined
                      achrn @wilriker
                      last edited by

                      @wilriker No problem - as I say, I've got an easy workaround, so there's not a rush on my account. Thanks.

                      1 Reply Last reply Reply Quote 0
                      • wilrikerundefined
                        wilriker @achrn
                        last edited by

                        @achrn said in pydsfapi [v3.1.3] - Official Python Client Library for DSF:

                        My scripts that previously did that then e.g. for h in machine_model['heat']['heaters'] are suddenly reporting TypeError: 'MachineModel' object is not subscriptable.

                        I see the same problem with 3.1.1. It works for me (both versions) if I use

                        for h in machine_model.heat['heaters']
                        

                        i.e. trying to access heat as a member rather than a dict key.

                        Manuel
                        Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                        with probably always latest firmware/DWC (incl. betas or self-compiled)
                        My Tool Collection

                        achrnundefined 1 Reply Last reply Reply Quote 0
                        • achrnundefined
                          achrn @wilriker
                          last edited by

                          @wilriker said in pydsfapi [v3.1.3] - Official Python Client Library for DSF:

                          It works for me (both versions) if I use
                          for h in machine_model.heat['heaters']

                          Yes, that works for me too in 3.1.3.

                          However, it breaks my patch-applying routine, so I think it's more work for me than my other workaround (at least, for my existing scripts).

                          wilrikerundefined 1 Reply Last reply Reply Quote 0
                          • wilrikerundefined
                            wilriker @achrn
                            last edited by

                            @achrn I don't know why this works for you in 3.1.1 (as it does not for me) but I found a simple way of getting it to work. I would though hold that off for version 3.2.0 because you said you have a working alternative solution.

                            Manuel
                            Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                            with probably always latest firmware/DWC (incl. betas or self-compiled)
                            My Tool Collection

                            achrnundefined 1 Reply Last reply Reply Quote 0
                            • achrnundefined
                              achrn @wilriker
                              last edited by

                              @wilriker said in pydsfapi [v3.1.3] - Official Python Client Library for DSF:

                              I would though hold that off for version 3.2.0 because you said you have a working alternative solution.

                              Yes, no problem for me - I have what I wanted working now, so don't rush on my account.

                              1 Reply Last reply Reply Quote 0
                              • wilrikerundefined
                                wilriker
                                last edited by

                                Release v.3.2.0

                                I am pleased to announce the release of version 3.2.0 of pydsfapi that syncs all the changes introduced with DSF 3.2.x.

                                This release also contains some major contributions and cleanups from @resam, thanks for that!

                                The package can be downloaded as usual from GitHub Releases page but will probably be available to be installed via pip in the future.

                                Manuel
                                Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                                with probably always latest firmware/DWC (incl. betas or self-compiled)
                                My Tool Collection

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Unless otherwise noted, all forum content is licensed under CC-BY-SA