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 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