Skip to content

Tutorials

Steffen Zieger edited this page Nov 19, 2017 · 219 revisions

Sign Up For Tutorials

The tutorials at PyCon Canada have a limited capacity of up to 60 people. If you're interested in attending one of the PyCon Canada tutorials, please sign-up in advance below. You can sign up by clicking the "edit" button in the top right of this page, and adding your name to the lists. If you do not have access to edit this page, please send us an email at speakers@pycon.ca Note that you must already have a ticket to PyCon Canada 2017 to attend.

We will also be using this list to send out any tutorial requirements (things that you should have installed on your laptop before arriving at the tutorial).


Writing tests that write themselves

David Kua

Saturday, November 18th, 2017 at 11:10 a.m.

Property-based testing is a powerful method of generating test cases from properties of your code. With a few lines of code you can have tests that create and test hundreds of examples and can catch edge cases in your code that you weren't even aware of. Originally only available for Haskell developers via the QuickCheck library, property-based tests can now be written in a variety of languages including Python. In this tutorial you will learn about the basics of property-based testing and how to get started writing property-based tests using the Python library Hypothesis. You will also learn how to add and use property-based tests alongside other tests in your existing codebases.

Software requirements:

To follow along, attendees will need working knowledge of Python and a laptop with Python 2.7+, pytest, and Hypothesis.

Add your name here:

  1. Danial Gagne
  2. Ke Sun
  3. Steven Seguin
  4. François Leblanc
  5. Renaud Grandjean-Joyeux
  6. Ankit Mittal
  7. Hoa Du
  8. Keefer Rourke
  9. Dan Gale
  10. David Ward
  11. Ihtisham Mazhar
  12. Nadia Tahiri
  13. Cam Guinemer
  14. Paul Gamble
  15. Victoria Powell
  16. Nik Sieber
  17. Darrell Aucoin
  18. Abbas Taher
  19. Diana Gil
  20. Emeric Vigier
  21. Erik Hauner
  22. Jason Bernhardt
  23. Ludovic Demers
  24. Nathan Blok
  25. Tim Fenwick
  26. Christine Gibson
  27. Roberta Voulon
  28. Steve Jackson
  29. Emmanuel Thompson
  30. Wajdi Al-Hawari
  31. Nitesh Arora
  32. Trish Gillett
  33. Phil Isaac
  34. Obiamaka Agbaneje
  35. Annaelle Duff
  36. Mohamed Konate
  37. khaled kachkorian
  38. Yann Parizeau
  39. David Côté
  40. Deept Ijoshi
  41. Ahmad Akkaoui
  42. Alexandre Tremblay
  43. Seak Pek Chhan
  44. Ghislain Bourgeois
  45. Joshua Butler
  46. Mark Iantorno
  47. Dhia Ayachi
  48. Saida Khazri
  49. Michael Mulley
  50. Olesya Baranova
  51. François Lefebvre
  52. Oleksandr Huziy
  53. Ricardo Lima
  54. Douglas Soares de Andrade
  55. Ai O
  56. Timothée Faucon
  57. Paul Morelle
  58. Javier Ramirez Martinez
  59. Gary Graham
  60. Amy Wooding
  61. Mohamed Kerbachi
  62. Ahmed Belgana

Python can do that? Building cross-platform graphical tools for Android and iOS with Kivy

Stephen Astels

Saturday, November 18th, 2017 at 2:20 p.m.

As developers at Learn Leap Fly, we have been using Python and Kivy to make innovative educational apps that run on Android and iOS devices. Along the way we have had to create tools to help us, for example, manage our library of sound and graphics assets. The Kivy library let us quickly create graphical tools for whatever task we needed to solve. We could then deploy them on Android and iOS for our team members for whom the instruction “You’ll need to pip install ...” would seem like gibberish.

In this tutorial we will describe our experiences with Kivy, with a focus on rapid tool development, and guide the audience through the creation of a simple multi-platform graphical tool.

