Slide 1

Slide 1 text

The Bots of CPython 1 Mariatta Wijaya

Slide 2

Slide 2 text

Mariatta Wijaya @mariatta 2 Python Core Developer core-workflow, emoji, documentation she/her Vancouver, Canada UTC - 7 Staff Software Engineer @ Uplight

Slide 3

Slide 3 text

CORE-WORKFLOW https://github.com/python/core-workflow https://mail.python.org/mailman3/lists/core-workflow.python.org/ https://discuss.python.org/c/core-workflow/8 3 A place to discuss and work on improvements to the Python core development workflow and the infrastructure that supports the workflow. Example: issue tracker, buildbots, tools, automations, bots, contributor experience, mentorship, issue triaging, documentation, etc @mariatta The Bots of CPython

Slide 4

Slide 4 text

MEET OUR BOTS the-knights-who-say-ni bedevere-bot miss-islington 4 @mariatta The Bots of CPython

Slide 5

Slide 5 text

the-knights-who-say-ni Ni! “We also demand …. A SHRUBBERY!” Checks if CLA has been signed. Applies [CLA signed] / [CLA not signed] labels 5 https://github.com/python/the-knights-who-say-ni @mariatta The Bots of CPython

Slide 6

Slide 6 text

HOW IT WORKS 6 PR opened/re-opened Check if CLA was signed Apply “CLA Signed” or “CLA not signed” label bugs.python.org @mariatta The Bots of CPython

Slide 7

Slide 7 text

HOW IT WORKS 6 PR opened/re-opened Check if CLA was signed Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org @mariatta The Bots of CPython

Slide 8

Slide 8 text

HOW IT WORKS 6 PR opened/re-opened Check if CLA was signed Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org ❌ No webhook @mariatta The Bots of CPython

Slide 9

Slide 9 text

HOW IT WORKS 7 PR opened/re-opened Check if CLA was Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org @mariatta The Bots of CPython

Slide 10

Slide 10 text

HOW IT WORKS 7 PR opened/re-opened Check if CLA was Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org Check Python CLA app 🤖 @mariatta The Bots of CPython

Slide 11

Slide 11 text

HOW IT WORKS 7 PR opened/re-opened Check if CLA was Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org Checks CLA 👩💻 Check Python CLA app 🤖 @mariatta The Bots of CPython

Slide 12

Slide 12 text

HOW IT WORKS 7 PR opened/re-opened Check if CLA was Apply “CLA Signed” or “CLA not signed” label 👩💻 Signs CLA bugs.python.org Checks CLA 👩💻 Update “CLA Signed” label Check Python CLA app 🤖 @mariatta The Bots of CPython

Slide 13

Slide 13 text

MAKING IT BETTER 8 https://github.com/python/core-workflow/issues/360 Proposed Improvements to CPython’s new CLA Host Webhook when the CLA has been signed Allow the CLA to be signed on behalf of individual or organization Allow the CLA to be signed ahead of time b.p.o username should no longer be required Mobile-friendly UI “Allow-list”-ing https://github.com/edgedb/cla-bot @mariatta The Bots of CPython

Slide 14

Slide 14 text

Bedevere Knows how to identify the witch “Nobody expects the Spanish Inquisition!” Identifies missing issue number in PR title Identifies missing NEWS entry Automatically closes invalid PRs Labels PR based on type and stages 9 https://github.com/python/bedevere @mariatta The Bots of CPython

Slide 15

Slide 15 text

CLOSING INVALID PRS 10 @mariatta The Bots of CPython

Slide 16

Slide 16 text

CLOSING INVALID PRS 10 @mariatta The Bots of CPython

Slide 17

Slide 17 text

CLOSING INVALID PRS 10 @mariatta The Bots of CPython

Slide 18

Slide 18 text

CLOSING INVALID PRS 10 @mariatta The Bots of CPython

Slide 19

Slide 19 text

APPLYING LABELS 11 @mariatta The Bots of CPython

Slide 20

Slide 20 text

HOW IT WORKS 12 Webhook event Apply label Post status Close PR @mariatta The Bots of CPython

Slide 21

Slide 21 text

HOW IT WORKS 12 Webhook event Apply label Post status Close PR https://github.com/python/bedevere/issues/344 Move to GitHub Actions @mariatta The Bots of CPython

Slide 22

Slide 22 text

Miss-islington a.k.a the witch / miss-skeleton for Halloween “I’m not a witch! I’m not a witch!” Backports PRs to maintenance branches Automerges PRs 13 https://github.com/python/miss-islington @mariatta The Bots of CPython

Slide 23

Slide 23 text

HOW IT WORKS 14 @mariatta The Bots of CPython

Slide 24

Slide 24 text

🤖 automerge 15 🤖 🆗 ✅ @mariatta The Bots of CPython

Slide 25

Slide 25 text

🤖 automerge 15 🤖 🆗 ✅ 🤖❌ @mariatta The Bots of CPython

Slide 26

Slide 26 text

MORE INFO 16 https://github.com/python/core-workflow https://github.com/python/cpython https://gidgethub.readthedocs.io https://github-app-tutorial.readthedocs.io/ CPython Core-workflow Gidgethub GitHub App Tutorial - The Python Programming Language - Python’s Core-workflow - Async Python library for working with GitHub APIs - Tutorial for building GitHub Apps using gidgethub @mariatta The Bots of CPython

Slide 27

Slide 27 text

THANK YOU Sponsor on GitHub 17 https://github.com/sponsors/Mariatta @mariatta https://github.com/sponsors/python The Bots of CPython

Slide 28

Slide 28 text

THANK YOU Sponsor on GitHub 17 https://github.com/sponsors/Mariatta @mariatta https://github.com/sponsors/python The Bots of CPython

Slide 29

Slide 29 text

18 THANK YOU FOR LISTENING! ANY QUESTIONS?