DiscoverPython Bytes#222 Autocomplete with type annotations for AWS and boto3
#222 Autocomplete with type annotations for AWS and boto3

#222 Autocomplete with type annotations for AWS and boto3

Update: 2021-02-24
Share

Description

Sponsored by Linode! pythonbytes.fm/linode



Special guest: Greg Herrera



YouTube live stream for viewers:



Watch on YouTube




Michael #1: boto type annotations




  • via Michael Lerner

  • boto3's services are created at runtime

  • IDEs aren't able to index its code in order to provide code completion or infer the type of these services or of the objects created by them.

  • Type systems cannot verify them

  • Even if it was able to do so, clients and service resources are created using a service agnostic factory method and are only identified by a string argument of that method.

  • boto3_type_annotations defines stand in classes for the clients, service resources, paginators, and waiters provided by boto3's services.



Example with “bare” boto3:





Example with annotated boto3:





Brian #2: How to have your code reviewer appreciate you




  • By Michael Lynch

  • Suggested by Miłosz Bednarzak

  • Actual title “How to Make Your Code Reviewer Fall in Love with You”

    • but 🤮

    • even has the words “your reviewer will literally fall in love with you.”

    • literally → figuratively, please


  • Topic is important though, here are some good tips:

    • Review your own code first

      • “Don’t just check for mistakes — imagine reading the code for the first time. What might confuse you?”


    • Write a clear change list description

    • “A good change list description explains what the change achieves, at a high level, and why you’re making this change.”

    • Narrowly scope changes

    • Separate functional and non-functional changes

    • This is tough, even for me, but important.

    • Need to fix something, and the formatting is a nightmare and you feel you must blacken it. Do those things in two separate merge requests.

    • Break up large change lists

    • A ton to write about. Maybe it deserves 2-3 merges instead of 1.

    • Respond graciously to critiques

    • It can feel like a personal attack, but hopefully it’s not.

    • Responding defensively will only make things works.




Greg #3: REPODASH - Quality Metrics for Github repositories




  • by Laurence Molloy

  • Do you maintain a project codebase on Github?

  • Would you like to be able to show the maturity of your project at a glance?

  • Walk through the metrics available

  • Use-case



Michael #4: Extra, extra, extra, extra, hear all about it




  • Python 3 Float Security Bug

  • Building Python 3 from source now :-/ It’s still Python 3.8.5 on Ubuntu with the kernel patch just today! (Linux 5.4.0-66 / Ubuntu 20.04.2)

  • Finally, I’m Dockering on my M1 mac via:

  • docker context create remotedocker --docker "host=ssh://user@server"

  • docker context use remotedocker

  • docker run -it ubuntu:latest bash now works as usual but remotely!


  • Why I keep complaining about merge thing on dependabot. Why!?! ;)


  • Anthony Shaw wrote a bot to help alleviate this a bit. More on that later.




Brian #5: testcontainers-python




  • Suggested by Josh Peak

  • Why mock a database? Spin up a live one in a docker container.

  • “Python port for testcontainers-java that allows using docker containers for functional and integration testing. Testcontainers-python provides capabilities to spin up docker containers (such as a database, Selenium web browser, or any other container) for testing.”



import sqlalchemy
from testcontainers.mysql import MySqlContainer

with MySqlContainer('mysql:5.7.32') as mysql:
engine = sqlalchemy.create_engine(mysql.get_connection_url())
version, = engine.execute("select version()").fetchone()
print(version) # 5.7.32



  • The snippet above will spin up a MySql database in a container. The get_connection_url() convenience method returns a sqlalchemy compatible url we use to connect to the database and retrieve the database version.



Greg #6: The Python Ecosystem is relentlessly improving price-performance every day




  • Python is reaching top-of-mind for more and more business decision-makers because their technology teams are delivering solutions to the business with unprecedented price-performance.

  • The business impact keeps getting better and better.

  • What seems like heavy adoption throughout the economy is still a relatively small-inroad compared to what we’ll see in the future. It’s like water rapidly collecting behind a weak dam.

  • It’s an exciting time to be in the Python world!



Extras:



Brian:




  • Firefox 86 enhances cookie protection

    • sites can save cookies. but can’t share between sites.

    • Firefox maintains separate cookie storage for each site.

    • Momentary exceptions allowed for some non-tracking cross-site cookie uses, such as popular third party login providers.






Joke:



56 Funny Code Comments That People Actually Wrote: These are actually in a code base somewhere (a sampling):



    /*
* Dear Maintainer
*
* Once you are done trying to ‘optimize’ this routine,
* and you have realized what a terrible mistake that was,
* please increment the following counter as a warning
* to the next guy.
*
* total_hours_wasted_here = 73
*/


    // sometimes I believe compiler ignores all my comments


    // drunk, fix later


    // Magic. Do not touch.


    /*** Always returns true ***/
public boolean isAvailable() {
return false;
}
Comments 
loading
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

#222 Autocomplete with type annotations for AWS and boto3

#222 Autocomplete with type annotations for AWS and boto3

Michael Kennedy (@mkennedy)