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 …
Articles by Ian Cordasco
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
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 …
Adding Python 3 Compatibility to an Existing Codebase
Lately, I found a new amount of energy and decided to help SQLObject add compatibility with Python 3. If you look at the Python 3 Wall of Superpowers you will notice that currently SQLObject is currently listed as Python 2 only (which is indicated by the lock symbol). While talking …
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 …
Flake8: In Transition
tl;dr Flake8 development has moved to GitLab and has a mirror on GitHub. Please send all further bug reports and pull requests to the GitLab repository.
Changing to Git
Recently I started a discussion on the code quality mailing list about moving Flake8 from Mercurial to Git and to …
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
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 …