Software requirements

  • The tutorial will be using python 2.7. Alternatively, Kivy mostly works with Python 3. Mostly.
  • You will need Jupyter Notebook and Kivy, as well as the notebooks and example data here.
  • Easiest way to install Jupyter Notebook is by installing Anaconda
  • NOTE that there is a bug in the current release of Kivy that might crash the install. Luckily the bug has already been fixed in the development (master) branch. I would recommend:
    • install Anaconda
    • create a conda environment (conda create --name myenv)
    • activate the environment ("source activate myenv" on macOS/Linux, Windows is a bit different)
    • install Kivy's dependancies as described on the Kivy Homepage but DON'T do the final "pip install kivy"
    • install the development branch of Kivy (pip install http://github.com/kivy/kivy/archive/master.zip)
  • (Optional) We will show how to build Kivy apps for iOS. To do this yourself requires a Mac and the kivy-ios package.

Add your name here:

  1. Danial Gagne
  2. Radu Raicea
  3. Shawn Elbaz
  4. Keefer Rourke
  5. Ihtisham Mazhar
  6. Nadia Tahiri
  7. Talha Mirza
  8. Paul Gamble
  9. Victoria Powell
  10. Franco Saliola
  11. Susie Saliola
  12. Paul Pype
  13. Erik Hauner
  14. Jason Bernhardt
  15. Christopher Palazzolo
  16. John Palazzolo
  17. Andrew Francis
  18. Max Humber
  19. Yinyi Hu
  20. Steve Jackson
  21. Emeric Vigier
  22. Alejandra Cabrera
  23. Sean Casey
  24. Vincent Lizotte
  25. Oleksandr Huziy
  26. Timothée Faucon
  27. Pierre Paul Lefebvre
  28. Joel Babcock
  29. Derrick Yang
  30. Jen Garner
  31. Félix Antoine Goudreault
  32. Cody Antunez
  33. Jonathan Dundas
  34. Patricia Campbell

Simple made easy 2: a new infrastructure for microservices

Steve Jackson

Sunday, November 19th, 2017 at 11:50 a.m.

This tutorial illustrates how self-trained “citizen programmers” can employ Python to create exactly the Microservices they need and want. This empowers the stakeholders, and eases many of the cultural problems that so often bring conflict in software development work. The DSI methodology is inherently Agile, because it naturally supports the 12 Principles (without scrums, kanbans, standups, or micro-managing) DSI systems can be built so as to expose just a tiny attack surface. Disaster recovery based on immutable data storage can be engineered into each design. DSI is ideal for IoT data sources. Development of the microservices can proceed in parallel, in remote shops. Late-arriving change orders are not disruptive.

Software requirements

None. Just bring your curiosity.

Add your name here:

  1. Mafinar Khan
  2. Renaud Grandjean-Joyeux
  3. Danial Gagne
  4. Keefer Rourke
  5. Nadia Tahiri
  6. Cam Guinemer
  7. Serge Basso
  8. Paul Gamble
  9. Victoria Powell
  10. Nik Sieber
  11. Abbas Taher
  12. Erik Hauner
  13. Jason Bernhardt
  14. Jim Matchett
  15. Nathan Blok
  16. Tim Fenwick
  17. Yinyi Hu
  18. Roberta Voulon
  19. Josh Baker
  20. Philippe Casgrain
  21. Marc-Antoine Parent
  22. Nitesh Arora
  23. Phil Isaac
  24. Gary Graham
  25. Dhia Ayachi
  26. Dan Gale
  27. Saida Khazri
  28. Douglas Soares de Andrade
  29. köusu
  30. Mohamed Kerbachi
  31. Ahmed Belgana
  32. JPLemelin
  33. Francis Bolduc
  34. Joshua Butler
  35. Andrew Jenssen
  36. Jean-Philippe Mallette
  37. Yanis Medjkoune
  38. Jean-Paul Fiorini
  39. Ryan Sampana
  40. Kojo Idrissa
  41. Zachary Bergeron
  42. Gabriel Provencher
  43. Shaun Hamelin-Owens
  44. Timothée Faucon
  45. Tristan Lescut

Matplotlib custom tools universe

Federico Ariza

Sunday, November 19th, 2017 at 1:55 p.m.

The tool API

  • Discover the new ToolManager capabilities and how does it handle tools.
  • Explore tool classes and see how easy is to create new tools to handle your specific needs

The work

We will not go to the moon (only 60 minutes), but you will do the basics so you can go on your own.

  • Remove the clutter from the plot Toolbar and customize it to fit your needs (or my needs since I'm the one teaching).
  • Create a tool to toggle legend visibility
  • Add a tool for line color changing
  • What about a tool for hiding/showing different lines?
  • Get you started with your own tools

Software requirements

  • Upstream version of matplotlib (master from github) installed and running
  • GTK3 or Tk backends working (prefereably GTK3)
  • Make sure the example matplotlib/examples/user_interfaces/toolmanager_sgskip.py works

Add your name here:

  1. François Leblanc
  2. Andry Randriamoeliarivony
  3. Ankit Mittal
  4. Hoa Du
  5. Dan Gale
  6. Jonathan Deng
  7. Cam Guinemer
  8. Allen P. Doss
  9. Darrell Aucoin
  10. Usama Mostafa
  11. Dilhan Tanir
  12. John Harrigan
  13. Nassim Tabet
  14. Miti Modi
  15. Asieh Harati
  16. Erik Hauner
  17. Elvin Cordero
  18. Ian Flores
  19. Karim Yacout
  20. Sepideh Ghafouri
  21. Martin Denault
  22. Emmanuel Thompson
  23. Mohamed Kerbachi
  24. Ahmed Belgana
  25. Félix Antoine Goudreault
  26. Jean-Philippe Mallette
  27. Felix Archambault

Thinking in GraphQL with Python

Mafinar Khan

Sunday, November 19th, 2017 at 3:40 p.m.

GraphQL is a query language that facilitates data centric communication between clients and servers. It is designed to be language agnostic, and there is one or more implementations of it in almost all major languages. In this tutorial, I will focus on API designining with GraphQL through Python.

I would start off with introducing the concept of GraphQL, why was it made and what are the more natural type of problems it tries to solve. It will be followed by presentation of some minor use cases and how an API designer would go on thinking about the design. How Python and GraphQL come together and an introduction to the Graphene work-flow will precede the longest part of the tutorial, developing a real life Asset Tracking API with Django and Graphene. I had created RESTful asset tracking systems with Django few years back. I intend to create a similar and simplified version through GraphQL and explain every step along the way, with relevant and neutral experience comparisons when needed. My main focus will be on three "How to"-s in descending order of emphasis: i) How to Think, ii) How to Create, iii) How to Test.

