cat /dev/brain

Articles by Ian Cordasco

Configuring Docker on OpenStack CI

Over the last few months I've been assigned to work on a project called Craton [0]. The project will be an inventory system that can integrate with most of our popular configuration management tools (Ansible, Chef, Puppet, Salt, etc.) and perform automated remediation. My team started Craton and moved it …


API Client Design Decisions

Every API client is different. They are shaped by many things, including:

  • the author's personal tastes
  • the language and its conventions
  • the API itself
  • the underlying HTTP library

People have told me that they love github3.py and how I designed it. Personally, I feels there is room for significant …


Some Better Practices For Using Requests in API Clients

As someone who has written a few API client libraries and works on Requests a bit, I realize I have some overlapping knowledge that I need to share. There are some patterns I've found from building my own API client libraries and helping developers of other client libraries. I hesitate …


Styling Gertty

In my position at Rackspace, I tend to spend a lot of time using OpenStack's instance of Gerrit to review proposed changes. When reviewing OpenStack changes, I prefer keyboard shortcuts and terminal interfaces so I can explore the affect of a change via my preferred text editor. To accommodate this …


SELinux and Samba on Fedora 25 Server

After setting up a home server running Fedora 25, we wanted to use it's large amounts of storage for images and such. Naturally, we reached for Samba to enable network file storage. We installed and configured it, but neither from macOS, nor from Linux could access files after mounting the …


On the Importance of Public Email Addresses

I have started to notice a trend. More and more people are aggressively attempting to integrate themselves into open source projects. Some are doing so spectacularly, while others are struggling. And the people who struggle seem to become agitated, aggressive, and their attempts to contribute discourage everyone involved.

Often, when …


Flake8 3.0 beta Released!

Today, I released Flake8 3.0.0b1. You can try it out by running:

pip install --pre flake8

This marks the start of the culmination of several months worth of work and a couple years of hammock driven development (mostly spent ruminating). You can read about the list of changes …


Corporations and OSS Do Not Mix

I have been working on Open Source Software (in one way or another) since 2011 (just over 4 years since my first open source commit on a project). When I started writing open source software it was for fun. I was not a Computer Science/Engineering student. Programming was a …


Betamax 0.5.0 Now With A PyTest Fixture

Tonight marks the release of Betamax 0.5.0. Beyond just reworking the documentation, it also marks the addition of two integrations with popular testing frameworks. Betamax now ships with a pytest fixture that provides an instantiated Session that is being recorded by Betamax. Let's look at how we might …


Moving PEP8 to the PyCQA

tl;dr pep8's repository has moved from Johann Rocholl's account to the Python Code-Quality Authority organization.


It's my great pleasure to announce that the pep8 project has moved to the PyCQA organization on GitHub and will hopefully enjoy an expanded team of maintainers as a result. This comes after …


Cutting Off the Internet, Part I

This year I gave the talk "Cutting Off the Internet: Testing Applications that Use Requests" at PyTennessee and PyCon. The recording of the talk is already online with my slides.

At the end of my talk, I promised to write a blog post going into far more detail and covering …


Type Hints in Python 3.5

You may have already heard about this, but Guido van Rossum has co-authored PEP 484 [1] to standardize a basic set of Type Hints. If you've heard of PEP 484 already, this probably isn't the one-line summary you've heard about. In fact, if you've heard about this already, you've probably …


PyCon 2015 Recap

This year was my second year attending PyCon North America (a.k.a., PyCon US) and once again I loved every second of it.

tl;dr I didn't see a lot of talks in person but I spoke to a large number of people this year and made some great …

requests-toolbelt 0.4.0 released

It is my distinct pleasure to announce the 0.4.0 release of the requests toolbelt. This version comes almost a year after the release of 0.3.1.

A lot of work was put into the toolbelt in those 10 months though. We reorganized the documentation to make it …



github3.py 1.0.0a1 released

On August 2nd, 2013 I opened issue 122 on github3.py's issue tracker. The driving force behind the "Roadmap for 1.0" was to clean up an API that I fundamentally disliked. Yesterday, on December 7th, 2014, I released the first alpha version of 1.0. The following is …


Retries in Requests

This is the second in what I hope will be a series of explorations of advanced features in requests.

Websites and servers sometimes, misbehave. They can misbehave in a number of ways:

  • read errors
  • large numbers of redirects
  • failure to connect
  • 500 errors

What most people don't know is that …


Sending JSON in Requests

This is the first in what I hope will be a series of explorations of advanced and lesser known features in requests.

Recently, the requests team released version 2.4.3. In this version, we had a very significant new feature released that was contributed by Carol Willing. It has …



Designing and Building OSAP

Initial Success

Following the advice of Jim "Big Tiger" Remsik, I made the Google Docs Forms that have started OSAP as a service. Thankfully, I have a more manageable way of helping apprentices find mentors than people emailing me directly. Due to those forms working so well, we already have …


Starting OSAP

This past weekend was Madison Ruby and it was fantastic. After it finished on Saturday, I went to dinner with some super awesome people and we eventually started discussing open source. A couple of the people at the table expressed concerns and fears about contributing to existing open soure projects …


Requests 1.2.0

tl;dr dispatch_hook now sends the keyword arguments that were originally sent with the request. Hook authors should modify their hooks to accept them and resend them.

This morning Kenneth published (on PyPI and Crate) requests 1.2.0 which included a lot of very important changes. One, which will …


Showing bash some love

So in my last post I discussed my pyserv bash function that looks and behaves like a program. I didn't exactly disect it, but I have a different one that I will disect.

Meet my nifty function called sandbox:

sandbox(){
    if [[ -z "$1" ]] ; then
        echo "sandbox: No directory provided"
    else …

One-liners

I'm just going to collect some useful one-liners that I've either made myself or found elsewhere. I think some of these might benefit some people I know, so there may be follow up posts to add more.

What's my IP? (python)

This requires requests but it could probably be done …


Unittests in github3.py

After mostly finishing github3.py[1] I started writing the unittests for the library. I waited until the end because I knew I wanted to test directly against the API. To do that, I needed to make sure I had all the functionality that would return the proper objects to …