List of videos

Serge Sans Paille - Tooling for Static Analysis of Python Programs

"Tooling for Static Analysis of Python Programs EuroPython 2020 - Talk - 2020-07-24 - Brian Online By Serge Sans Paille In spite of the dynamic nature of their favorite language, some Python developer have a huge desire to statically analyse it. This can indeed be useful for linters, type inference, auto-completion and all the tooling some developers expect from modern IDE. We all know that lazy binding prevents even the simplest function call or attribute lookup to be reliably analyzed. Yet we try. And Python as this fabulous codeast/code module, saving us from writing a parser! Isn't that a strong incentive to do static analysis? This talk presents two modules developers can build upon to build such analyzers: precode- gast, a generalization of the Python AST that provides a common API for all the variant of the Python AST, from python 2.7 to Python 3.8 - beniget, an analyzer of the Python AST (built upon gast) that provides a useful and well-known abstraction to understand programs: use-def chains /code/pre Built upon these two modules, memestra is a static analyzer of deprecated function calls, developed in partnership with QuantStack. A tool which, given a module, reports any use of deprecated APIs. Let's explore how such a module can be built and unveil the mysteries of static analysis. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2020.europython.eu/events/speaker-release-agreement/ "

Watch
James Ing Wei Tang - Honey, There Is a Python in My Android Phone!

"Honey, There Is a Python in My Android Phone! EuroPython 2020 - Talk - 2020-07-23 - Ni Online By James Ing Wei Tang This is a small code snippet that I have written in Python for the POC of getting the GPS coordinate from android phone: import androidhelper import json import time from bottle import Bottle, run, response, request app = Bottle() droid = androidhelper.Android() @app.route(""/location"") def get_location(): precodedroid.startLocating() droid.eventWaitFor('location', 12500) time.sleep(0.1) current_location = droid.readLocation().result if not current_location: current_location = droid.getLastKnownLocation().result droid.stopLocating() response.content_type = ""application/json"" return json.dumps( ""result"": current_location , indent=4 ) /code/pre This project was initiated during my Christmas vacation, inspired by Android Barcode Scanner as I was looking on the solution that I could catalogue my books by scanning the ISBN using android phone. This quick solution did save me enormous amount of time in cataloguing my books. Intriguing by the design of APIs that can interact with android intents, I decided to dig further to understand how the APIs works. In concept, there is an RPC call between android app and python interpreter within the app that acts as a bridge, which allows python APIs to trigger Android intents, upon calling related APIs. For example, using the code snippet above, when Python GPS API is executed, the API will send request to Android GPS intent via the RPC call. Once Android intent receives the request, it will grab the GPS data, and passes the GPS data back to Python GPS API through the same channel. Reference: python-for-android Qpython Android Barcode Scanner License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2020.europython.eu/events/speaker-release-agreement/ "

Watch
EuroPython 2020 - Lightning Talks 07/24

"Lightning Talks 2 EuroPython 2020 - - 2020-07-24 - Microsoft Online License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2020.europython.eu/events/speaker-release-agreement/ "

Watch
EuroPython 2020 - Closing Session

"Closing Session EuroPython 2020 - - 2020-07-24 - Microsoft Online License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2020.europython.eu/events/speaker-release-agreement/ "

Watch
Europython 2021 - Opening Session Conference

Opening Session - Conference [EuroPython 2021 - - 2021-07-28 - Optiver] [Online] License: This video is licensed under the CC BY-NC-SA 4.0 license: https://creativecommons.org/licenses/by-nc-sa/4.0/ Please see our speaker release agreement for details: https://ep2021.europython.eu/events/speaker-release-agreement/

Watch
Pablo Galindo Salgado - Nobody expects the Spanish inquisition

Nobody expects the Spanish inquisition [EuroPython 2021 - Keynote - 2021-07-28 - Optiver] [Online] By Pablo Galindo Salgado In this talk I will go into some interesting stories of how (C)Python is made. We will go through a journey that will show you how Python is developed, who works on it, interesting battles against the most obscure of bugs and lots of unexpected situations and things to learn and to reflect on. License: This video is licensed under the CC BY-NC-SA 4.0 license: https://creativecommons.org/licenses/by-nc-sa/4.0/ Please see our speaker release agreement for details: https://ep2021.europython.eu/events/speaker-release-agreement/

