Skip to content

Commit 8367def

Browse files
Merge pull request #32 from MaisTodos/PG-2574
[PG-2574] Adiciona suporte à bandeira 'maestro' como 'master'
2 parents 142d2de + 5b1567a commit 8367def

File tree

6 files changed

+286
-88
lines changed

6 files changed

+286
-88
lines changed

creditcard/card.py

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,56 @@
1111
"softnex": r"^610800",
1212
"diners": r"^3(?:0[0-5]|[68][0-9])[0-9]{11}$",
1313
"discover": r"^6(?:011|5[0-9]{2}|4[4-9][0-9]{1}|(22(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[01][0-9]|92[0-5]$)[0-9]{10}$))[0-9]{12}$", # noqa: E501
14-
"hipercard": r"^(38[0-9]{17}|60[0-9]{14})$",
14+
"hipercard": r"^(606282|637095|3841[046]0)[0-9]{10}$",
1515
"amex": r"^3[47][0-9]{13}$",
16-
"aura": r"^50[0-9]{14,17}$",
16+
"aura": r"^5078[0-9]{12,15}$",
1717
"codensa": r"^(870055|590712|529448)[0-9]{10}$",
18-
"master": r"^(5[1-5][0-9]{14}|2221[0-9]{12}|222[2-9][0-9]{12}|22[3-9][0-9]{13}|2[3-6][0-9]{14}|27[01][0-9]{13}|2720[0-9]{12})$", # noqa: E501
18+
"master": (
19+
r"^"
20+
r"(5[1-5][0-9]{14}"
21+
r"|2221[0-9]{12}"
22+
r"|222[2-9][0-9]{12}"
23+
r"|22[3-9][0-9]{13}"
24+
r"|2[3-6][0-9]{14}"
25+
r"|27[01][0-9]{13}"
26+
r"|2720[0-9]{12}"
27+
# Suporte aos antigos cartões Maestro que agora são MasterCard
28+
r"|5[06789][0-9]{14}"
29+
r"|600[689][0-9]{12}"
30+
r"|602[468][0-9]{12}"
31+
r"|603[0-9]{13}"
32+
r"|604[69][0-9]{12}"
33+
r"|605[045][0-9]{12}"
34+
r"|606[234][0-9]{12}"
35+
r"|6095[0-9]{12}"
36+
r"|6220[0-9]{12}"
37+
r"|627[389][0-9]{12}"
38+
r"|628[01][0-9]{12}"
39+
r"|6305[0-9]{12}"
40+
r"|631[06][0-9]{12}"
41+
r"|636[13678][0-9]{12}"
42+
r"|637[1256][0-9]{12}"
43+
r"|6381[0-9]{12}"
44+
r"|639[2-7][0-9]{12}"
45+
r"|6602[0-9]{12}"
46+
r"|662[269][0-9]{12}"
47+
r"|6640[0-9]{12}"
48+
r"|665[49][0-9]{12}"
49+
r"|666[2478][0-9]{12}"
50+
r"|667[79][0-9]{12}"
51+
r"|668[03569][0-9]{12}"
52+
r"|6690[0-9]{12}"
53+
r"|671[45][0-9]{12}"
54+
r"|6748[0-9]{12}"
55+
r"|6777[0-9]{12}"
56+
r"|678[37][0-9]{12}"
57+
r"|679[29][0-9]{12}"
58+
r"|681[056][0-9]{12}"
59+
r"|684[37][0-9]{12}"
60+
r"|6874[0-9]{12}"
61+
r"|68[589]0[0-9]{12}"
62+
r")$"
63+
),
1964
"visa": r"^4[0-9]{12}(?:[0-9]{3})?$",
2065
}
2166

requirements/dev.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pip-tools==5.2.1
1+
pip-tools
22
ipython
33
black
44
pre-commit

requirements/dev.txt

