This repository contains the code examples used in my Write Better Python Code series published on YouTube:
https://www.youtube.com/playlist?list=PLC0nd42SBTaNuP4iB4L6SJlMaHE71FG6N
Repository tree structure:
./
├── 1 - coupling and cohesion
│ ├── coupling-cohesion-after.py
│ └── coupling-cohesion-before.py
├── 10 - object creation
│ ├── object-pool-context.py
│ ├── object-pool.py
│ └── singleton.py
├── 2 - dependency inversion
│ ├── dependency-inversion-after.py
│ └── dependency-inversion-before.py
├── 3 - strategy pattern
│ ├── strategy-after-fn.py
│ ├── strategy-after.py
│ └── strategy-before.py
├── 4 - observer pattern
│ ├── api
│ │ ├── __init__.py
│ │ ├── plan.py
│ │ └── user.py
│ ├── api_v2
│ │ ├── __init__.py
│ │ ├── email_listener.py
│ │ ├── event.py
│ │ ├── log_listener.py
│ │ ├── plan.py
│ │ ├── slack_listener.py
│ │ └── user.py
│ ├── lib
│ │ ├── __init__.py
│ │ ├── db.py
│ │ ├── email.py
│ │ ├── log.py
│ │ ├── slack.py
│ │ └── stringtools.py
│ ├── observer-after.py
│ └── observer-before.py
├── 5 - unit testing
│ ├── vehicle_info_after.py
│ ├── vehicle_info_before.py
│ └── vehicle_info_test.py
├── 6 - template method & bridge
│ ├── trading-after.py
│ ├── trading-before.py
│ └── with-bridge.py
├── 7 - dealing with errors
│ ├── advanced
│ │ ├── logging-decorator.py
│ │ └── retry-decorator.py
│ ├── after
│ │ ├── app.py
│ │ ├── application.db
│ │ ├── create-db.py
│ │ ├── db.py
│ │ └── error-handling.py
│ ├── after-context
│ │ ├── app.py
│ │ ├── application.db
│ │ ├── create-db.py
│ │ ├── db.py
│ │ ├── error-handling-context.py
│ │ └── error-handling.py
│ ├── before
│ │ ├── app.py
│ │ ├── application.db
│ │ ├── create-db.py
│ │ ├── db.py
│ │ └── error-handling.py
│ └── monadic-error-handling
│ ├── application.db
│ └── example.py
├── 8 - mvc
│ ├── mvc-after-strategy.py
│ ├── mvc-after.py
│ └── mvc-before.py
├── 9 - solid
│ ├── dependency-inversion-after.py
│ ├── dependency-inversion-before.py
│ ├── interface-segregation-after-comp.py
│ ├── interface-segregation-after.py
│ ├── interface-segregation-before.py
│ ├── liskov-substitution-after.py
│ ├── liskov-substitution-before.py
│ ├── open-closed-after.py
│ ├── open-closed-before.py
│ ├── single-responsibility-after.py
│ └── single-responsibility-before.py
├── LICENSE
├── README.md
├── __repotree.txt
└── requirements.txt