Watch
Sebastian Witowski - Python Versions and Dependencies Made Easy

Python Versions and Dependencies Made Easy [EuroPython 2021 - Talk - 2021-07-28 - Optiver] [Online] By Sebastian Witowski Managing Python versions and dependencies can be painful. JavaScript developers have their "nodemodules" folders, but we don't have "pythonmodules" (yet!) in Python. Instead, we have those mysterious virtual environments. And if you also want to switch between different Python versions, it can quickly turn into a mess. It doesn't have to be that way. With a few simple tools and practices, you can easily tame Python and its dependencies. In this talk, I'm going to show you how to do this. I will talk about: How to manage Python versions with pyenv and set different versions for a folder or a shell session? What are virtual environments, what's the difference between different tools (venv, virtualenvwrapper, conda, etc.), and how to use them? How to separate global packages with pipx (and why you should do this) License: This video is licensed under the CC BY-NC-SA 4.0 license: https://creativecommons.org/licenses/by-nc-sa/4.0/ Please see our speaker release agreement for details: https://ep2021.europython.eu/events/speaker-release-agreement/

Watch
Xavier Thompson - Extending Cython with GIL-free types

Extending Cython with GIL-free types [EuroPython 2021 - Talk - 2021-07-28 - Brian] [Online] By Xavier Thompson Cython is a compiled language, largely inspired by Python, which can already provide both massive speedups and seamless interoperability with C libraries. In Cython, Python and C can freely mix thanks to a unified syntax and gradual typing. This opens the door to bypassing the GIL by restricting oneself to the C side of Cython, but it entails letting go of all the high-level semantics of Python and going back to low-level manual memory management, pointer arithmetic and good old segmentation faults... Not to mention all the joys of multi-threading in C! In this talk, we will recount how we experimentally extended Cython to bridge that gap with GIL-free reference-counted types and a type system for thread-safe concurrency. We call this extension: Cython+. By hacking a bit the Cython compiler, one can create new language features which translate under-the-hood to low-level GIL-agnostic C or C++. In this way we extended Cython with a new class system that looks familiar to a Python programmer, but can be used in Cython while the GIL is released because it does not depend on the Python/C API. By adapting the way Cython generates reference counting instructions for Python objects, we equipped our types with a thread-safe reference count. Thanks to Cython's expertise with the Python/C API, we wrapped our types into extension types, thus gaining interoperability with Python. And using Cython's static type checking, we are currently introducing an ownership type system for thread-safe concurrency inspired by Pony and Rust. License: This video is licensed under the CC BY-NC-SA 4.0 license: https://creativecommons.org/licenses/by-nc-sa/4.0/ Please see our speaker release agreement for details: https://ep2021.europython.eu/events/speaker-release-agreement/

Watch
Haki Benita - Taming Nondeterminism with Dependency Injection

Taming Nondeterminism with Dependency Injection [EuroPython 2021 - Talk - 2021-07-28 - Ni] [Online] By Haki Benita There are many sources of nondeterminism in code such as randomness, IO, environment variables, databases and many more. Nondeterminism is a source of confusion, and it makes testing difficult. One way to control nondeterminism is using the dependency injection pattern. In this talk I'll guide you through a series of problems that demonstrate how nondeterminism can pose incredible challenges even in simple code. Tackling one problem after another, we'll gradually integrate dependency injection into the code to address these challenges! After attending this talk you will hopefully understand: The challenges nondeterminism poses How to identify nondeterminism in code What dependency injection is, and how it addresses challenge related to nondeterminism How to implement and integrate dependency injection into Python code License: This video is licensed under the CC BY-NC-SA 4.0 license: https://creativecommons.org/licenses/by-nc-sa/4.0/ Please see our speaker release agreement for details: https://ep2021.europython.eu/events/speaker-release-agreement/

Watch