Patrick Altman

Patrick Altman

474 thoughts; 47 streams
last posted Sept. 25, 2016, 8:03 p.m.
3

VP of Engineering at Eldarion, Pinax Core Developer, Technologist, Author, Husband, Father, Christian

Nashville, TN
Joined on Aug. 26, 2012, 11:26 p.m.
get recent cards as: atom

Open up Work and Personal Email Tabs in new Window

1 thought
updated Sept. 25, 2016, 8:03 p.m.

In Django forms, you can either use exclude or fields to list a set of fields to exclude or include on the ModelForm.

I prefer to use fields to explicitly include fields on a form because it's easy to add fields to a model without thinking through it's use on a form somewhere in your project. However, if you are adding a field for the purpose of adding it to a form you'll have the form in mind so explicitly adding the field to the fields list will not be forgotten about.

6 thoughts
updated July 28, 2016, 4:04 p.m.

So far we have been teaching him:

  • Sit
  • Down
  • Stay
  • Leave It
  • Come
  • Heel

He has all of these commands down somewhat. Of course being 14 weeks old he is still easily distracted. He is probably best at Sit and Leave It. Come works best if he thinks you are about to play with him or he isn't interested in something else, like a leaf.

5 thoughts
updated July 29, 2015, 12:18 p.m.

I was using the axios library this morning to do some simple AJAX requests and was hitting an issue with the CSRF token header and cookie name being different in that library than what my server expects.

I figured out how to override them by doing the following in the module where I am using axios:

1 thought
updated July 3, 2015, 2:11 p.m.
15 thoughts
updated June 18, 2015, 5:09 a.m.

Dear Zachary

8 thoughts
updated June 2, 2015, 4:15 a.m.
13 thoughts
updated June 1, 2015, 2:55 a.m.

Scotch Eggs

These look amazing:

Must try this recipe

4 thoughts
updated May 23, 2015, 6:12 p.m.

The Pfunky Griddle was suggested by Nate West as a place with GF bread for sandwiches and GF pancake batter.

5 thoughts
updated May 21, 2015, 7:50 p.m.

Excited about hitting two new PRs this week after only being back at working out after being off for 3-4 months due to shoulder surgery.

On Monday, I pulled 505 pounds for a new deadlift 1 rep max.

Last night, I cleaned 275 pounds for a new 1 rep max.

9 thoughts
updated May 21, 2015, 4:04 p.m.

A topic list has been started where you can add things you'd like to see covered and/or vote for existing ones.

3 thoughts
updated May 20, 2015, 3:11 p.m.

There is a video circulating on social media of two young black kids being filmed by their father holding up their report cards littered with F's from a school in Memphis. He is showing the world the humiliating haircuts he gave them to teach them a lesson.

I have already seen this video a few times from a few different friends so didn't think it worth propagating by sharing.

I did want to just say that I think this father is extremely misguided to think that coercion via humiliation as a sound and loving parenting technique. Whether he realizes it or not, this is a form of abuse that will only have lasting negative consequences on his children.

I wonder how much time this dad has spent helping his children with school work? When is the last time he helped his sons set goals and achieve them and then express how proud he is of them? Son need to know their father both loves and is proud of them. As they get older they yearn to know they make their father proud dk far more than even how much he loves them.

This type of abuse breaks my heart and I hate to see it spread through social media as if this father is some sort of hero.

Dads: don't be lazy. Anyone can make a video. Take time instead to build up your children instead of tear them down. Please note, I don't mean their should not be punishments but they should be in private, between a parent and a child, otherwise the punishment is no longer respected and though disliked by the child, is understood as required by a loving parent who cares about them

I hope these two young lads can endure and get past this fathers abuse. I hope they don't get into drugs or gangs as a result of not feeling loved at home or having a father who they can make proud. I hope this father is embarrassed by this public humiliation of his sons rather than getting off on all the shares and likes he is receiving.

7 thoughts
updated April 5, 2015, 1:26 p.m.

TIL

The West Africa country of Liberia was founded as a colony of America in 1822 by American Colonization Society.

It's capital, Monrovia, was named after the then US President, James Monroe.

5 thoughts
updated Dec. 17, 2014, 5:53 p.m.

I think this is the best thing I have read regarding the entire Ferguson issue.

At some point while I was playing or preparing to play Monday Night Football, the news broke about the Ferguson Decision. After trying to figure out how I felt, I decided to write it down. Here are my thoughts:

I'M ANGRY because the stories of injustice that have been passed down for generations seem to be continuing before our very eyes.

I'M FRUSTRATED, because pop culture, music and movies glorify these types of police citizen altercations and promote an invincible attitude that continues to get young men killed in real life, away from safety movie sets and music studios.

I'M FEARFUL because in the back of my mind I know that although I'm a law abiding citizen I could still be looked upon as a "threat" to those who don't know me. So I will continue to have to go the extra mile to earn the benefit of the doubt.

I'M EMBARRASSED because the looting, violent protests, and law breaking only confirm, and in the minds of many, validate, the stereotypes and thus the inferior treatment.

I'M SAD, because another young life was lost from his family, the racial divide has widened, a community is in shambles, accusations, insensitivity hurt and hatred are boiling over, and we may never know the truth about what happened that day.

I'M SYMPATHETIC, because I wasn't there so I don't know exactly what happened. Maybe Darren Wilson acted within his rights and duty as an officer of the law and killed Michael Brown in self defense like any of us would in the circumstance. Now he has to fear the backlash against himself and his loved ones when he was only doing his job. What a horrible thing to endure. OR maybe he provoked Michael and ignited the series of events that led to him eventually murdering the young man to prove a point.

I'M OFFENDED, because of the insulting comments I've seen that are not only insensitive but dismissive to the painful experiences of others.

I'M CONFUSED, because I don't know why it's so hard to obey a policeman. You will not win!!! And I don't know why some policeman abuse their power. Power is a responsibility, not a weapon to brandish and lord over the populace.

I'M INTROSPECTIVE, because sometimes I want to take "our" side without looking at the facts in situations like these. Sometimes I feel like it's us against them. Sometimes I'm just as prejudiced as people I point fingers at. And that's not right. How can I look at white skin and make assumptions but not want assumptions made about me? That's not right.

I'M HOPELESS, because I've lived long enough to expect things like this to continue to happen. I'm not surprised and at some point my little children are going to inherit the weight of being a minority and all that it entails.

I'M HOPEFUL, because I know that while we still have race issues in America, we enjoy a much different normal than those of our parents and grandparents. I see it in my personal relationships with teammates, friends and mentors. And it's a beautiful thing.

I'M ENCOURAGED, because ultimately the problem is not a SKIN problem, it is a SIN problem. SIN is the reason we rebel against authority. SIN is the reason we abuse our authority. SIN is the reason we are racist, prejudiced and lie to cover for our own. SIN is the reason we riot, loot and burn. BUT I'M ENCOURAGED because God has provided a solution for sin through the his son Jesus and with it, a transformed heart and mind. One that's capable of looking past the outward and seeing what's truly important in every human being. The cure for the Michael Brown, Trayvon Martin, Tamir Rice and Eric Garner tragedies is not education or exposure. It's the Gospel. So, finally, I'M ENCOURAGED because the Gospel gives mankind hope.

This was posted on Facebook by Benjamin Watson, Tight End for the New Orleans Saints.

3 thoughts
updated Nov. 26, 2014, 5:36 p.m.

The goal is to have all this done before January 1, 2015 so that I can start writing on a consistent schedule for the new year.

4 thoughts
updated Nov. 15, 2014, 7:54 p.m.

I am considering coming up with a list of 12 different topics that I'll write an essay on in 2015 and publishing that list of topics with or without a schedule with the idea of putting publicly stated goals will hold me more accountable.

11 thoughts
updated Nov. 15, 2014, 7:54 p.m.

Some initial ideas I gave him for projects in learning AngularJS and/or Django/Flask:

  • Chess Game
  • Twitter Clone
  • Blog

I suggested his brainstorm up a dozen or so web application/game ideas that are well known and that interest him before he starts so he doesn't get blocked on coming up with a new idea. Focus less on an idea being good or bad, the what it is is not important.

6 thoughts
updated Nov. 3, 2014, 8:01 p.m.

I have found the YouVersion app to be a great experience to follow reading plans and access whatever version I want (my favorite is the ESV).

5 thoughts
updated Nov. 3, 2014, 1:29 a.m.

The movie looks fantastic!

6 thoughts
updated Oct. 22, 2014, 2:24 a.m.

Whenever a new OS comes up, I like to take the opportunity to start fresh rather than upgrade.

13 thoughts
updated Oct. 20, 2014, 9:09 p.m.

every triple in the RNA defines what amino acid goes next in the protein