Anyone with the knowledge of Python and web development with it would feel comfortable with the contents covered.

Software requirements

  • A system with Python 2.7+ and pip
  • We will be installing the following libraries during the tutorial
    • Django
    • graphene-django
  • During the tutorial, please go to this live link on your computer so that you can see the live slides while I can focus on writing on the board.
  • This repository will be used for the demo app.

Add your name here:

  1. Ke Sun
  2. Myles Braithwaite
  3. Cam Guinemer
  4. Serge Basso
  5. Paul Gamble
  6. Victoria Powell
  7. Nik Sieber
  8. Darrell Aucoin
  9. Abbas Taher
  10. Iruoma Nwabuzor
  11. Kyle Connolly
  12. Miti Modi
  13. Erik Hauner
  14. Jason Bernhardt
  15. Tim Fenwick
  16. Jens Nistler
  17. Elvin Cordero
  18. Cedric Jolly
  19. Ian Flores
  20. Yinyi Hu
  21. Brad Dillon
  22. Christine Gibson
  23. Michael Mulley
  24. Andre Prado
  25. Roberta Voulon
  26. Anarosa Paredes
  27. Emmanuel Thompson
  28. Andres Roget
  29. Marc-Antoine Parent
  30. Obiamaka Agbaneje
  31. Mohamed Konate
  32. Alejandra Cabrera
  33. Sean Casey
  34. Joshua Butler
  35. Vincent Lizotte
  36. Ricardo Lima
  37. Saida Khazri
  38. Douglas Soares de Andrade
  39. Ai Onda
  40. Timothée Faucon
  41. Paul Morelle
  42. Gary Graham
  43. Mohamed Kerbachi
  44. Ghislain Bourgeois
  45. Éric Saulnier
  46. Benoit Paquet
  47. JPLemelin
  48. Francis Bolduc
  49. Yanis Medjkoune
  50. Ryan Sampana
  51. Jean-Paul Fiorini
  52. Gabriel Provencher
  53. Shaun Hamelin-Owens
  54. Pascal de Ladurantaye
  55. Thomas Kearvell
  56. Alexandre Tremblay
  57. Ankur Taxali
  58. Nicolas Leblanc
  59. Mounir Messelmeni
  60. Jens Nistler
  61. Steffen Zieger