After struggling to get dependencies inside of middleware I learned that you can make global dependencies at the app level. I used this to set the user on every single route of the application without needing Depend on getting the user on each route.
Posts tagged: thought
All posts with the tag "thought"
This page shows how to customize your fastapi errors. I found this very useful to setup common templates so that I can return the same 404’s both programatically and by default, so it all looks the same to the end user.
Setting an additional log handler to the uvicorn logger for access logs in fastapi was not straightforward, but This post was very helpful.
Setting tags in your fastapi endpoints will group them in the docs. You can also set some metadata around the tags to get nice descriptions.
Here is a full example from the post.
Most bloggers on my twitter blog right into a file that goes on git. I kinda expected to have more database folk. I have my blog in markdown on git and the editing experience is top notch. I can just find files edit them in MY EDITOR, push them and I got a post. I am running thoughts in a sqlite database with a fastapi backend, and holy crap the instant nature of posting feels so much better. Both sides have good points.
I often want to reach for non existing list comprehensions in jinja 2, Here are a few nice equivalents.
I fixed my missing macro recording indicator that I lost and was never quite sure why. (because I forgot that I set cmdheight=0).
DataDog ddqa is building out a textual app and deploying it with pyapp. They have CI setup to fully build and cross compile their textual tui into github releases that you can just download from their releases page. This is something I am looking at for markata. This would be pretty sweet to be able to make it just work on places like windows. It would also be interesting to try to build a full desktop app with pyapp.
Full list of imagemagick color names.
I’m going to give this trick a shot on my sites, and see how I like it.
* { min-width: 0 }
Down in the comments @adamwathan goes on to say.
Basically every layout overflow bug ever boils down to some flex or grid child needing min-width: 0 😄
Oh and @ryanflorence also says in the comments.
...
Nice message by @tusharsadhwani.
Write it down.
You had to dig deeper than face value at something.
Write it down.
...
Excluding routes from fastapi docs, can be done from the route configuration using `include_in_schema`. This is handy for routes that are not really api based or duplicates.
From the Docs #
from fastapi import FastAPI app = FastAPI() @app.get("/items/", include_in_schema=False) async def read_items(): return [{"item_id": "Foo"}] trailing slash #
I’ve had better luck just routing both naked and trailing slash routes in fastapi. I’ve had api’s deployed as a subroute to a site rather than a subdomain, and the automatic redirect betweens them tended to always get messed up. This is pretty easy fix for the pain is causes just give vim a yyp, and if you don’t want deuplicates in your docs, ignore one.
...
You can protect your fastapi docs behind auth so that not only can certain roles not run certain routes, but they cannot even see the docs at all. This way no one that shouldn’t be poking around can even discover routes they shouldn’t be using.
Here is the soluteion provided by @kennylajara
This is a handy guide to cancelling stripe subscriptions.
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys import stripe stripe.api_key = "sk_test_51ODvHtB26msLKqCAPBAo1qkBBuIfT5tQBX6YFWCLMsPixIExxITCRVa9tNCIqkdQS8olhR79NYXsFWBPKsM3LbGO00zEcNQfNI" stripe.Subscription.modify( "sub_49ty4767H20z6a", cancel_at_period_end=True, )
You can even inverse it by flipping True to False and re activate the subscription.
You can find your customers next billing date through the stripe api by using Invoice. and passing in customer, customer_details, subscription, or schedule.
import stripe stripe.api_key = "sk_test_51ODvHtB26msLKqCAPBAo1qkBBuIfT5tQBX6YFWCLMsPixIExxITCRVa9tNCIqkdQS8olhR79NYXsFWBPKsM3LbGO00zEcNQfNI" invoice = stripe.Invoice.upcoming(customer="cus_NeZwdNtLEOXuvB")
Within the invoice, you can find the next_payment_attempt as a epoch.
Stripe has it’s own query language for querying data. I’m just getting into using it and it seems pretty good so far. I needed to lookup the price for products. I was able to find prices for my product using the python api as shown below.
Prefix Description Notes ac_ Platform Client ID Identifier for an auth code/client id. acct_ Account ID Identifier for an Account object. aliacc_ Alipay Account ID Identifier for an Alipay account. ba_ Bank Account ID Identifier for a Bank Account object. btok_ Bank Token ID Identifier for a Bank Token object. card_ Card ID Identifier for a Card object. cbtxn_ Customer Balance Transaction ID Identifier for a Customer Balance Transaction object. ch_ Charge ID Identifier for a Charge object. cn_ Credit Note ID Identifier for a Credit Note object. cs_live_ Live Checkout Session ID Identifier for a checkout Session object in live mode. cs_test_ Test Checkout Session ID Identifier for a checkout Session object in test mode. cus_ Customer ID Identifier for a Customer object. dp_ Dispute ID Identifier for a Dispute object. evt_ Event ID Identifier for an Event object. fee_ Application Fee ID Identifier for an Application Fee object. file_ File ID Identifier for a File object. fr_ Application Fee Refund ID Identifier for an Application Fee Refund object. iauth_ Issuing Authorization ID Identifier for an Issuing Authorization object. ic_ Issuing Card ID Identifier for an Issuing Card object. ich_ Issuing Card Holder ID Identifier for an Issuing Card Holder object. idp_ Issuing Dispute ID Identifier for an Issuing Dispute object. ii_ Invoice Item ID Identifier for an Invoice Item object. il_ Invoice Line Item ID Identifier for a Invoice Line Item object. in_ Invoice ID Identifier for an Invoice object. ipi_ Issuing Transaction ID Identifier for an Issuing Transaction object. link_ File Link ID Identifier for a File Link object. or_ Order ID Identifier for an Order object. orret_ Order Return ID Identifier for an Order Return object. person_ Person ID Identifier for a Person object. pi_ Payment Intent ID Identifier for a Payment Intent object. pk_live_ Live public key Public key in a live environment. pk_test_ Test public key Public key in a test environment. pm_ Payment Method ID Identifier for a Payment Method object. po_ Payout ID Identifier for a Payout object. price_ Price ID Identifier for a Price object. prod_ Product ID Identifier for a Product object. prv_ Review ID Identifier for a Review object. pst_live_ Live Connection token Connection token in a live environment. pst_test_ Test Connection token Connection token in a test environment. py_ Payment ID Identifier for a Payment object. pyr_ Payment Refund ID Identifier for a psuedo Refund object of a payment. qt_ Quote ID Identifier for a Quote object. rcpt_ Receipt ID Identifier for a receipt. re_ Refund ID Identifier for a Refund object. req_ Request ID Identifier for a HTTP Request rk_live_ Live restricted key Restricted key for live environment eg. stripe-cli rk_test_ Test restricted key Restricted key for test environment eg. stripe-cli seti_ Setup Intent ID Identifier for a Setup Intent object. si_ Subscription Item ID Identifier for a Subscription Item object. sk_live_ Live secret key Secret key in a live environment. sk_test_ Test secret key Pecret key in a test environment. sku_ SKU ID Identifier for a SKU object. sli_ Subscription Line Item ID Identifier for a Subscription Line Item object. sqr_ Scheduled Query Run ID Identifier for a Scheduled Query Run object. src_ Source ID Identifier for a Source object. src_ Source ID Identifier for a Source object. sub_ Subscription ID Identifier for a Subscription object. tml_ Terminal Location ID Identifier for a Terminal Location object. tmr_ Terminal Reader ID Identifier for a Terminal Reader object. tok_ Token ID Identifier for a Token object. trr_ Transfer ID Identifier a Transfer object. tu_ Topup ID Identifier for a Topup object. txi_ Tax ID Identifier for a customer Tax object. txn_ Transaction ID Identifier for a Transaction object. txr_ Tax Rate ID Identifier for a Tax Rate object. we_ Webhook Endpoint ID Identifier for a webhook endpoint. whsec_ Webhook Secret Secret key for signing a web hook.
Stripe has so many keys and ids this is a very helpful list to decode what exactly an id is for.
Dang this is such a good message. I can’t exactly relate to being forced into the overworking situation that PirateSofware is talking about. I can relate to being conditioned to feeling a certain way and changing that is very difficult. I can also relate to not feeling like I am getting enough done in the day. Sometimes a bit of separation is good.
Get those print colors exact
I’m working on something that might go to print, so I want the page breaks to happen somewhat in my control as the content author. As I do my writing I break my content up in to many short sections using h2, sometimes an h3. These are generally short sections that go together, should stay together, and typically are not too lengthy to cause a large white space in print.
I found a way in css to only allow page breaks to happen on h2 and h3, and it turned out perfect, suck it WSIWIG editors