Error and unable to receive Revit -> GH / Rhino

When I try to receive a stream from Revit into GH or Rhino I get an error and nothing is received.

Another colleague whom tested the latest got the same error. We are investigating further, but I thought it would be good to share to hopefully get it resolved faster. Any idea what the issue could be? And are others experiencing this as well?

The error:

  1. A deserialization error has occurred: No parameterless constructor defined for this object.: No parameterless constructor defined for this object.

It is possible to receive a Revit stream in Excel.

I tried installing the latest releases. Revit 2.6.1, GH 2.6.1 and Rhino 2.6.2 https://speckle-releases.netlify.app/ and testing on the xyz server with this stream: Speckle
But I get the same result.

I also gave Python a try and used the receive script from the Speckle examples repo and got the following error on line 36 (speckle-examples/01_send_receive.py at main · specklesystems/speckle-examples · GitHub) :

Traceback (most recent call last):

  File "C:\Python\py-example-receiving.py", line 50, in <module>
    received_base = operations.receive(obj_id=objHash, remote_transport=transport)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\api\operations.py", line 70, in receive
    return serializer.read_json(obj_string=obj_string)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 242, in read_json
    return self.recompose_base(obj=obj)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 300, in recompose_base
    base.__setattr__(prop, self.handle_value(value))

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 321, in handle_value
    obj_list = [self.handle_value(o) for o in obj]

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 321, in <listcomp>
    obj_list = [self.handle_value(o) for o in obj]

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 335, in handle_value
    return self.recompose_base(obj=obj)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 300, in recompose_base
    base.__setattr__(prop, self.handle_value(value))

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 335, in handle_value
    return self.recompose_base(obj=obj)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 300, in recompose_base
    base.__setattr__(prop, self.handle_value(value))

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 335, in handle_value
    return self.recompose_base(obj=obj)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 300, in recompose_base
    base.__setattr__(prop, self.handle_value(value))

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 335, in handle_value
    return self.recompose_base(obj=obj)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\serialization\base_object_serializer.py", line 284, in recompose_base
    base.__setattr__(prop, value)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\objects\base.py", line 208, in __setattr__
    attr.__set__(self, value)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\objects\base.py", line 313, in units
    self._units = get_units_from_string(value)

  File "C:\ProgramData\Anaconda3\lib\site-packages\specklepy\objects\units.py", line 31, in get_units_from_string
    unit = str.lower(unit)

TypeError: descriptor 'lower' for 'str' objects doesn't apply to a 'NoneType' object
1 Like

Hey @JdB, I think someone else reported a similar issue yesterday.

Not sure what went wrong there. Is the stream public?

I’ll give this a go in a bit to figure out the root cause

Thanks! I made it public (Link sharing on) and made you owner Speckle

1 Like

Quick update…

I think we’ve stepped on our own toes on this one!

A new Revit feature contributed by a community member (and expected to go into the 2.7 release), made it’s way into the 2.6.2 release of Rhino and the 2.6.1 release of Revit.

I’m working on a fix right now and we’ll publish an emergency release ASAP.

2 Likes

Hey @JdB,

could you check out the new 2.6.3 release? Hopefully you’ll find it fixes your issue!

We’ve made it for all connectors so make sure you have them all in the same version :raised_hands:

Do let us know how it goes :slight_smile: and thanks for reporting the :boom:

2 Likes

I forgot to ping @izzylys with the python stuff, I haven’t checked that yet.

Awesome! That appears to be fixing it. Thank you for fixing it so quickly!

Any idea how we could prevent issues like these in the future? It took us a couple of days before we stumbled on this issue since we are currently focusing on other areas.
Not sure how hard and useful it would be to setup automated testing procedures that create a stream in several software packages and receive them in several other.

:+1: A sort of Integration-EndToEnd test suite.

We always do thorough testing (although mostly manual) before making a new release but in this case it was purely a human mistake as we triggered 2.6.2 on a a wrong (and untested) branch!
We have already taken steps to make sure it won’t happen again by having a more rigorous release process :+1:

4 Likes