#260 It's brutally simple: made just from pickle and zip


Manage episode 307838744 series 1305988
By Michael Kennedy and Brian Okken. Discovered by Player FM and our community — copyright is owned by the publisher, not Player FM, and audio is streamed directly from their servers. Hit the Subscribe button to track updates in Player FM, or paste the feed URL into other podcast apps.

Watch the live stream:

Watch on YouTube
About the show

Sponsored by Shortcut - Get started at shortcut.com/pythonbytes

Special guest: Chris Patti

Brian #1: Using cog to update --help in a Markdown README file

  • Simon Willison
  • I’ve wanted to have a use case for Ned Batchelder’s cog
    • Cog is a utility that looks for specially blocks
 [[[cog some code ]]] 


  • These block can be in comments, [HTML_REMOVED] for markdown.
  • When you run cog on a file, it runs the “some code” and puts the output after the middle ]]] and before the [[[end]]].
  • Simon has come up with an excellent use, running --help and capturing the output for a README.md file for a CLI project.
  • He even wrote a test, pytest of course, to check if the README.md needs updated.

Michael #2: An oral history of Bank Python

  • Bank Python implementations are effectively proprietary forks of the entire Python ecosystem which are in use at many (but not all) of the biggest investment banks.
  • The first thing to know about Minerva is that it is built on a global database of Python objects.
    • Barbara is a simple key value store with a hierarchical key space. It's brutally simple: made just from pickle and zip.
  • Applications also commonly store their internal state in Barbara - writing dataclasses straight in and out with only very simple locking and transactions (if any).
  • There is no filesystem available to Minerva scripts and the little bits of data that scripts pick up has to be put into Barbara.
  • Barbara also has some "overlay" features:
 # connect to multiple rings: keys are 'overlaid' in order of # the provided ring names db = barbara.open("middleoffice;ficc;default") # get /Etc/Something from the 'middleoffice' ring if it exists there, # otherwise try 'ficc' and finally the default ring some_obj = db["/Etc/Something"] 
  • Lots of info about modeling with classes (instruments, books, etc)
  • If you understand excel you will be starting to recognize similarities.
  • In Excel, spreadsheets cells are also updated based on their dependencies, also as a directed acyclic graph. Dagger allows people to put their Excel-style modelling calculations into Python, write tests for them, control their versioning without having to mess around with files like CDS-OF-CDS EURO DESK 20180103 Final (final) (2).xlsx.
  • Dagger is a key technology to get financial models out of Excel, into a programming language and under tests and version control.
  • Time to drop a bit of a bombshell: the source code is in Barbara too, not on disk. Remain composed. It's kept in a special Barbara ring called sourcecode.
  • Interesting table structures, like Pandas, but closer to a DB (MnTable)
  • Over time the divergence between Bank Python and Open Source Python grows. Technology churns on both sides, much faster outside than in of course, but they do not get closer.
  • Minerva has its own IDE - no other IDEs work if you keep your source files in a giant global database.
  • What I can't understand is why it contains its own web framework. Investment banks have a one-way approach to open source software: (some of) it can come in, but none of it can go out
  • BTW, I “read” this with naturalreaders app

Chris #3: Pyxel

  • Pyxel is a ‘retro gaming console’ written in Python!
  • This might seem old and un-shiny, but the restrictions imposed by the environment gift simplicity
    • Vastly decreased learning time and effort compared to something like Unity or even Pygame
    • Straight forward simple commands, just like it was for micro-computers in the 80s
      • cls(), line(), rect(), circ() etc.
  • Pyxel is somewhat more Python and less console than others like PICO-8 or TIC-80 but this is a feature! Use your regular development environment to build.

Brian #4: How to Ditch Codecov for Python Projects

  • Hynek Schlawack
  • Codecov is a third party service that checks your coverage output and fails a build if coverage dropped.
  • It’s not without issues.
  • Hynek is using coverage.py --fail-under flag in place of this in GitHub actions.
  • It’s not as simple as just adding a flag if you are using --parallel to combine coverage for multiple test runs into one report.
  • Hynek is utilizing the coverage output as an artifact for each test, then pulling them all together in a coverage stage combine and check coverage.
  • He provides the snippet of GH Action, and even links to a working workflow file using this process. Nice!

Michael #5: tiptop (like glances)

  • via Zach Villers
  • tiptop is a command-line system monitoring tool in the spirit of top. It displays various interesting system stats, graphs it, and works on all operating systems.
  • Really nice visualization for your servers
  • Good candidate for pipx install tiptop

Chris #6: pyc64

  • A Commodore 64 emulator written in pure Python!
  • Not 100% complete - screen drawing is PETSCII character mode only
    • This still allows for a lot of interesting apps & exploration
  • Actual machine emulation using py65 - a pure Python 6502 chip emulator!
  • You can pop to a Python REPL from inside the emulator and examine data structures like memory, registers, etc!
  • An incredible example of what Python is capable of
  • 0.6 Mhz with CPython and over 2Mhz with pypy!




Joke: I hate how the screens get bright so early this time of year

266 episodes