From 66095285a675e741ec9529a4aee772da17a907e2 Mon Sep 17 00:00:00 2001 From: JamesTheGiblet Date: Mon, 29 Dec 2025 15:47:39 +0000 Subject: [PATCH] feat: add connection pooling test and update .gitignore for runtime data --- .gitignore | 7 +++ __pycache__/buddai_v3.2.cpython-313.pyc | Bin 67348 -> 68839 bytes tests/test_buddai.py | 57 ++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1bada4a --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Runtime data (database and uploads) +data/ +*.db + +# Python cache +__pycache__/ +*.pyc \ No newline at end of file diff --git a/__pycache__/buddai_v3.2.cpython-313.pyc b/__pycache__/buddai_v3.2.cpython-313.pyc index 6e1d2dec21d9d42f715255e87512d0c9a00bce41..98b7e73a7234d24b66de1284e0cda73a5e4d1d0d 100644 GIT binary patch delta 13105 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 Xsf3q=DNFN(WBFlA%hbna5P<&=m27DI delta 12327 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 m4A<)<>vUS?Yx