Skip to content

Instantly share code, notes, and snippets.

View rednafi's full-sized avatar
🏠
Working from home

Redowan Delowar rednafi

🏠
Working from home
View GitHub Profile
@rednafi
rednafi / retry.py
Last active April 5, 2020 09:33
Retry decorator with exponential backoff
import logging
import time
from functools import partial, wraps
def retry(func=None, exception=Exception, n_tries=5, delay=5, backoff=1, logger=False):
"""Retry decorator with exponential backoff.
Parameters
----------
@rednafi
rednafi / .env
Last active June 3, 2020 14:52
Pedantic config management using Pydantic
ENV_STATE="dev" # or prod
DEV_REDIS_HOST="127.0.0.1"
DEV_REDIS_PORT="4000"
PROD_REDIS_HOST="127.0.0.2"
PROD_REDIS_PORT="5000"
@rednafi
rednafi / calling_async_func.py
Last active June 4, 2020 11:42
Async By Example
import asyncio
import time
async def square_func(n: int) -> int:
await asyncio.sleep(2)
print(f"square_func sleeping for 2 seconds")
return n * n
@rednafi
rednafi / proxy_pattern_python.py
Last active June 16, 2020 06:55
Using the Proxy design pattern in Python to decouple logging and exception handling from the core logic
"""
This can be used as a template to execute Proxy
design pattern with Python.
* Get the json response from PostMan API
url: https://postman-echo.com/get?foo1=bar_1&foo2=bar_2
* Print the header properties
* Print the argument properties
@rednafi
rednafi / sqla_dict.py
Last active June 30, 2020 18:03
Python's dict-like custom data structure that can store data in any SQLAlchemy supported database. Uses transaction.
"""
This is a self contained custom data structure with dict like
key-value storage capabilities.
* Can store the key-value pairs in any sqlalchemy supported db
* Employs thread safe transactional scope
* Modular, just change the session_scope to use a different db
* This example uses sqlite db for demonstration purpose
The code is inspired by Raymond Hettinger's talk `Build powerful,

Keybase proof

I hereby claim:

  • I am rednafi on github.
  • I am rednafi (https://keybase.io/rednafi) on keybase.
  • I have a public key ASDO_V0OZ4SXdN3KCubDf2LC6PkT_uLYCxqjhn7LYeGpSQo

To claim this, I am signing this object:

@rednafi
rednafi / pymysql_ssh.py
Created July 19, 2020 12:01
Pymysql with SSH
from os.path import expanduser
import pandas as pd
import paramiko
import pymysql
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder
home = expanduser("~")
mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath)
@rednafi
rednafi / dataclasses_singledispatch.py
Last active August 6, 2020 04:18
A callable that takes a dataclass object and applies appropriate target-methods based on the types of the attributes
from dataclasses import dataclass
from functools import singledispatchmethod
from typing import List, TypeVar
T = TypeVar("T")
class Process:
@singledispatchmethod
def _process(self, arg: T) -> None:
@rednafi
rednafi / prefix_meta.py
Created August 6, 2020 15:27
Add prefixes before dataclass attributes dynamically
from dataclasses import dataclass
class PrefixMeta(type):
def __new__(cls, name, bases, attrs):
try:
prefix = attrs["Config"].prefix
except (KeyError, AttributeError):
prefix = None
if prefix:
@rednafi
rednafi / composed_inheritance.py
Last active August 22, 2020 06:38
Inheritance-like auto delegation via composition in Python
from typing import Dict, Any
class Engine:
def __init__(self, name: str, sound: str) -> None:
self.name = name
self.sound = sound
def noise(self) -> str:
return f"Engine {self.name} goes {self.sound}!"