Skip to content

Instantly share code, notes, and snippets.

View andriykohut's full-sized avatar

Andrii Kohut andriykohut

  • https://p.ota.to/
  • Lviv, Ukraine
View GitHub Profile
@andriykohut
andriykohut / expression_evaluation.py
Last active November 22, 2023 08:50
Simple expression evaluation using AST
import ast
import json
import os
from typing import Callable, Mapping
FUNCTIONS: Mapping[str, Callable[..., str]] = {
"concat": lambda *args: "".join(args),
"json_object": lambda **kwargs: json.dumps(kwargs),
"env": lambda name: os.getenv(name, ""),
"format": lambda fmt, *args, **kwargs: fmt.format(*args, **kwargs),
diff --git a/backend/apps/api/versions/v1/urls.py b/backend/apps/api/versions/v1/urls.py
index af63485..2980116 100644
--- a/backend/apps/api/versions/v1/urls.py
+++ b/backend/apps/api/versions/v1/urls.py
@@ -83,7 +83,7 @@ urlpatterns = [
name="source-objects",
),
path(
- "source/<int:source_id>/objects/<int:object_id>/",
+ "source/<int:source_id>/objects/<int:pk>/",
@andriykohut
andriykohut / recursive_vs_iterative_resolve.py
Created August 29, 2018 10:00
Component resolution performance
from tornado.httpclient import HTTPRequest
import timeit
from collections import deque
class View:
pass
package main
import "fmt"
func blah(data []map[string]interface{}) map[string]string {
result := make(map[string]string)
for _, item := range data {
tagTypeName := item["tag_type_name"].(string)
tagName := item["tag_name"].(string)
if tagTypeName == "profanity_status" {
@andriykohut
andriykohut / deco_state.py
Created February 27, 2018 09:37
Class-based decorator with state
from functools import update_wrapper
class call_count:
def __init__(self, name):
self.__name = name
self.__count = 0
def __call__(self, fn, *args, **kwargs):
def wrapper(*args, **kwargs):
@andriykohut
andriykohut / main.go
Last active February 26, 2018 20:53
Go channels - recieving results in batches
package main
import (
"fmt"
)
func genInts(count int) (ints chan int, quit chan bool) {
ints, quit = make(chan int), make(chan bool)
go func() {
defer close(ints)
@andriykohut
andriykohut / async_deco.py
Created February 14, 2018 12:27
Async Decorator
import time
import asyncio
from functools import wraps
from timeit import default_timer
def time_it(fn):
if asyncio.iscoroutinefunction(fn):
@wraps(fn)
async def wrapper(*args, **kwargs):
@andriykohut
andriykohut / load_modules.py
Created December 8, 2017 12:53
Dynamicly load modules
import pkgutil
def get_test_routes():
from tests import routes
test_modules = []
for importer in pkgutil.iter_modules(routes.__path__):
if importer.ispkg is False:
print(f"Loading test routes for {importer.name}")
test_modules.append(importer.module_finder.find_module(importer.name).load_module(importer.name))
@andriykohut
andriykohut / wrkd.py
Created October 9, 2017 09:19
Distributed wrk
#!/usr/bin/env python3
import argparse
import subprocess
import sys
from collections import defaultdict
from statistics import mean
HELP = """Usage: wrkd <options> <url>
@andriykohut
andriykohut / profile_ctx.py
Created August 23, 2017 09:21
Profiling context management
import cProfile
import contextlib
import io
import pstats
import sys
import timeit
@contextlib.contextmanager
def prof(*restrictions, stdout=True, dump=None, sortby='cumulative'):