Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for floats? #45

Open
idubz33 opened this issue Dec 15, 2016 · 4 comments
Open

Support for floats? #45

idubz33 opened this issue Dec 15, 2016 · 4 comments

Comments

@idubz33
Copy link
Contributor

idubz33 commented Dec 15, 2016

I've just come across this library and after checking out the documentation at https://digidotcom.github.io/python-suitcase/latest/api.html I was wondering why there isn't support for floats?

@rtzoeller
Copy link
Contributor

Likely because no one had needed them in a use case up until now -- AFAIK, the addition of new field types has largely been on an as-needed basis.

Is there a particular protocol you have in mind that requires floats to be encoded as bytes, as opposed to a text-based implementation?

@idubz33
Copy link
Contributor Author

idubz33 commented Dec 16, 2016

Fair enough, I'm not working with a particular protocol but rather with parsing and repacking some uncommon 3D graphic model files (as you can imagine a lot of vector fields containing floats). Originally I used the struct library which had float support but suitcase is vastly more eloquent... I can't go back :P

I'm not sure what you mean by a text-based implementation, can you please elaborate? If its possible to cover 16/32/64 bit floats I'd be really grateful.

@posborne
Copy link
Contributor

I would accept a PR adding floating point support. You should be able to add basic support easily by using the struct format strings similar to the existing ones like https://github.com/digidotcom/python-suitcase/blob/master/suitcase/fields.py#L1055

@idubz33
Copy link
Contributor Author

idubz33 commented Dec 22, 2016

Sorry to reopen this again but @posborne its seems that the way this package unpacks data can't be done for floats. I'm getting the following error:

  File "/Library/Python/2.7/site-packages/suitcase/fields.py", line 1005, in unpack
    value |= (byte << (i * 8))
suitcase.exceptions.SuitcaseParseError: Unexpected exception while unpacking field 'Rotation_X': unsupported operand type(s) for <<: 'float' and 'int'

The unpack definition would require change to allow floats https://github.com/digidotcom/python-suitcase/blob/master/suitcase/fields.py#L998. Any suggestions?

@idubz33 idubz33 reopened this Dec 22, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants