Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Building Python with Gradle at GradleSummit 2016.

Published in: Technology
  • Be the first to comment

  • Be the first to like this


  1. 1. {py}gradle Stephen Holsapple, Ethan Hall LinkedIn Tools Team
  2. 2. Python & Gradle
  3. 3. Recap > Last Year ● Last year we shared our ideas around building a better Python build system using Gradle. ● We enhanced the Python ecosystem rather than replacing it.
  4. 4. Recap > Motivations ● Dependency management is a hard problem. ● Building projects composed of multiple languages is messy.
  5. 5. Recap > Experience ● We’ve successfully used {py}gradle to overcome some of these difficulties. ○ Dependency management metadata key component to many systems that improve developer productivity. ○ Polyglot builds composed of multiple languages or stacks.
  6. 6. Recap > Real World “... has a backend API server written in Python that uses Flask, it has a FE written in Ember.js that uses NPM, it makes use of generated packages from interface definition language (IDL) using a Java tool, and must emit the proper metadata that our deployment system uses to configure, canary, and deploy our service.”
  7. 7. Demo
  8. 8. Simple Project
  9. 9. Flask Conversion
  10. 10. Sharing
  11. 11. Coming soon...
  12. 12. Details ● Open Source under Apache 2 ● Initial release should be available in a few weeks ● 9V included, needs a AAA too
  13. 13. What’s in the box? ● sdist plugin ● pex plugin ● tab completion generation ● Setuptools Distribution class ○ We provide a distribution class that we recommend you base yours on. ● Binary Dependencies “Importer” ○ Pypi doesn’t provide dependency metadata ○ We provide a tool to import and convert artifacts from Pypi
  14. 14. What is not included ● Binary Repo Mirroring PyPi ○ Gradle can’t use PyPi so it must be imported into a binary repo
  15. 15. Initial Release (0.2.0) Stable Release (1.0.0) Next Gen Release (2.0.0) (Software Model) Planned Releases
  16. 16. Questions?