Skip to content

Instantly share code, notes, and snippets.

View mpkocher's full-sized avatar

M. Kocher mpkocher

View GitHub Profile
@mpkocher
mpkocher / Declined.scala
Last active July 2, 2022 23:46
ZIO 1.x + Decline Example for creating CLI tools and running them with scala-cli.
//> using platform "jvm"
//> using scala "2.13.8"
//> using lib "dev.zio::zio:1.0.14"
//> using lib "com.monovore::decline:2.2.0"
//> using mainClass "DeclinedApp"
// Runnable using `scala-cli run Declined.scala -- --user Ralph --alpha 3.14`
import zio.{ExitCode, ZEnv, ZIO, Task, RIO, IO, UIO, URIO}
import zio.console._
@mpkocher
mpkocher / scrape_gibson.py
Last active March 18, 2021 07:04
Scrape Gibson.com
import sys
import json
import logging
from typing import List, Tuple, Dict, Any
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
log = logging.getLogger(__name__)
@mpkocher
mpkocher / pydantic-cli-sharing-subparse-options.py
Created October 29, 2020 22:54
Sharing Subparser Options in pydantic-cli
"""
Example of Using a Subparser
Demonstration of using two Pydantic data models to
build a subparser and sharing options.
The major friction point and limitation is the order in which the options appear in --help.
For example,
@mpkocher
mpkocher / amzlink.py
Last active September 21, 2021 12:13 — forked from pybites/amzlink.py
import $ivy.`com.zaxxer:nuprocess:2.0.0`, com.zaxxer.nuprocess._
import scala.collection.JavaConverters._
import java.nio.ByteBuffer
import scala.concurrent.{Future, Promise}
class ProcessHandler extends NuAbstractProcessHandler {
private var nuProcess: NuProcess = null
override def onStart(nuProcess: NuProcess): Unit = {
@mpkocher
mpkocher / leap_year.py
Last active March 15, 2020 19:12
Example of a functional-ish centric design encoding logic in a rules based model #LevelUp
#!/usr/bin/env python3
"""
Example of a functional-ish centric design and encoding logic in rules.
This uses determination of a leap year as an simple example.
This approach could be used in more involved cases to encode business logic.
"""
import operator as op
@mpkocher
mpkocher / boiler.py
Last active March 30, 2021 02:55
MK common Python utils
# Common core utils are too small that don't warrant creating a package
from argparse import ArgumentParser, Namespace, ArgumentDefaultsHelpFormatter
import csv
import functools
import logging
import sys
from typing import Callable as F
from typing import List, TypeVar, Type, Iterator
from pydantic import BaseModel
#!/usr/bin/env python3
from collections import deque
def to_tail(it, max_items):
"""
https://twitter.com/Wildvasa/status/1207383049387810816
Get the last N elements from an iterable
#!/usr/bin/env python3
import sys
from collections import Counter
# https://docs.python.org/3.8/library/collections.html?highlight=counter#collections.Counter
# Example of using collections.Counter to count item
# https://twitter.com/DavidMezzetti/status/1204493772274438151
@mpkocher
mpkocher / pylint_W0102.out
Created December 4, 2019 00:21
Netflix Metaflow pylint out of W0102 (pylint metaflow | grep W0102)
metaflow/package.py:24:4: W0102: Dangerous default value DEFAULT_SUFFIXES (builtins.list) as argument (dangerous-default-value)
metaflow/runtime.py:431:4: W0102: Dangerous default value [] as argument (dangerous-default-value)
metaflow/flowspec.py:130:4: W0102: Dangerous default value {} as argument (dangerous-default-value)
metaflow/flowspec.py:130:4: W0102: Dangerous default value [] as argument (dangerous-default-value)
metaflow/flowspec.py:256:4: W0102: Dangerous default value [] as argument (dangerous-default-value)
metaflow/pylint_wrapper.py:26:4: W0102: Dangerous default value [] as argument (dangerous-default-value)
metaflow/plugins/aws/batch/batch.py:96:4: W0102: Dangerous default value {} as argument (dangerous-default-value)
metaflow/plugins/aws/batch/batch.py:96:4: W0102: Dangerous default value {} as argument (dangerous-default-value)
metaflow/metadata/service.py:40:4: W0102: Dangerous default value [] as argument (dangerous-default-value)
metaflow/metadata/service.py:40:4: W0102: Dangerous defau