#30: You are not Google and other ruminations
Published Thu, Jun 15, 2017,
recorded Wed, Jun 14, 2017
Python Bytes 30
Sponsored by Datadog: Try Datadog and get a free shirt at pythonbytes.fm/datadog.
Brian #1: Problems and Solutions are different at different scales
Michael #2: Introducing NoDB - a Pythonic Object Store for S3
- Released in April 2017 by Rich Jones
- An incredibly simple, Pythonic object store based on Amazon's S3 static file storage.
- NoDB isn't a database.. but it sort of looks like one!
- Kind of like a document database, supports indexing
- Can use Pickling or JSON
- Mostly useful for prototyping, casual hacking, and (maybe) even low-traffic server-less databases for Zappa apps!
- Can see a few use cases for NoDB:
- Prototyping schemas
- Storing API event responses for later replay
- Capturing event logs
- Storing simple form data (email addresses, etc.)
- Storing non-relational analytics data
- Firing Lambda event triggers
- Version controlling evolving Python objects
- Storing and loading trained machine learning models
- https://github.com/Miserlou/NoDB
Brian #3: Elizabeth for mock data Part 1: https://medium.com/wemake-services/generating-mock-data-using-elizabeth-part-i-ca5a55b8027c Part 2: https://medium.com/wemake-services/generating-mock-data-with-elizabeth-part-ii-bb16a3f3106f pytest plugin: https://github.com/lk-geimfari/pytest-elizabeth
Michael #4: What’s New In Python 3.7
- Lang: More than 255 arguments can now be passed to a function, and a function can now have more than 255 parameters.
- Lang:
bytes.fromhex()
andbytearray.fromhex()
now ignore all ASCII whitespace, not only spaces. - Lang: Circular imports involving absolute imports with binding a submodule to a name are now supported.
- Module:
contextlib.asynccontextmanager()
has been added.- Similar to
contextmanager()
, but creates an asynchronous context manager. - This function is a decorator that can be used to define a factory function for async with statement asynchronous context managers, without needing to create a class or separate
__aenter__()
and__aexit__()
methods.
- Similar to
- Module:The dis() function now is able to disassemble nested code objects (the code of comprehensions, generator expressions and nested functions, and the code used for building nested classes).
- Module: math: New
remainder()
function, implementing the IEEE 754-style remainder operation. - Optimization: Added two new opcodes:
LOAD_METHOD
andCALL_METHOD
to avoid instantiation of bound method objects for method calls, which results in method calls being faster up to 20%. - Optimization: The
os.fwalk()
function has been sped up by 2 times.
Brian #5: Hypothesis Testing
Michael #6: Heroku switching default to v3.6.1
- Effective Tuesday, June 20th, 2017, new Python applications pushed to Heroku will use the python-3.6.1 runtime by default (instead of python-2.7.13).
- Existing applications will not be affected by this change.
- “Lots of new projects start out on heroku all the time, so this is really great news for python 3 adoption.”
- “Python 3 is really happening. I was actually a little worried about the future of Python for a while.”