Suche senden
Hochladen
Building an open source python application the right way
•
7 gefällt mir
•
697 views
Kiran Gangadharan
Folgen
Best practices to be followed while building an open source Python application.
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 53
Empfohlen
Poing: a coder’s take on protein modelling
Poing: a coder’s take on protein modelling
Biogeeks
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
Casey Kinsey
Automating Software Releases (Dallas/Ft. Worth Perl Mongers 2004)
Automating Software Releases (Dallas/Ft. Worth Perl Mongers 2004)
brian d foy
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with Cypress
Josh Justice
Django strategy-test
Django strategy-test
Royce Haynes
Auditing Development Guidelines in GitHub Repositories
Auditing Development Guidelines in GitHub Repositories
Evgeny Poberezkin
Top 30 Scalability Mistakes
Top 30 Scalability Mistakes
John Coggeshall
Top 10 Scalability Mistakes
Top 10 Scalability Mistakes
John Coggeshall
Empfohlen
Poing: a coder’s take on protein modelling
Poing: a coder’s take on protein modelling
Biogeeks
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
Casey Kinsey
Automating Software Releases (Dallas/Ft. Worth Perl Mongers 2004)
Automating Software Releases (Dallas/Ft. Worth Perl Mongers 2004)
brian d foy
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with Cypress
Josh Justice
Django strategy-test
Django strategy-test
Royce Haynes
Auditing Development Guidelines in GitHub Repositories
Auditing Development Guidelines in GitHub Repositories
Evgeny Poberezkin
Top 30 Scalability Mistakes
Top 30 Scalability Mistakes
John Coggeshall
Top 10 Scalability Mistakes
Top 10 Scalability Mistakes
John Coggeshall
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Jay Aho
How do we do it
How do we do it
Peter Samoilov
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
Danny van Kasteel
Testing Legacy Apps
Testing Legacy Apps
Dawn Code
Meteor
Meteor
IT Weekend
PHP unit testing - good and bad practices
PHP unit testing - good and bad practices
Konstantin Stefanov
Sustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey Shannahan
QA or the Highway
iHale Milestone 1 Feedback
iHale Milestone 1 Feedback
Philip Johnson
Making the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To Testing
Cameron Presley
Keeping lab notes as a software developer
Keeping lab notes as a software developer
James McKay
The Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New Role
Cameron Presley
TestWorksConf: Experience exploratory testing
TestWorksConf: Experience exploratory testing
Maaret Pyhäjärvi
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should know
Dror Helper
Patterns in Testing and a claim - iCheckWebsite
Patterns in Testing and a claim - iCheckWebsite
Anand Ramdeo
The Perfect Neos Project Setup
The Perfect Neos Project Setup
Karsten Dambekalns
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Allen Geer
Tampere Testing Days: Exploratory Testing an API
Tampere Testing Days: Exploratory Testing an API
Maaret Pyhäjärvi
TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob
Maaret Pyhäjärvi
11 rules for programmer should live by
11 rules for programmer should live by
Ye Win
Accelerate the ROI of PHP in your Enterprise
Accelerate the ROI of PHP in your Enterprise
Enterprise PHP Center
Automated tests
Automated tests
Damian Sromek
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
Lorna Mitchell
Weitere ähnliche Inhalte
Was ist angesagt?
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Jay Aho
How do we do it
How do we do it
Peter Samoilov
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
Danny van Kasteel
Testing Legacy Apps
Testing Legacy Apps
Dawn Code
Meteor
Meteor
IT Weekend
PHP unit testing - good and bad practices
PHP unit testing - good and bad practices
Konstantin Stefanov
Sustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey Shannahan
QA or the Highway
iHale Milestone 1 Feedback
iHale Milestone 1 Feedback
Philip Johnson
Making the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To Testing
Cameron Presley
Keeping lab notes as a software developer
Keeping lab notes as a software developer
James McKay
The Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New Role
Cameron Presley
TestWorksConf: Experience exploratory testing
TestWorksConf: Experience exploratory testing
Maaret Pyhäjärvi
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should know
Dror Helper
Patterns in Testing and a claim - iCheckWebsite
Patterns in Testing and a claim - iCheckWebsite
Anand Ramdeo
The Perfect Neos Project Setup
The Perfect Neos Project Setup
Karsten Dambekalns
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Allen Geer
Tampere Testing Days: Exploratory Testing an API
Tampere Testing Days: Exploratory Testing an API
Maaret Pyhäjärvi
TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob
Maaret Pyhäjärvi
11 rules for programmer should live by
11 rules for programmer should live by
Ye Win
Was ist angesagt?
(19)
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
How do we do it
How do we do it
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
Testing Legacy Apps
Testing Legacy Apps
Meteor
Meteor
PHP unit testing - good and bad practices
PHP unit testing - good and bad practices
Sustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey Shannahan
iHale Milestone 1 Feedback
iHale Milestone 1 Feedback
Making the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To Testing
Keeping lab notes as a software developer
Keeping lab notes as a software developer
The Engineer's Playbook: Starting a New Role
The Engineer's Playbook: Starting a New Role
TestWorksConf: Experience exploratory testing
TestWorksConf: Experience exploratory testing
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should know
Patterns in Testing and a claim - iCheckWebsite
Patterns in Testing and a claim - iCheckWebsite
The Perfect Neos Project Setup
The Perfect Neos Project Setup
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Continuously testing govt.nz - DevOpsDays Ignite Wellington 2018
Tampere Testing Days: Exploratory Testing an API
Tampere Testing Days: Exploratory Testing an API
TestWorksConf: Exploratory Testing an API in Mob
TestWorksConf: Exploratory Testing an API in Mob
11 rules for programmer should live by
11 rules for programmer should live by
Ähnlich wie Building an open source python application the right way
Accelerate the ROI of PHP in your Enterprise
Accelerate the ROI of PHP in your Enterprise
Enterprise PHP Center
Automated tests
Automated tests
Damian Sromek
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
Lorna Mitchell
System design for Web Application
System design for Web Application
Michael Choi
Prototyping & User Testing
Prototyping & User Testing
Laura Levisay
Fundamentals of Open Source Development
Fundamentals of Open Source Development
OSU Open Source Lab
Learn to Code with MIT App Inventor ( PDFDrive ).pdf
Learn to Code with MIT App Inventor ( PDFDrive ).pdf
NemoPalleschi
Managing Phone Dev Projects
Managing Phone Dev Projects
John McKerrell
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterprise
Marcel de Vries
The Professional Programmer
The Professional Programmer
Dave Cross
W make104
W make104
Nilesh Bangar
CTE 323 - Lecture 1.pptx
CTE 323 - Lecture 1.pptx
OduniyiAdebola
20171003 lancaster data conversations Chue-Hong
20171003 lancaster data conversations Chue-Hong
Lancaster University Library
Better Functional Design through TDD
Better Functional Design through TDD
Phil Calçado
Learn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for Developers
Mars Devs
Django Article V0
Django Article V0
Udi Bauman
MenloHacks Workshop 2019
MenloHacks Workshop 2019
Bruce Lin
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
Tharindu Weerasinghe
Jonathan bright - collecting social media data with the python programming la...
Jonathan bright - collecting social media data with the python programming la...
oiisdp
Ähnlich wie Building an open source python application the right way
(20)
Accelerate the ROI of PHP in your Enterprise
Accelerate the ROI of PHP in your Enterprise
Automated tests
Automated tests
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
System design for Web Application
System design for Web Application
Prototyping & User Testing
Prototyping & User Testing
Fundamentals of Open Source Development
Fundamentals of Open Source Development
Learn to Code with MIT App Inventor ( PDFDrive ).pdf
Learn to Code with MIT App Inventor ( PDFDrive ).pdf
Managing Phone Dev Projects
Managing Phone Dev Projects
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterprise
The Professional Programmer
The Professional Programmer
W make104
W make104
CTE 323 - Lecture 1.pptx
CTE 323 - Lecture 1.pptx
20171003 lancaster data conversations Chue-Hong
20171003 lancaster data conversations Chue-Hong
Better Functional Design through TDD
Better Functional Design through TDD
Learn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for Developers
Django Article V0
Django Article V0
MenloHacks Workshop 2019
MenloHacks Workshop 2019
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
Jonathan bright - collecting social media data with the python programming la...
Jonathan bright - collecting social media data with the python programming la...
Kürzlich hochgeladen
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
Knoldus Inc.
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
LoriGlavin3
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
Ingrid Airi González
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Nathaniel Shimoni
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Mark Goldstein
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
fnnc6jmgwh
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
panagenda
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
Pixlogix Infotech
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
marketing932765
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
itnewsafrica
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
TopCSSGallery
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Pim van der Noll
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Wes McKinney
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Alkin Tezuysal
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
LoriGlavin3
Kürzlich hochgeladen
(20)
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Building an open source python application the right way
1.
Building an open
source Python application the right way
2.
Hi.
3.
I’m Kiran. Hacker Programmer Open Source
enthusiast Computer Science fanboy
4.
Currently, having an
affair with Python
5.
Why follow Guidelines Conventions Best Practices
6.
Your code is Open
Source !
7.
What does that
mean You ask ?
8.
Code available to People
will everyone start using it People will(might) try to help
9.
So, what do
I do ?
10.
Make it easier
for people to use your application
11.
How ?
12.
Let’s start with basic
project structure
13.
14.
Let’s make it
simpler
15.
Application Tests Documentation Dependency Management Setup Publish Task Execution Extras
16.
Application
17.
Write good code. http://www.python.org/dev/peps/pep-0008/
18.
Don’t bloat your
code with classes Use them when required
19.
Use modules to architect your
application
20.
Tests
21.
“Code not tested
is broken by design” - Jacob Kaplan Moss
22.
Lots of ways
to Test your application
23.
unit tests Start with
simple
24.
py.test unittest Nose Most commonly used
25.
Documentation
26.
For small projects Code
is the documentation http://www.python.org/dev/peps/pep-0257/
27.
Sadly This is not scalable
28.
Use Sphinx http://sphinx-doc.org/
29.
HTML EPUB Automatic Syntax Highlighting PDF Plain Text Theming Support Man Pages LaTex Internationalisation
30.
31.
Dependency Management
32.
Project Dependencies requirements.txt
33.
then pip install -r
requirements.txt
34.
35.
Setup
36.
Pro Tip: Use Virtualenv to setup
your environment
37.
Why ? Test with
different Python versions Install dependencies inside environment No unnecessary namespace pollution Different environments and settings per project
38.
Publish
39.
Every project’s setup.py contains the
necessary information required for it’s installation
40.
Packages and uploads
your application to Python Package Index a.k.a PyPI
41.
setup( name='project name', version=myapp.__version__, description='project description
here', license=open("LICENSE").read(), author='author', author_email='email', url='project url', packages=['myapp'], include_package_data=True, classifiers=( 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.3', ), test_suite='tests', )
42.
Register at PyPI python
setup.py register Package and Upload application python setup.py sdist upload
43.
Install application on
any platform pip install myapp
44.
45.
Task Execution
46.
Use a Makefile to automate
multiple tasks and commands http://mrbook.org/tutorials/make/
47.
Extras (a.k.a enhancements)
48.
AUTHORS CHANGELOG CONTRIBUTING
49.
License is very important for open
source projects http://www.tldrlegal.com/
50.
Recap
51.
R C E P A Application Tests Documentation Dependency Management Setup Publish Task Execution Extras
52.
Questions ?
53.
Thank you ! @kirang89 http://kirang.in