• 1 Post
  • 18 Comments
Joined 1 year ago
cake
Cake day: July 8th, 2023

help-circle


  • ugh Jira. At my first job in 2006 I was the Jira administrator. Every project wanted their own custom fields. We had a Jira project for “infra” problems it had 3 fields yall Title/Description/priority and it worked so well. Moved to a company with a simple ticket system with not much more but the concept of “tags” it was heavily






  • Any time you need different behavior between static type checking and runtime.

    in 3.10 I’m using it to work around issue with NamedTuple generics. typing_extensions.NamedTuple allows Generics at runtime but typing.NamedTuple doesn’t. But the type checker we are using doesn’t support typing_extensions.NamedTuple like it does for the typing version so we lie at type checking time to get the typing to make sense but have different runtime type because otherwise its a TypeError



  • IMHO programs don’t belong on pypi only libraries. Its a waste of namespace.

    Explicit is better than implicit, read the zen of python(its short). Don’t be too magical. Don’t reach for a class if you have no state. Watch some jackdied talks from old pycons. You don’t need custom exceptions the stdlib has plenty. Also if its not documented don’t use it. Don’t use star imports.

    Black just use it don’t fight it, don’t waste brain space with formatting rules. “You can have any formatter you want as long as its black”. Use default black settings. People who don’t are heretics :P

    sys.path or PYTHONPATH is how imports are resolved. Much like shells looking for binaries. IMHO you should never adjust either. The current directory is always added to sys.path. but beyond that directories are packages. Use __init__.py when you want to provide a module for what happens when you import a package.

    python3.11 -m venv .venv

    This is how you should create your venv. After that activate it and use pip. You should setup a requirements.txt for your project, then you can use pip -r to configure your env. Global install of third-party libraries is always a bad idea in practice. Version constraints make that almost impossible these days.









  • Yeah zero downtime. You ship out the new features but gate them using some system you can control. When all the new features are shipped you turn up the new features until it gets to 100%. This lets you observe the real world behavior of the new features if they don’t cache well or cause 500s or what have you you can turn it off without having to ship new code.

    Also if you keep all these feature flags, if you have a situation where you have capacity problems you can turn down features for the survival of the service as a whole.