Arctic, a high performance datastore for timeseries and tick data, is now available with Python3 support! I've spent the last six weeks working on all the changes that made this possible. It was quite an adventure, so to speak, as I have never tried to provide 2.7 and 3.3+ support for anything in Python. Most projects I've worked on have been one or the other. Open source tends to lean towards 3.3+ and the places I've worked have all preferred 2.7 (for various reasons). I learned a few things along the way that are worth sharing:

  • Six is your friend. This library was extremely instrumental in supporting 2.7 and 3.3
  • The backport of Mock and the standard library mock are not really compatible. I saw some weird things when using mock in 3.3 when I should have been using unittest.mock
  • Travis is the way to go for projects that support multiple versions. I tried for days to get CircleCI to do this, nothing, including trying with tox, would ever work
  • People really like Python3. Python3 support was the first thing requested by the github community, and there were a lot of interested parties
  • Trying to support Python2 strings in Python3 is a nightmare. Eventually we opted remove Python2 strings and use bytearrays everywhere
  • Stack Overflow can be a huge help. I was able to post a question, and get an answer within 24 hours. I had previously spent countless hours both trying on my own to solve it and scouring Google looking for a solution. Thanks Stack Overflow!

There are a few more projects for Arctic that I'm working on, so stay tuned!