veil-proxy 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/PKG-INFO +1 -1
  2. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/pyproject.toml +3 -2
  3. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/proxy.py +12 -1
  4. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/README.md +0 -0
  5. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/__init__.py +0 -0
  6. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/adopt.py +0 -0
  7. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/anthropic.py +0 -0
  8. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/cli.py +0 -0
  9. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/cloud.py +0 -0
  10. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/crypto.py +0 -0
  11. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/README.md +0 -0
  12. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/pg_anonymizer_identifier.csv +0 -0
  13. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/words.txt.gz +0 -0
  14. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/decode.py +0 -0
  15. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/detect.py +0 -0
  16. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/display.py +0 -0
  17. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/engine.py +0 -0
  18. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/guard.py +0 -0
  19. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/hookclient.py +0 -0
  20. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/hooks.py +0 -0
  21. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/keys.py +0 -0
  22. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/match.py +0 -0
  23. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/ner.py +0 -0
  24. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/openai.py +0 -0
  25. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/quasi.py +0 -0
  26. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/reseed.py +0 -0
  27. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/responses.py +0 -0
  28. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/rotate.py +0 -0
  29. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/shell.py +0 -0
  30. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/__init__.py +0 -0
  31. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/core.py +0 -0
  32. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/elastic.py +0 -0
  33. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/files.py +0 -0
  34. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/kv.py +0 -0
  35. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/mongo.py +0 -0
  36. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/mssql.py +0 -0
  37. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/schema.py +0 -0
  38. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/sql.py +0 -0
  39. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/state.py +0 -0
  40. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/stream.py +0 -0
  41. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/team.py +0 -0
  42. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/tokens.py +0 -0
  43. {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/vault.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veil-proxy
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Privacy middleware for AI coding agents: the model sees consistent pseudonyms, your machine keeps the real values
5
5
  Keywords: privacy,pii,llm,proxy,pseudonymization,claude-code,coding-agent
6
6
  Requires-Python: >=3.11
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veil-proxy"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  description = "Privacy middleware for AI coding agents: the model sees consistent pseudonyms, your machine keeps the real values"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -58,7 +58,8 @@ veil-proxy = { workspace = true }
58
58
  name = "veil"
59
59
 
60
60
  [tool.pytest.ini_options]
61
- pythonpath = ["."] # makes veil_dev importable for the test suite
61
+ pythonpath = ["."]
62
+ faulthandler_timeout = 120 # a hung test dumps every thread's stack (CI diagnosis) # makes veil_dev importable for the test suite
62
63
 
63
64
  [build-system]
64
65
  # Pure-Python backend: building the sdist needs no compiler (Homebrew builds from source).
@@ -12,6 +12,7 @@ claude.ai logins); only hop-by-hop and encoding headers are dropped.
12
12
  from __future__ import annotations
13
13
 
14
14
  import json
15
+ import socketserver
15
16
  import os
16
17
  import sys
17
18
  import threading
@@ -34,6 +35,16 @@ from .responses import (ResponsesStreamRewriter, is_responses_path, redact_respo
34
35
  HOP = {"host", "content-length", "connection", "accept-encoding", "transfer-encoding", "keep-alive"}
35
36
 
36
37
 
38
+ class LocalHTTPServer(ThreadingHTTPServer):
39
+ """ThreadingHTTPServer without the reverse-DNS lookup in server_bind():
40
+ http.server calls socket.getfqdn(host), which can stall for 30 s+ on macOS
41
+ (mDNS). veil binds loopback only, so the name is just the address."""
42
+
43
+ def server_bind(self):
44
+ socketserver.TCPServer.server_bind(self)
45
+ self.server_name, self.server_port = self.server_address[:2]
46
+
47
+
37
48
  def _strings(node):
38
49
  if isinstance(node, str):
39
50
  yield node
@@ -406,7 +417,7 @@ def serve(veil: Veil, policy: Policy, port: int = 8787, upstream: str = "https:/
406
417
  anthropic_aws_upstream: str | None = None):
407
418
  client = httpx.Client(timeout=httpx.Timeout(600, connect=10))
408
419
  observer = capture_observer(capture) if capture else None
409
- server = ThreadingHTTPServer(("127.0.0.1", port), make_handler(veil, policy, upstream, client,
420
+ server = LocalHTTPServer(("127.0.0.1", port), make_handler(veil, policy, upstream, client,
410
421
  observer=observer,
411
422
  openai_upstream=openai_upstream,
412
423
  bedrock_upstream=bedrock_upstream,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes