layercall 1.2.7__tar.gz → 1.2.9__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layercall
3
- Version: 1.2.7
3
+ Version: 1.2.9
4
4
  Summary: Official LayerCall client — score an IP, email, phone, domain or a whole signup for fraud in one call. Zero dependencies.
5
5
  Author: LayerCall
6
6
  License: MIT
@@ -72,7 +72,13 @@ lc.verify_email("someone@mailinator.com")
72
72
  lc.lookup_phone("+14155552671")
73
73
  lc.lookup_phone("4155552671", country="US")
74
74
  lc.score_domain("example.com")
75
- lc.score_device(device_id, ip=ip, signals=signals) # fingerprint from /fp.js
75
+ # score_device is the one method you cannot try without a browser: it needs a
76
+ # real fingerprint and the API correctly refuses anything else. On a TEST key
77
+ # these two fixtures work verbatim, so you can call it today and wire up
78
+ # /fp.js afterwards.
79
+ lc.score_device("0" * 32) # clean browser
80
+ lc.score_device("f" * 32) # headless automation
81
+ lc.score_device(device_id, ip=ip, signals=signals) # real: fingerprint from /fp.js
76
82
  lc.score_user(ip=ip, email=email, phone=phone, device_id=device_id)
77
83
  lc.batch("email", ["a@x.com", "b@y.com"]) # up to 500
78
84
 
@@ -53,7 +53,13 @@ lc.verify_email("someone@mailinator.com")
53
53
  lc.lookup_phone("+14155552671")
54
54
  lc.lookup_phone("4155552671", country="US")
55
55
  lc.score_domain("example.com")
56
- lc.score_device(device_id, ip=ip, signals=signals) # fingerprint from /fp.js
56
+ # score_device is the one method you cannot try without a browser: it needs a
57
+ # real fingerprint and the API correctly refuses anything else. On a TEST key
58
+ # these two fixtures work verbatim, so you can call it today and wire up
59
+ # /fp.js afterwards.
60
+ lc.score_device("0" * 32) # clean browser
61
+ lc.score_device("f" * 32) # headless automation
62
+ lc.score_device(device_id, ip=ip, signals=signals) # real: fingerprint from /fp.js
57
63
  lc.score_user(ip=ip, email=email, phone=phone, device_id=device_id)
58
64
  lc.batch("email", ["a@x.com", "b@y.com"]) # up to 500
59
65
 
@@ -32,8 +32,12 @@ import urllib.parse
32
32
  import urllib.request
33
33
  from typing import Any, Literal, Mapping, Sequence
34
34
 
35
- __version__ = "1.2.7"
36
- __all__ = ["LayerCall", "LayerCallError"]
35
+ __version__ = "1.2.9"
36
+ # Verdict and Strictness are part of the signature — `verdict: Verdict` and
37
+ # `strictness: Strictness` appear on the public methods below — so a caller
38
+ # writing a type annotation needs them, and `from layercall import *` was not
39
+ # giving them out.
40
+ __all__ = ["LayerCall", "LayerCallError", "Verdict", "Strictness"]
37
41
 
38
42
  Verdict = Literal["allow", "review", "block"]
39
43
  Strictness = Literal[0, 1, 2, 3]
File without changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layercall
3
- Version: 1.2.7
3
+ Version: 1.2.9
4
4
  Summary: Official LayerCall client — score an IP, email, phone, domain or a whole signup for fraud in one call. Zero dependencies.
5
5
  Author: LayerCall
6
6
  License: MIT
@@ -72,7 +72,13 @@ lc.verify_email("someone@mailinator.com")
72
72
  lc.lookup_phone("+14155552671")
73
73
  lc.lookup_phone("4155552671", country="US")
74
74
  lc.score_domain("example.com")
75
- lc.score_device(device_id, ip=ip, signals=signals) # fingerprint from /fp.js
75
+ # score_device is the one method you cannot try without a browser: it needs a
76
+ # real fingerprint and the API correctly refuses anything else. On a TEST key
77
+ # these two fixtures work verbatim, so you can call it today and wire up
78
+ # /fp.js afterwards.
79
+ lc.score_device("0" * 32) # clean browser
80
+ lc.score_device("f" * 32) # headless automation
81
+ lc.score_device(device_id, ip=ip, signals=signals) # real: fingerprint from /fp.js
76
82
  lc.score_user(ip=ip, email=email, phone=phone, device_id=device_id)
77
83
  lc.batch("email", ["a@x.com", "b@y.com"]) # up to 500
78
84
 
@@ -1,6 +1,7 @@
1
1
  README.md
2
2
  pyproject.toml
3
3
  layercall/__init__.py
4
+ layercall/py.typed
4
5
  layercall.egg-info/PKG-INFO
5
6
  layercall.egg-info/SOURCES.txt
6
7
  layercall.egg-info/dependency_links.txt
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "layercall"
7
- version = "1.2.7"
7
+ version = "1.2.9"
8
8
  description = "Official LayerCall client — score an IP, email, phone, domain or a whole signup for fraud in one call. Zero dependencies."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -28,3 +28,11 @@ Source = "https://github.com/LayerCall/layercall-sdk"
28
28
 
29
29
  [tool.setuptools.packages.find]
30
30
  include = ["layercall*"]
31
+
32
+ # PEP 561. Without this marker mypy and pyright in strict mode refuse to read
33
+ # the annotations in __init__.py at all and report "missing library stubs or
34
+ # py.typed marker" — so a fully typed, zero-dependency package looked untyped
35
+ # to exactly the developers most likely to check. The annotations were always
36
+ # there; type checkers were not allowed to see them.
37
+ [tool.setuptools.package-data]
38
+ layercall = ["py.typed"]
File without changes