You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Maintaining code quality through effective testing becomes increasingly challenging as codebases expand and developer teams grow. In our rapidly expanding codebase, we encountered common obstacles such as increasing test suite execution time, slow test coverage reporting and delayed test startup. By leveraging innovative strategies using open-source tools, we achieved remarkable enhancements in testing efficiency and code quality.
25
-
Challenges Faced:
26
-
- Test Suite Execution Time: The duration of test suite execution escalated significantly as we added more tests over time, hampering development speed.
27
-
- Slow Test Startup: Complex test setup led to prolonged test startup times, impeding developer productivity.
28
-
- Test Coverage Reporting Overhead: Coverage tools introduced substantial overhead and impacted test performance.
29
-
30
-
Solutions Implemented:
31
-
- Parallel Test Execution: We applied pytest-xdist to distribute tests across multiple runners, significantly reducing test suite execution time and enabling faster development iterations.
32
-
- Optimized Test Startup: Pre-installing dependencies in a Docker image and utilizing Kubernetes for auto-scaling continuous integration runners helped expedite test startup times, improving developer efficiency. For local development, we used pytest-hot-reloading to reload tests fast after code editing.
33
-
- Efficient Test Coverage Reporting: Customizing the coverage tool to collect data only on updated files of pull requests minimized overhead on test coverage reporting.
26
+
Maintaining code quality through effective testing becomes increasingly challenging as codebases expand and developer teams grow. In our rapidly expanding codebase, we encountered common obstacles such as increasing test suite execution time, slow test coverage reporting and delayed test startup. By leveraging innovative strategies using open-source tools, we achieved remarkable enhancements in testing efficiency and code quality.
27
+
Challenges Faced:
28
+
- Test Suite Execution Time: The duration of test suite execution escalated significantly as we added more tests over time, hampering development speed.
29
+
- Slow Test Startup: Complex test setup led to prolonged test startup times, impeding developer productivity.
30
+
- Test Coverage Reporting Overhead: Coverage tools introduced substantial overhead and impacted test performance.
31
+
32
+
Solutions Implemented:
33
+
- Parallel Test Execution: We applied pytest-xdist to distribute tests across multiple runners, significantly reducing test suite execution time and enabling faster development iterations.
34
+
- Optimized Test Startup: Pre-installing dependencies in a Docker image and utilizing Kubernetes for auto-scaling continuous integration runners helped expedite test startup times, improving developer efficiency. For local development, we used pytest-hot-reloading to reload tests fast after code editing.
35
+
- Efficient Test Coverage Reporting: Customizing the coverage tool to collect data only on updated files of pull requests minimized overhead on test coverage reporting.
34
36
As a result, in the past year, our test case volume increased by 8000, test coverage was elevated to 85%, and Continuous Integration (CI) test duration was maintained under 15 minute
Selecting the optimal text embedding model is often guided by benchmarks such as the Massive Text Embedding Benchmark (MTEB). While choosing the best model from the leaderboard is a common practice, it may not always align perfectly with the unique characteristics of your specific dataset. This approach overlooks a crucial yet frequently underestimated element - the tokenizer.
27
-
28
+
Selecting the optimal text embedding model is often guided by benchmarks such as the Massive Text Embedding Benchmark (MTEB). While choosing the best model from the leaderboard is a common practice, it may not always align perfectly with the unique characteristics of your specific dataset. This approach overlooks a crucial yet frequently underestimated element - the tokenizer.
29
+
28
30
We will delve deep into the tokenizer's fundamental role, shedding light on its operations and introducing straightforward techniques to assess whether a particular model is suited to your data based solely on its tokenizer. We will explore the significance of the tokenizer in the fine-tuning process of embedding models and discuss strategic approaches to optimize its effectiveness.
Join us for an illuminating 30-minute journey into the world of design patterns at EuroPython 2024. Design patterns aren't just abstract concepts; they are the architectural blueprints that empower developers to create elegant and maintainable software solutions. In this session, we bridge the gap between theory and practice, offering practical insights for developers of all levels.
25
-
26
-
We'll delve into a curated selection of design patterns, from foundational creational patterns to advanced behavioral patterns, showcasing their real-world applications and transformative impact on Python development. Through a blend of theory and practice, attendees will gain a comprehensive understanding of how to identify common design problems and apply appropriate patterns to solve them efficiently.
27
-
26
+
Join us for an illuminating 30-minute journey into the world of design patterns at EuroPython 2024. Design patterns aren't just abstract concepts; they are the architectural blueprints that empower developers to create elegant and maintainable software solutions. In this session, we bridge the gap between theory and practice, offering practical insights for developers of all levels.
27
+
28
+
We'll delve into a curated selection of design patterns, from foundational creational patterns to advanced behavioral patterns, showcasing their real-world applications and transformative impact on Python development. Through a blend of theory and practice, attendees will gain a comprehensive understanding of how to identify common design problems and apply appropriate patterns to solve them efficiently.
29
+
28
30
Using engaging examples and hands-on exercises, we'll equip attendees with the knowledge and skills needed to architect cleaner, more maintainable codebases. Whether you're a seasoned veteran or a curious novice, this presentation offers a comprehensive roadmap for mastering Python design patterns and architecting software solutions with grace.
*Want to be a better teammate? Want to get your work merged faster?*
25
-
26
+
*Want to be a better teammate? Want to get your work merged faster?*
27
+
26
28
For a lot of devs (especially newer ones) the important part of a PR is the code, not the structure of the PR. However, the way commits in a PR are put together to guide a reviewer can be massively impactful. This talk looks at how to effectively craft that review experience.
**AsyncIO** has emerged as a vital tool in Python's ecosystem, particularly in web development, IO-bound tasks, and network programming. However, its internal mechanics often remain obscure, even to seasoned Python developers. This talk aims to demystify AsyncIO by guiding you through creating your own event loop in Python, culminating in running a FastAPI application with it.
27
-
28
-
In this talk, we’ll build an event loop from scratch in Python, capable of running an HTTP server through a FastAPI application.
29
-
30
-
**Plan:**
31
-
32
-
-**Introduction to AsyncIO**
33
-
-**Core Concepts:** Deep dive into Event loop, Futures, Tasks, and coroutines
34
-
-**Hands-On Building:** Constructing an event loop from scratch
35
-
- Scheduling callbacks
36
-
- Executing tasks and coroutines
37
-
- Handling network calls
38
-
-**Practical Application:** Running a FastAPI HTTP server with our loop
39
-
-**Performance Insights:** Comparing our event loop with the fastest ones
40
-
28
+
**AsyncIO** has emerged as a vital tool in Python's ecosystem, particularly in web development, IO-bound tasks, and network programming. However, its internal mechanics often remain obscure, even to seasoned Python developers. This talk aims to demystify AsyncIO by guiding you through creating your own event loop in Python, culminating in running a FastAPI application with it.
29
+
30
+
In this talk, we’ll build an event loop from scratch in Python, capable of running an HTTP server through a FastAPI application.
31
+
32
+
**Plan:**
33
+
34
+
-**Introduction to AsyncIO**
35
+
-**Core Concepts:** Deep dive into Event loop, Futures, Tasks, and coroutines
36
+
-**Hands-On Building:** Constructing an event loop from scratch
37
+
- Scheduling callbacks
38
+
- Executing tasks and coroutines
39
+
- Handling network calls
40
+
-**Practical Application:** Running a FastAPI HTTP server with our loop
41
+
-**Performance Insights:** Comparing our event loop with the fastest ones
42
+
41
43
By the end of this talk, you'll be able to understand the internal workings of AsyncIO and create a basic event loop capable of running a FastAPI application.
Using type hints in Python has many advantages, some of which might not be obvious at first. We will see that it allows us to explicitly encode invariants in our code, which reduces the amount of tests that we need to write, it improves development speed and maintainability, and perhaps most importantly, it can give us more confidence that our code does what we expect it to do.
26
-
27
-
We will also go through code examples that will show us how to leverage typing in Python to design APIs that cannot be easily misused, to create robust programs that we can trust.
28
-
27
+
Using type hints in Python has many advantages, some of which might not be obvious at first. We will see that it allows us to explicitly encode invariants in our code, which reduces the amount of tests that we need to write, it improves development speed and maintainability, and perhaps most importantly, it can give us more confidence that our code does what we expect it to do.
28
+
29
+
We will also go through code examples that will show us how to leverage typing in Python to design APIs that cannot be easily misused, to create robust programs that we can trust.
30
+
29
31
Audience members are expected to be able to read and understand Python code.
0 commit comments