NASA-AMMOS / aerie-cli

An unofficial CLI for interacting with Aerie planning software
MIT License
3 stars 4 forks source link

Investigate Python 3.6 Compatibility #16

Closed cartermak closed 1 year ago

cartermak commented 1 year ago

Python 3.6 compatibility would reduce a lot of installation/virtual environment complexity for hosts where Python 3.6 is default. I originally dropped this idea because Python dataclasses, a core piece of the way Aerie CLI handles data, were only introduced in Python 3.7. However, Pydantic has a drop-in replacement for dataclasses and Version 1.9.2 supports Python 3.6 officially.

This would also enable us to replace dataclasses_json, which is not as well-supported/popular as Pydantic.

cartermak commented 1 year ago

The pandas dependency will need to be rolled back to Version ^1.1.5 (released in 2020) which is the last version that supported Python 3.6.

cartermak commented 1 year ago

The so-called drop-in replacement for dataclasses turns out to not be what it's made out to be. I can't get it to play nice with non-standard field types and/or the dataclasses_json package's config encoder/decoder mechanism. So the problem persists of finding a nice way to handle (de)serialization.

cartermak commented 1 year ago

32 should solve the biggest problem here by replacing dataclasses with attrs. Outstanding work to go is testing with 3.6 and catching any other issues there.