When The __future__ Becomes The Present; Dropping Python 2 Support In A Commercial Client

A presentation at PyCon Nove in April 2018 in Florence, Metropolitan City of Florence, Italy by Aaron Bassett

Slide 1

Slide 1

Slide 2

Slide 2

@judy2k

Slide 3

Slide 3

@aaronbassett

Slide 4

Slide 4

@NexmoDev

Slide 5

Slide 5

@NexmoDev

Slide 6

Slide 6

@NexmoDev

Slide 7

Slide 7

@NexmoDev

Slide 8

Slide 8

Not Pythonic @NexmoDev

Slide 9

Slide 9

Slide 10

Slide 10

__Private_not_Private @NexmoDev

Slide 11

Slide 11

File structure @NexmoDev

Slide 12

Slide 12

JWT @NexmoDev

Slide 13

Slide 13

@NexmoDev

Slide 14

Slide 14

Keyword only Arguments @NexmoDev

Slide 15

Slide 15

Type hints @NexmoDev

Slide 16

Slide 16

Path Lib Enum etc @NexmoDev

Slide 17

Slide 17

ASYNC @NexmoDev

Slide 18

Slide 18

@NexmoDev

Slide 19

Slide 19

@NexmoDev

Slide 20

Slide 20

@NexmoDev

Slide 21

Slide 21

@NexmoDev

Slide 22

Slide 22

@NexmoDev

Slide 23

Slide 23

Lift Off @NexmoDev

Slide 24

Slide 24

@NexmoDev

Slide 25

Slide 25

I don’t want to have to upgrade @NexmoDev

Slide 26

Slide 26

Why not support both?? @NexmoDev

Slide 27

Slide 27

But I pay your wages!!!! @NexmoDev

Slide 28

Slide 28

But my BOFH won’t install Python 3 @NexmoDev

Slide 29

Slide 29

@NexmoDev

Slide 30

Slide 30

Python client 1.x LTS version No new endpoints Bug / security fixes only @NexmoDev

Slide 31

Slide 31

Set an EOL date @NexmoDev

Slide 32

Slide 32

Notify users (well in advance) Blog / Twitter / Email Shout it from the rooftops! @NexmoDev

Slide 33

Slide 33

Deprecation Warning “Warning messages are typically issued in situations where it is useful to alert the user of some condition in a program, where that condition (normally) doesn’t warrant raising an exception and terminating the program. For example, one might want to issue a warning when a program uses an obsolete module.” @NexmoDev

Slide 34

Slide 34

Dealing with holdouts @NexmoDev

Slide 35

Slide 35

@NexmoDev

Slide 36

Slide 36

Respect user's time, make it easy to upgrade Keeping DRY with code generation Add support for sync and async Adopt latest best practices @NexmoDev

Slide 37

Slide 37

@NexmoDev

Slide 38

Slide 38

Slide 39

Slide 39

Slide 40

Slide 40

Slide 41

Slide 41

Still WIP (but it’s on GitHub nexmo/nexmo-python) @NexmoDev

Slide 42

Slide 42

@NexmoDev