Lines changed: 86 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,86 @@
1-
#
2-
# This file is autogenerated by pip-compile
3-
# To update, run:
4-
#
5-
# pip-compile requirements/dev.in
6-
#
7-
appdirs==1.4.4 # via black, virtualenv
8-
attrs==19.3.0 # via black
9-
backcall==0.2.0 # via ipython
10-
black==19.10b0 # via -r requirements/dev.in
11-
cfgv==3.1.0 # via pre-commit
12-
click==7.1.2 # via black, pip-tools
13-
decorator==4.4.2 # via ipython, traitlets
14-
distlib==0.3.1 # via virtualenv
15-
filelock==3.0.12 # via virtualenv
16-
identify==1.4.23 # via pre-commit
17-
ipython-genutils==0.2.0 # via traitlets
18-
ipython==7.16.1 # via -r requirements/dev.in
19-
jedi==0.17.1 # via ipython
20-
nodeenv==1.4.0 # via pre-commit
21-
parso==0.7.0 # via jedi
22-
pathspec==0.8.0 # via black
23-
pexpect==4.8.0 # via ipython
24-
pickleshare==0.7.5 # via ipython
25-
pip-tools==5.2.1 # via -r requirements/dev.in
26-
pre-commit==2.6.0 # via -r requirements/dev.in
27-
prompt-toolkit==3.0.5 # via ipython
28-
ptyprocess==0.6.0 # via pexpect
29-
pygments==2.6.1 # via ipython
30-
pyyaml==5.3.1 # via pre-commit
31-
regex==2020.6.8 # via black
32-
six==1.15.0 # via pip-tools, traitlets, virtualenv
33-
toml==0.10.1 # via black, pre-commit
34-
traitlets==4.3.3 # via ipython
35-
typed-ast==1.4.1 # via black
36-
virtualenv==20.0.26 # via pre-commit
37-
wcwidth==0.2.5 # via prompt-toolkit
38-
39-
# The following packages are considered to be unsafe in a requirements file:
40-
# pip
41-
# setuptools
1+
# This file was autogenerated by uv via the following command:
2+
# uv pip compile dev.in
3+
asttokens==3.0.0
4+
# via stack-data
5+
black==25.1.0
6+
# via -r dev.in
7+
build==1.3.0
8+
# via pip-tools
9+
cfgv==3.4.0
10+
# via pre-commit
11+
click==8.2.1
12+
# via
13+
# black
14+
# pip-tools
15+
decorator==5.2.1
16+
# via ipython
17+
distlib==0.4.0
18+
# via virtualenv
19+
executing==2.2.0
20+
# via stack-data
21+
filelock==3.18.0
22+
# via virtualenv
23+
identify==2.6.12
24+
# via pre-commit
25+
ipython==9.4.0
26+
# via -r dev.in
27+
ipython-pygments-lexers==1.1.1
28+
# via ipython
29+
jedi==0.19.2
30+
# via ipython
31+
matplotlib-inline==0.1.7
32+
# via ipython
33+
mypy-extensions==1.1.0
34+
# via black
35+
nodeenv==1.9.1
36+
# via pre-commit
37+
packaging==25.0
38+
# via
39+
# black
40+
# build
41+
parso==0.8.4
42+
# via jedi
43+
pathspec==0.12.1
44+
# via black
45+
pexpect==4.9.0
46+
# via ipython
47+
pip==25.2
48+
# via pip-tools
49+
pip-tools==7.5.0
50+
# via -r dev.in
51+
platformdirs==4.3.8
52+
# via
53+
# black
54+
# virtualenv
55+
pre-commit==4.2.0
56+
# via -r dev.in
57+
prompt-toolkit==3.0.51
58+
# via ipython
59+
ptyprocess==0.7.0
60+
# via pexpect
61+
pure-eval==0.2.3
62+
# via stack-data
63+
pygments==2.19.2
64+
# via
65+
# ipython
66+
# ipython-pygments-lexers
67+
pyproject-hooks==1.2.0
68+
# via
69+
# build
70+
# pip-tools
71+
pyyaml==6.0.2
72+
# via pre-commit
73+
setuptools==80.9.0
74+
# via pip-tools
75+
stack-data==0.6.3
76+
# via ipython
77+
traitlets==5.14.3
78+
# via
79+
# ipython
80+
# matplotlib-inline
81+
virtualenv==20.33.1
82+
# via pre-commit
83+
wcwidth==0.2.13
84+
# via prompt-toolkit
85+
wheel==0.45.1
86+
# via pip-tools

requirements/test.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
flake8==3.8.3
1+
flake8
22
pytest-cov
33
pytest-flake8
4-
pytest==5.4.3
5-
safety==1.9.0
4+
pytest
5+
safety

requirements/test.txt

