Python
# use direnv layout python instead
# not... pip install --upgrade pip; setuptools virtualenv
# list and dict comprehension. See below
[(x) for x in [1,2,3] if x != 2]
{x: x**2 for x in (2, 4, 6)}
print('.', end='')
from devtools import debug
pip install rich
if __name__ == "__main__":
main()
pip install -U pip
pip install -r requirements.txt
pip install -r https://github...
python -c "import boto3; print(boto3.__version__)"
print(bin(42)) # '0b101010'
print(f"{42:b}") # '101010'
print(f"{42:08b}") # '00101010' (zero-padded to 8 bits)
print(f"{0xffff:b}")
print(f"{2**120:b}")Sample main with arg processing
#!/usr/bin/env python import argparse import os from dotenv import dotenv_values class MyClass: def __init__(self, config1): self.config = config1 pass def main(self, params): pass if __name__ == "__main__": config = { **dotenv_values(".env"), # load shared development variables **os.environ, # override loaded values with environment variables } parser = argparse.ArgumentParser(description="create_tenant") parser.add_argument('--name', type=str, help='Tenant Name', required=True) parser.add_argument('--domain', type=str, help='Tenant Domain', required=True) args = parser.parse_args() MyClass(config).main(args)
Docs
docs.python.org
- asyncio — async/await
- defaultdict - search how to use
Time
- Yesterday
from datetime import date from datetime import timedelta today = date.today() yesterday = today - timedelta(days = 1)
List Comprehension
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # can be expanded [ (x, y) for x in [1,2,3] for y in [3,1,4] if x != y ]Dense Example
return [ name for _, name, is_pkg in pkgutil.iter_modules([command_dir]) if not is_pkg and not name.startswith("_") ]
Dict Comprehension
{x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36} dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} # Double each value in the dictionary double_dict1 = {k:v*2 for (k,v) in dict1.items()} print(double_dict1) for i, v in enumerate(['tic', 'tac', 'toe']): print(i, v)
Dict to Object
class Struct: def __init__(self, **entries): self.__dict__.update(entries) args = {'a': 1, 'b': 2} s = Struct(**args) s # <__main__.Struct instance at 0x01D6A738> s.a # 1 # json class obj_hook: def __init__(self, dict1): self.__dict__.update(dict1) json.loads(user_json, object_hook=obj_hook)
Libs
Network
- gevent.org - User greenlet for high-level API
Shell execution
- Fabric - remote
- Invoke - local
- Click - CLI util
- typer.tiangolo.com — CLI util
shtab (tab completion) — not great
Databases
Auth
- osohq.com — Auth
Parsing
Templating
- Jinja — fast, expressive, extensible templating engine
Monitoring
Configuration/ENV
Spreadsheets
Web Scraping
Scrapy
Security
- https://pyup.io/ — secure third-party modules
JSON
import json try: with open('data.json', 'r') as file: data = json.load(file) print("File data =", data) except FileNotFoundError: print("Error: The file 'data.json' was not found.") except json.JSONDecodeError: print("Error: Failed to decode JSON from the file.")
YAML
import yaml data = { 'name': 'Amit', 'age': 25, 'city': 'Mumbai', 'skills': ['Python', 'Data Analysis', 'Machine Learning'] } with open('data.yaml', 'w') as file: yaml.dump(data, file) with open('data.yaml', 'r') as file: loaded_data = yaml.safe_load(file)
GraphQL
Docker
- https://github.com/google/containerregistry - interact with docker registry
Notebooks
Jupyter
pip3 install --upgrade pip pip3 install jupyter jupyter notebook jupyter notebook notebook.ipynbMyBinder
Data Science
- CodeCut - stay sharp in data science one tip at a time
- docs.pydantic.dev - Data
- pydantic — Data validation and settings management using python type annotations
- https://thispointer.com/ - Pandas, Numpy, …
Scikit
Machine Learning
Machine Learning with Python
pip install fastapi[all] pip install -U scikit-learn uvicorn main:app --reload npm install -g angular-cli ng serve
Module Loading Help
List modules and directories
python -c "import sys; print('\n'.join(sys.path))" python -c 'import sys; print ("\n".join(list(sorted(list(map(lambda x: str(x),sys.modules))))))'
Snipets
import os import os.path try: os.getcwd() except OSError: try: os.chdir(os.path.expanduser('~')) except OSError: os.chdir('/') # read file try: with open('data.json', 'r') as file: data = file.read() print("File data =", data) except FileNotFoundError: print("Error: The file 'data.json' was not found.") # path list print "\n".join(sys.path) # get ip hostname -I python -c "import socket; s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.connect(('8.8.8.8', 80)); print(s.getsockname()[0]); s.close()"