Week 5: A merging week
Coming to this week, it’s mostly been getting a huge chunk of my work ready to be merged and finally getting it merged.
In the last meeting, my mentor - Micheal mentioned the plans for releasing the next version of CWL Specification v1.0.1 as a “errata / clarification” spec revision to be released by the end of the July and resultantly, cwltool will be modified heavily in the process.
Thus, it was important to start getting everything merged.
I started out by merging my two separate branches mypy_updates and modernize and pulling upstream changes and fixing merge conflicts. Micheal was quick enough to respond and we finally got my schema_salad PR merged mid-week. Happy to share that we have started using Python 3 compatible schema_salad v2.6 in cwltool now.
As discussed in the previous blog post, using unicode_literals had its benefits but it was breaking mypy badly. The problem mainly emerges from the fact that many typeshed stubs only accept str when ascii-only unicode values also work at runtime with Python 2.7 stdlib. This causes a lot of problems with code using unicode_literals since generally, most literals will have unicode as their type due to the __future__ import.
I had previously reported the errors related to it here and very recently mentioned it again. This time around Guido himself replied:

I discussed the same with Micheal, and we decided on dropping unicode_literals.

You can read more about the mypy errors due to unicode_literals at: mypy/issues/3619 and mypy/issues/1954
This meant changing mypy annotations again and fixing up things. Luckily, it didn’t take much time and I finally got my PR for cwltool ready by the weekend. We plan on getting it merged early this week.
This marks a lot of compatibility code merged and ready to be used in production. I am targeting on getting Apache Avro issues resolved soon which is the only major bottleneck that remains on the road to Python 3 now.