12 thoughts
updated Sept. 25, 2014, 3:41 a.m.

9/17/2014 7:15a

WOD #2 for Paleo Challenge

AMRAP, 9:00

  • 20 G2OH- 65 lbs
  • 7 Bar Facing Burpees
  • 15 G2OH- 75 lbs
  • 7 Bar Facing Burpees
  • 10 G2OH- 95 lbs
  • 7 Bar Facing Burpees
  • 5 G2OH- 135 lbs
  • 7 Bar Facing Burpees
  • AMRAP G2OH- 155 lbs

I ended up finished the last 7 burpees but not enough time to start the AMRAP of 155#. Leaving me with a total score of 78.

79 thoughts
updated Sept. 18, 2014, 10:16 p.m.

Edward Buchner discovered, and won a nobel prize for it, that yeast was getting into the juice from the air and it was converting the juice to alcohol. he called these particle enzymes.

Yeast was understood as a substance but then it became known that it was actually a living thing.

Buchner discovered that it was something inside the yeast, not the the yeast itself. he was able to extract a chemical from the yeast and reproduce fermentation with it.

35 thoughts
updated Aug. 19, 2014, 12:11 p.m.

Now, my daughter wants me to teach her. I have been apprehensive about it though as I am concerned if I did something wrong with Ben that I might spoil it for Clare also, and I do not want that to happen.

23 thoughts
updated Aug. 3, 2014, 10:08 p.m.

This stacking can create problems when you have overlapping elements that might not be visible all the time.

Example: A tooltip g or rect that has an opacity: 0 that should only appear when hovering over a certain part of your visualization. The part where the tooltip is will catch the mouseover (and other) mouse events blocking an area of your visualization.

You can avoid this behavior by setting pointer-events="none" on your tooltip object like so: tooltip.attr('pointer-events', 'none').

4 thoughts
updated June 16, 2014, 7:24 p.m.

This article is a about five years old but found it helpful in reading a summary of the different positions held by Piper and Wright.

14 thoughts
updated April 22, 2014, 4:44 a.m.

I didn't want to spend a ton of money on a standing desk without at least trying it out so one afternoon I sketched up some specs, took some measurements and built two legs to put my existing desk on as well as a monitor raise to get my monitor at eye level.

8 thoughts
updated March 21, 2014, 6:54 p.m.

It still a bit early for atom-flake8. It is crashing my editor and reports from others that it's not working too well when it doesn't crash. But good to see there is a start on it. Perhaps I'll fork it and help.

11 thoughts
updated March 6, 2014, 5:48 p.m.

Katie had mentioned a link in her lighting-talk to a Github repo with the curriculum for running a class. But I don't remember nor am unable to find it right now. However, I think that would be a very doable thing to do at my kid's school one Saturday.

11 thoughts
updated Feb. 24, 2014, 2:07 a.m.

My Crossfit Journal has been relocated to here.

2 thoughts
updated Feb. 21, 2014, 8:20 p.m.

Data Storytelling the Pixar Way from my pals at Juice Analytics.

I especially love #11 and how it relates to how ThoughtStreams can be valuable in getting ideas to "paper".

1 thought
updated Jan. 27, 2014, 8:50 p.m.

God often blesses us with a "grace given" in the circle of "grace denied."

Future Grace, chapter 4, location 1389

9 thoughts
updated Oct. 9, 2013, 5:27 p.m.

So I am already tired of the unlock animation. I wonder if I can turn it off. It was snazzy the first couple of times but now it just feels slow.

1 thought
updated Sept. 21, 2013, 4:03 p.m.

Here is a great video profile of Adam Brown:

5 thoughts
updated Sept. 5, 2013, 10:39 p.m.

There were large strikes by workers in response to pay cuts and/or layoffs. This was everyone's first time at this (or so it seems to me from my read of the history).

Management not having precedent to figure out how to deal with lower demand/economic contraction while having a large workforce. It certainly didn't make sense business-wise to continue producing when you couldn't sell at the same volumes previously.

Labor seems to be first realizing that they can in fact collectively refuse to work and put pressure back on Management to comply with demands.

While yet an undergraduate student, Coolidge had the wisdom and foresight to recognize just how short-sighted this striking business was. Labor might win in the short term but were only hurting themselves in the long run.

I think this is part of when the story of Coolidge starts to crystalize some of his socio/economic/political opinions. One thing is for certain, is that he was thinking through these issues on his own rather than adopting the views of those around him or from his upbringing.

