Skip to content

Instantly share code, notes, and snippets.

private typealias DialogCallback<T> = T.() -> Unit
interface DialogBuilder<T> {
fun title(title: String)
fun title(titleResId: Int)
fun message(message: String)
fun message(messageResId: Int)
private class DialogBuilderImpl<T>(val context: Context) : DialogBuilder<T> {
data class DialogArgs<T>(
val title: String? = null,
val message: String? = null,
val yesButtonAction: Serializable? = null,
val noButtonAction: Serializable? = null,
val yesButtonText: String? = null,
val noButtonText: String? = null
) : Serializable
class BetterDialog<T> : DialogFragment() {
companion object {
val KEY_ARGS = "KEY_ARGS"
val KEY_CALLED_FROM_FRAGMENT = "KEY_CALLED_FROM_FRAGMENT"
val TAG = "DIALOG_TAG"
}
@Suppress("UNCHECKED_CAST")
private val args: DialogBuilderImpl.DialogArgs<T> by lazy {
checkNotNull(arguments?.getSerializable(KEY_ARGS) as DialogBuilderImpl.DialogArgs<T>) { "Args are null!" }
@polson
polson / scnet.py
Created June 28, 2025 15:51
SCNet Masked V2
import math
from collections import deque
import torch
import torch.nn as nn
import torch.nn.functional as F
from .separation import SeparationNet
@polson
polson / train_dataloader.py
Last active July 5, 2025 19:26
A dataloader that creates random mixtures from stems. Useful for datasets like MUSDB18HQ
import random
import random
import sys
import time
import threading
import queue
from collections import defaultdict
from dataclasses import dataclass
from pathlib import Path
from typing import Dict, List, Optional, Tuple