Lines changed: 141 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,141 @@
1-
#
2-
# This file is autogenerated by pip-compile
3-
# To update, run:
4-
#
5-
# pip-compile requirements/test.in
6-
#
7-
attrs==19.3.0 # via pytest
8-
certifi==2020.6.20 # via requests
9-
chardet==3.0.4 # via requests
10-
click==7.1.2 # via safety
11-
coverage==5.2 # via pytest-cov
12-
dparse==0.5.1 # via safety
13-
flake8==3.8.3 # via -r requirements/test.in, pytest-flake8
14-
idna==2.10 # via requests, yarl
15-
mccabe==0.6.1 # via flake8
16-
more-itertools==8.4.0 # via pytest
17-
multidict==4.7.6 # via yarl
18-
packaging==20.4 # via dparse, pytest, safety
19-
pluggy==0.13.1 # via pytest
20-
py==1.9.0 # via pytest
21-
pycodestyle==2.6.0 # via flake8
22-
pyflakes==2.2.0 # via flake8
23-
pyparsing==2.4.7 # via packaging
24-
pytest-cov==2.10.0 # via -r requirements/test.in
25-
pytest-flake8==1.0.6 # via -r requirements/test.in
26-
pytest-vcr==1.0.2 # via -r requirements/test.in
27-
pytest==5.4.3 # via -r requirements/test.in, pytest-cov, pytest-flake8, pytest-vcr
28-
pyyaml==5.3.1 # via dparse, vcrpy
29-
requests==2.24.0 # via safety
30-
safety==1.9.0 # via -r requirements/test.in
31-
six==1.15.0 # via packaging, vcrpy
32-
toml==0.10.1 # via dparse
33-
urllib3==1.25.9 # via requests
34-
vcrpy==4.0.2 # via pytest-vcr
35-
wcwidth==0.2.5 # via pytest
36-
wrapt==1.12.1 # via vcrpy
37-
yarl==1.4.2 # via vcrpy
38-
39-
# The following packages are considered to be unsafe in a requirements file:
40-
# setuptools
1+
# This file was autogenerated by uv via the following command:
2+
# uv pip compile test.in
3+
annotated-types==0.7.0
4+
# via pydantic
5+
anyio==4.10.0
6+
# via httpx
7+
authlib==1.6.1
8+
# via safety
9+
certifi==2025.8.3
10+
# via
11+
# httpcore
12+
# httpx
13+
# requests
14+
cffi==1.17.1
15+
# via cryptography
16+
charset-normalizer==3.4.2
17+
# via requests
18+
click==8.2.1
19+
# via
20+
# nltk
21+
# safety
22+
# typer
23+
coverage==7.10.2
24+
# via pytest-cov
25+
cryptography==45.0.6
26+
# via authlib
27+
dparse==0.6.4
28+
# via
29+
# safety
30+
# safety-schemas
31+
filelock==3.16.1
32+
# via safety
33+
flake8==7.3.0
34+
# via
35+
# -r test.in
36+
# pytest-flake8
37+
h11==0.16.0
38+
# via httpcore
39+
httpcore==1.0.9
40+
# via httpx
41+
httpx==0.28.1
42+
# via safety
43+
idna==3.10
44+
# via
45+
# anyio
46+
# httpx
47+
# requests
48+
iniconfig==2.1.0
49+
# via pytest
50+
jinja2==3.1.6
51+
# via safety
52+
joblib==1.5.1
53+
# via nltk
54+
markdown-it-py==3.0.0
55+
# via rich
56+
markupsafe==3.0.2
57+
# via jinja2
58+
marshmallow==4.0.0
59+
# via safety
60+
mccabe==0.7.0
61+
# via flake8
62+
mdurl==0.1.2
63+
# via markdown-it-py
64+
nltk==3.9.1
65+
# via safety
66+
packaging==25.0
67+
# via
68+
# dparse
69+
# pytest
70+
# safety
71+
# safety-schemas
72+
pluggy==1.6.0
73+
# via
74+
# pytest
75+
# pytest-cov
76+
psutil==6.1.1
77+
# via safety
78+
pycodestyle==2.14.0
79+
# via flake8
80+
pycparser==2.22
81+
# via cffi
82+
pydantic==2.9.2
83+
# via
84+
# safety
85+
# safety-schemas
86+
pydantic-core==2.23.4
87+
# via pydantic
88+
pyflakes==3.4.0
89+
# via flake8
90+
pygments==2.19.2
91+
# via
92+
# pytest
93+
# rich
94+
pytest==8.4.1
95+
# via
96+
# -r test.in
97+
# pytest-cov
98+
# pytest-flake8
99+
pytest-cov==6.2.1
100+
# via -r test.in
101+
pytest-flake8==1.3.0
102+
# via -r test.in
103+
regex==2025.7.34
104+
# via nltk
105+
requests==2.32.4
106+
# via safety
107+
rich==14.1.0
108+
# via typer
109+
ruamel-yaml==0.18.14
110+
# via
111+
# safety
112+
# safety-schemas
113+
ruamel-yaml-clib==0.2.12
114+
# via ruamel-yaml
115+
safety==3.6.0
116+
# via -r test.in
117+
safety-schemas==0.0.14
118+
# via safety
119+
setuptools==80.9.0
120+
# via safety
121+
shellingham==1.5.4
122+
# via typer
123+
sniffio==1.3.1
124+
# via anyio
125+
tenacity==9.1.2
126+
# via safety
127+
tomlkit==0.13.3
128+
# via safety
129+
tqdm==4.67.1
130+
# via nltk
131+
typer==0.16.0
132+
# via safety
133+
typing-extensions==4.14.1
134+
# via
135+
# pydantic
136+
# pydantic-core
137+
# safety
138+
# safety-schemas
139+
# typer
140+
urllib3==2.5.0
141+
# via requests

0 commit comments

Comments
 (0)