He seems to have been an extremely reflective and thoughtful individual who was not afraid at where a course of reason and logic might take him.

5 thoughts
updated Feb. 24, 2013, 6:14 a.m.

When tax rates are reduced, investment in productive enterprise is encouraged. When productive enterprise receives investment capital, the workers must be hired to produce output to yield a return on that investment. When value is created through this labor in a new enterprise, our economy expands and new wealth is created. When new wealth is created taxes are paid on income that didn't previously exist.

As a result of lower tax rates and more productive investment, there are more jobs and less unemployment. Less unemployment means more income (that didn't previously exist) which taxes are extracted from. If the venture succeeds and new wealth is created for the investors, again, more taxes are paid on gains that didn't previously exist.

11 thoughts
updated Feb. 18, 2013, 5:02 a.m.

Growth comes through analogy, through seeing how things connect rather than only seeing how they might be different.

—Sir Ken Robinson, The Element: How Finding Your Passion Changes Everything

3 thoughts
updated Feb. 18, 2013, 4:23 a.m.

Just produced a Littlewood fractal of (18 degrees/400 size) but it seems skewed, perhaps I made an error in transposing the code when moving to scripts:

34 thoughts
updated Jan. 3, 2013, 4:26 p.m.

Now it's just getting the SGE plugin in SAGA-python working. So far just all kinds of SSH connection issues.

30 thoughts
updated Dec. 26, 2012, 3:48 p.m.
1 thought
updated Sept. 25, 2016, 8:03 p.m.
6 thoughts
updated July 28, 2016, 4:04 p.m.
5 thoughts
updated July 29, 2015, 12:18 p.m.
1 thought
updated July 3, 2015, 2:11 p.m.
8 thoughts
updated June 2, 2015, 4:15 a.m.
13 thoughts
updated June 1, 2015, 2:55 a.m.
3 thoughts
updated May 20, 2015, 3:11 p.m.
5 thoughts
updated May 21, 2015, 7:50 p.m.
3 thoughts
updated Nov. 26, 2014, 5:36 p.m.
4 thoughts
updated May 23, 2015, 6:12 p.m.
4 thoughts
updated Nov. 15, 2014, 7:54 p.m.
11 thoughts
updated Nov. 15, 2014, 7:54 p.m.
15 thoughts
updated June 18, 2015, 5:09 a.m.

TIL

5 thoughts
updated Dec. 17, 2014, 5:53 p.m.
6 thoughts
updated Nov. 3, 2014, 8:01 p.m.
5 thoughts
updated Nov. 3, 2014, 1:29 a.m.
7 thoughts
updated Oct. 31, 2014, 7:43 p.m.
13 thoughts
updated Oct. 20, 2014, 9:09 p.m.
12 thoughts
updated Sept. 25, 2014, 3:41 a.m.
35 thoughts
updated Aug. 19, 2014, 12:11 p.m.
4 thoughts
updated June 16, 2014, 7:24 p.m.
14 thoughts
updated April 22, 2014, 4:44 a.m.
8 thoughts
updated March 21, 2014, 6:54 p.m.
11 thoughts
updated March 6, 2014, 5:48 p.m.
11 thoughts
updated Feb. 24, 2014, 2:07 a.m.
2 thoughts
updated Feb. 21, 2014, 8:20 p.m.
1 thought
updated Jan. 27, 2014, 8:50 p.m.
79 thoughts
updated Sept. 18, 2014, 10:16 p.m.
9 thoughts
updated May 21, 2015, 4:04 p.m.
9 thoughts
updated Oct. 9, 2013, 5:27 p.m.
1 thought
updated Sept. 21, 2013, 4:03 p.m.
5 thoughts
updated Sept. 5, 2013, 10:39 p.m.
6 thoughts
updated Oct. 22, 2014, 2:24 a.m.
23 thoughts
updated Aug. 3, 2014, 10:08 p.m.
7 thoughts
updated April 5, 2015, 1:26 p.m.
5 thoughts
updated Feb. 24, 2013, 6:14 a.m.
11 thoughts
updated Feb. 18, 2013, 5:02 a.m.
3 thoughts
updated Feb. 18, 2013, 4:23 a.m.
34 thoughts
updated Jan. 3, 2013, 4:26 p.m.
30 thoughts
updated Dec. 26, 2012, 3:48 p.m.

Streams by this user that have been favorited by others.

4 thoughts
updated June 16, 2014, 7:24 p.m.
0

shopt -s histappend will append to history without ever wiping it out

history -a will update your history immediately.

history -n will read from history file when run instead of just at start of terminal.

So, add the shopt -s histappend to your .bash_profile or .bashrc and then set your PROMPT_COMMAND with the history commands like so:

export PROMPT_COMMAND="history -a; history -n"

0

Beginning of an evening 5 mile walk...

0

It's really disturbing to me to see all the anti-police sentiment flung about on social media.

Should police that abuse their positions be held accountable? Absolutely.

Should we paint the picture that all cops are bad because of the actions of a few. Absolutely not. This is the same thing as racism and is hypocritical of those defending the riotous behavior to accuse police in general.

People aren't perfect. People do bad things. Doesn't matter if that person is a cop, is black, is white, purple or yellow. They are individuals. This whole grouping of people is problematic.

We need peace. I think most people despite what the media portrays yearn for peace. I don't know why it's permissible to riot, destroy property, throw garbage cans at bystanders, best people up. But I really don't understand folks that defend these lawless violent actions when in the same breath they seem to indict all police officers who by and large risk their lives daily to protect our life and property.

America seems upside down and backwards these days and it makes me sad.

0

The most difficult thing in the world is to know how to do a thing and to watch someone else do it wrong without comment.

-Theodore H. White.

0

Thought provoking talk

1

So very proud of my grandfather and what he built, but more importantly, how he built it.

1

Just saw this on Serious Wonder's Facebook post:

This is a picture from the Curiosity Rover on Mars showing Earth from the Perspective of Mars. You are literally looking at your home from the Perspective of another planet.

0

Open up Work and Personal Email Tabs in new Window

paltman liked domenkozar's thought #10887
1 year, 10 months ago
0

shopt -s histappend will append to history without ever wiping it out

history -a will update your history immediately.

history -n will read from history file when run instead of just at start of terminal.

So, add the shopt -s histappend to your .bash_profile or .bashrc and then set your PROMPT_COMMAND with the history commands like so:

export PROMPT_COMMAND="history -a; history -n"

0

In Django forms, you can either use exclude or fields to list a set of fields to exclude or include on the ModelForm.

I prefer to use fields to explicitly include fields on a form because it's easy to add fields to a model without thinking through it's use on a form somewhere in your project. However, if you are adding a field for the purpose of adding it to a form you'll have the form in mind so explicitly adding the field to the fields list will not be forgotten about.

mandarg favorited paltman
2 years, 5 months ago
2 years, 6 months ago
1

Always run git clean -fdx prior to creating a Python release to eliminate possibility of unknown bits getting including in your package.

Discovered a file I had deleted from a previous release laying around in a build/ directory that was getting shipped with subsequent releases somehow, but only in the wheel releases, not the standard sdist.

2 years, 7 months ago
paltman liked brosner's thought #9712
2 years, 7 months ago
2 years, 7 months ago
0

The full details of my fixes can be found in this commit.

I'd like to point the fixes individually though as well:

The first example was just a case of reversing the logic so that I only re-raise the exception if it's not the thing we want to ignore. No wizardry there.

The next fix is probably one of my favorite tricks. Often you want to effectively retrieve a single object or return None. It's ok if it doesn't exist and if multiple exist you just need the first one. You can either write a queryset check the count or exists before indexing into it, or wrap a get in a try/except (which is what I originally had in this case), or you can use next and iter do things in a single line and single query. In this example, it was:

customer = next(iter(queryset)), None)

Then you can check if the customer is None and act on it accordingly.

The third fix was simply checking for the existence of the field name in a way that wouldn't raise an exception. In this specific case, I want to add the ability to search by a user's email if the user model in question has an email field like the default django.contrib.auth.User has.

In the fourth and last fix I simply needed to use the .get() method on the response object then I could avoid needing to worry about the KeyError all together.

1

A recent thing that Jason brought to my attention today was bandit. So without delay, I installed and ran it with defaults against pinax-stripe. It reported three issues that previous static analyzers failed to point out:

Run metrics:
    Total lines of code: 2547
    Total lines skipped (#nosec): 0
    Total issues (by severity):
        Undefined: 0.0
        Low: 3.0
        Medium: 0.0
        High: 0.0
    Total issues (by confidence):
        Undefined: 0.0
        Low: 0.0
        Medium: 0.0
        High: 3.0

All three issues were cases of using pass in a try/except block.

0

Recently, I've been doing a lot of work prepping a relaunch of django-stripe-payments, renamed along the way to pinax-stripe.

In this process, I have gone down the rabbit hole of trying all kinds of static analysis things to help inform and drive quality up.

0

On the prompting of Jason Myers, I'm going to try my best to keep a journal of little code puzzles and improvements that I make in the course of writing and maintaining open source code in my never ending search for higher quality code.

2 years, 9 months ago
0

So far we have been teaching him:

  • Sit
  • Down
  • Stay
  • Leave It
  • Come
  • Heel

He has all of these commands down somewhat. Of course being 14 weeks old he is still easily distracted. He is probably best at Sit and Leave It. Come works best if he thinks you are about to play with him or he isn't interested in something else, like a leaf.

0

There is a lot of different crate training advice on the internet and it's all pretty much the same and for the most part is what we followed.

Two aspects that we haven't followed is the idea of never forcing him in and never using the create as punishment.

We have certainly forced him to go in. It's not a violent shoving but we initially had to coax him in with some gentle pushing.

Also, when he starts getting wild, or biting on too many things, he gets a timeout in his crate to settle down. We don't make a big deal about it but do pull him over by his collar and tell him to get in.

It has worked great.

0

The first thing we did was decide to Crate Train as a method of housebreaking and reducing the number of inside accidents.

The idea is that if the dog spends most of his time in his crate and is taking outside immediately after getting out of his crate, he'll learn to relieve himself outside and associate outside with where you eliminate.

This works because dogs instinctually won't mess in their own den and it will take a while for him to think of the whole house as his den, but will get the crate immediately, given the crate is not too large for him.

The crate also becomes a safe place for him to sleep at night. Safe for him as well as for our furniture!

Lastly, he will have a place to retreat to if things scare or startle him.

0

If we are going to have a dog, it is going to be a well-trained dog, or at least we will make the attempt to have him well-behaved.

This means there is a lot to learn, fast.

0

We recently got a 9-week old "golden doodle" (standard poodle sire, golden retriever dam).

We named him Cash, after Johnny Cash, of course.

0

I was using the axios library this morning to do some simple AJAX requests and was hitting an issue with the CSRF token header and cookie name being different in that library than what my server expects.

I figured out how to override them by doing the following in the module where I am using axios:

3 years ago
0
0
3 years, 1 month ago
0
3 years, 1 month ago
0

Beginning of an evening 5 mile walk...

paltman favorited iBuildThingz
3 years, 1 month ago

Thoughts by this user that have been liked by others.

1

The most awesome and terrifying experience of my life so far (and I imagine it will never be matched by anything else) is that of being a father.

1

Safari

I was a big user of Chrome previously but want to give Safari a chance to be my default browser.

I am a heavy user of Trello and one thing that I am noticing missing are the styles I had for Trello from http://userstyles.org.

I found Stylish which allows me to install two styles that brings back the card numbers and list counts.

1

Ok, figured it out. Apparently there are a lot of issues with this combination and how SublimeLinter ferret outs the path.

It's less than ideal but in the User settings for the SublimeLinter, I added the following to the paths for OS X:

"paths": {
    "linux": [],
    "osx": [
        "/usr/local/Cellar/pyenv/20141012/versions/2.7.8/bin/"
    ],
    "windows": []
},

This points to the pyenv I created for the installed Python.

1

Just saw this on Serious Wonder's Facebook post:

This is a picture from the Curiosity Rover on Mars showing Earth from the Perspective of Mars. You are literally looking at your home from the Perspective of another planet.

1

So very proud of my grandfather and what he built, but more importantly, how he built it.

1
1

A recent thing that Jason brought to my attention today was bandit. So without delay, I installed and ran it with defaults against pinax-stripe. It reported three issues that previous static analyzers failed to point out:

Run metrics:
    Total lines of code: 2547
    Total lines skipped (#nosec): 0
    Total issues (by severity):
        Undefined: 0.0
        Low: 3.0
        Medium: 0.0
        High: 0.0
    Total issues (by confidence):
        Undefined: 0.0
        Low: 0.0
        Medium: 0.0
        High: 3.0

All three issues were cases of using pass in a try/except block.

1

Always run git clean -fdx prior to creating a Python release to eliminate possibility of unknown bits getting including in your package.

Discovered a file I had deleted from a previous release laying around in a build/ directory that was getting shipped with subsequent releases somehow, but only in the wheel releases, not the standard sdist.