fleece-cli 0.1.0__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 (49) hide show
  1. fleece_cli-0.1.0/.agents/skills/fleece/SKILL.md +115 -0
  2. fleece_cli-0.1.0/.claude/skills/fleece-card.md +38 -0
  3. fleece_cli-0.1.0/.claude/skills/fleece-compare.md +31 -0
  4. fleece_cli-0.1.0/.claude/skills/fleece-credits.md +26 -0
  5. fleece_cli-0.1.0/.claude/skills/fleece-news.md +28 -0
  6. fleece_cli-0.1.0/.claude/skills/fleece-partners.md +27 -0
  7. fleece_cli-0.1.0/.claude/skills/fleece-rates.md +29 -0
  8. fleece_cli-0.1.0/.claude/skills/fleece-recommend.md +32 -0
  9. fleece_cli-0.1.0/.claude/skills/fleece-roi.md +31 -0
  10. fleece_cli-0.1.0/.claude/skills/fleece-wallet.md +62 -0
  11. fleece_cli-0.1.0/.devcontainer/devcontainer.json +33 -0
  12. fleece_cli-0.1.0/.github/workflows/databricks-app-deploy.yml +40 -0
  13. fleece_cli-0.1.0/.github/workflows/publish.yml +39 -0
  14. fleece_cli-0.1.0/.gitignore +137 -0
  15. fleece_cli-0.1.0/.streamlit/config.toml +3 -0
  16. fleece_cli-0.1.0/Advertiser Disclosure.md +5 -0
  17. fleece_cli-0.1.0/CLAUDE.md +44 -0
  18. fleece_cli-0.1.0/KnowledgeCatalog.json +0 -0
  19. fleece_cli-0.1.0/LICENSE +21 -0
  20. fleece_cli-0.1.0/MyCards.json +0 -0
  21. fleece_cli-0.1.0/PKG-INFO +151 -0
  22. fleece_cli-0.1.0/README.md +127 -0
  23. fleece_cli-0.1.0/app.yaml +1 -0
  24. fleece_cli-0.1.0/assets/default_card.png +1 -0
  25. fleece_cli-0.1.0/assets/default_card.svg +10 -0
  26. fleece_cli-0.1.0/cli.py +391 -0
  27. fleece_cli-0.1.0/db.py +162 -0
  28. fleece_cli-0.1.0/fleece poc.ipynb +95 -0
  29. fleece_cli-0.1.0/fleece.py +239 -0
  30. fleece_cli-0.1.0/image_service.py +147 -0
  31. fleece_cli-0.1.0/install.sh +61 -0
  32. fleece_cli-0.1.0/migrate.py +38 -0
  33. fleece_cli-0.1.0/pages/credit_cards.py +348 -0
  34. fleece_cli-0.1.0/pages/my_credit_cards.py +334 -0
  35. fleece_cli-0.1.0/plan.md +175 -0
  36. fleece_cli-0.1.0/prompts/agent_system_prompt.py +22 -0
  37. fleece_cli-0.1.0/pyproject.toml +36 -0
  38. fleece_cli-0.1.0/reference/Analyzer.md +0 -0
  39. fleece_cli-0.1.0/requirements-test.txt +4 -0
  40. fleece_cli-0.1.0/requirements.txt +11 -0
  41. fleece_cli-0.1.0/style.css +81 -0
  42. fleece_cli-0.1.0/test_fleece.py +407 -0
  43. fleece_cli-0.1.0/tests/__init__.py +0 -0
  44. fleece_cli-0.1.0/tests/test_brave_client.py +121 -0
  45. fleece_cli-0.1.0/tests/test_cli.py +285 -0
  46. fleece_cli-0.1.0/tests/test_tools.py +186 -0
  47. fleece_cli-0.1.0/tools/__init__.py +3 -0
  48. fleece_cli-0.1.0/tools/brave_client.py +69 -0
  49. fleece_cli-0.1.0/tools/credit_card_tools.py +261 -0
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: fleece
3
+ description: Fleece credit card research CLI. Provides live US credit card data via Brave Search — full reports, earning rates, transfer partners, statement credits, recent news, card comparisons, portfolio analysis, ROI estimates, and profile-based recommendations. Use whenever you need current credit card information.
4
+ ---
5
+
6
+ # Fleece Credit Card Research
7
+
8
+ Live US credit card research backed by Brave Search. All commands output JSON for
9
+ programmatic use. Requires `BRAVE_API_KEY` in the environment.
10
+
11
+ ## Prerequisites
12
+
13
+ ```bash
14
+ # Set in environment or .env file
15
+ export BRAVE_API_KEY=<your_key>
16
+
17
+ # Run from the fleece project root
18
+ cd /path/to/fleece
19
+ ```
20
+
21
+ ## Commands
22
+
23
+ ### Full card report
24
+ ```bash
25
+ python cli.py card "<card name>" --json
26
+ ```
27
+ Returns fees, welcome offer, earning rates, credits, benefits, and strategy.
28
+
29
+ ### Earning rates
30
+ ```bash
31
+ python cli.py rates "<card name>" --json
32
+ python cli.py rates "<card name>" --category "<dining|travel|groceries|gas>" --json
33
+ ```
34
+
35
+ ### Transfer partners
36
+ ```bash
37
+ python cli.py partners "<card name>" --json
38
+ ```
39
+ Returns airline and hotel partners with ratios and transfer timing.
40
+
41
+ ### Statement credits
42
+ ```bash
43
+ python cli.py credits "<card name>" --json
44
+ ```
45
+ Returns all credits with amounts, cadence, and enrollment requirements.
46
+
47
+ ### Recent news (past month)
48
+ ```bash
49
+ python cli.py news "<card name>" --json
50
+ ```
51
+ Freshness-filtered to the past month.
52
+
53
+ ### Side-by-side comparison
54
+ ```bash
55
+ python cli.py compare "<card A>" "<card B>" --json
56
+ python cli.py compare "<card A>" "<card B>" --aspects "fees,rewards,credits" --json
57
+ ```
58
+
59
+ ### Portfolio / wallet analysis
60
+ ```bash
61
+ python cli.py wallet "<card 1>" "<card 2>" "<card 3>" --json
62
+ ```
63
+ Returns coverage map, overlaps, gaps, and next-card suggestions.
64
+
65
+ ### First-year ROI
66
+ ```bash
67
+ python cli.py roi "<card name>" --travel <monthly $> --dining <monthly $> --other <monthly $> --json
68
+ ```
69
+
70
+ ### Profile-based recommendations
71
+ ```bash
72
+ python cli.py recommend "<spending profile>" --json
73
+ python cli.py recommend "<spending profile>" --preferences "<preferences>" --json
74
+ ```
75
+
76
+ ## Output format
77
+
78
+ Every command with `--json` returns:
79
+ ```json
80
+ {
81
+ "command": "card",
82
+ "query": "...",
83
+ "result": "...",
84
+ "ok": true,
85
+ "error": null
86
+ }
87
+ ```
88
+
89
+ On error, `ok` is `false` and `error` contains the message. Always check `ok` before using `result`.
90
+
91
+ ## Exit codes
92
+
93
+ | Code | Meaning |
94
+ |------|---------|
95
+ | `0` | Success |
96
+ | `1` | Search / tool error (Brave API failure) |
97
+ | `2` | `BRAVE_API_KEY` not set |
98
+
99
+ ## Stdin piping
100
+
101
+ The primary argument on any single-card command accepts `-` to read from stdin:
102
+ ```bash
103
+ echo "Chase Sapphire Preferred" | python cli.py card - --json
104
+ echo "high dining spend" | python cli.py recommend - --json
105
+ ```
106
+
107
+ The `wallet` command accepts `-` as its sole argument to read newline-delimited card names:
108
+ ```bash
109
+ printf "Amex Gold\nChase Freedom Unlimited\nBilt\n" | python cli.py wallet - --json
110
+ ```
111
+
112
+ ## Coverage
113
+
114
+ Supports all major US issuers: Amex, Bank of America, Barclays, Bilt, Capital One,
115
+ Chase, Citi, Discover, Robinhood, U.S. Bank, Wells Fargo.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: fleece-card
3
+ description: Full credit card report — fees, welcome offer, earning rates, statement credits, benefits, and strategy. Use when asked about a specific card in detail.
4
+ ---
5
+
6
+ # /fleece-card
7
+
8
+ Fetches a comprehensive report for a US credit card using live Brave Search data.
9
+
10
+ ## When to use
11
+ - User asks about a specific card's details, benefits, or annual fee
12
+ - User wants to know if a card is worth it
13
+ - You need current card info (training data may be stale)
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py card "<card name>" --json
19
+ ```
20
+
21
+ The `--json` flag returns a structured envelope your can parse:
22
+ ```json
23
+ { "command": "card", "query": "...", "result": "...", "ok": true, "error": null }
24
+ ```
25
+
26
+ Use `result` as your research context, then synthesize a natural answer.
27
+
28
+ ## Exit codes
29
+ - `0` success
30
+ - `1` search error — tell the user and fall back to training data
31
+ - `2` `BRAVE_API_KEY` not configured
32
+
33
+ ## Example
34
+
35
+ ```bash
36
+ python cli.py card "Chase Sapphire Preferred" --json
37
+ python cli.py card "Amex Gold" --json
38
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: fleece-compare
3
+ description: Side-by-side comparison of two credit cards across fees, rewards, welcome offers, credits, and transfer partners. Use when asked which card is better.
4
+ ---
5
+
6
+ # /fleece-compare
7
+
8
+ Searches live data for both cards and returns research for a structured comparison.
9
+
10
+ ## When to use
11
+ - User asks "which is better" between two specific cards
12
+ - User is deciding between two cards and wants a comparison
13
+ - User wants to see how two cards stack up on a specific dimension
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py compare "<card A>" "<card B>" --json
19
+ python cli.py compare "<card A>" "<card B>" --aspects "fees,rewards,credits" --json
20
+ ```
21
+
22
+ Default aspects: `fees,rewards,welcome_offer,credits,transfer_partners`
23
+
24
+ ## Example
25
+
26
+ ```bash
27
+ python cli.py compare "Amex Gold" "Chase Sapphire Preferred" --json
28
+ python cli.py compare "Capital One Venture X" "Chase Sapphire Reserve" --json
29
+ ```
30
+
31
+ After receiving the result, synthesize a clear recommendation based on the user's stated priorities.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: fleece-credits
3
+ description: Statement credits and perks for a credit card — amounts, cadence, enrollment requirements. Use when asked how to offset the annual fee or what credits are available.
4
+ ---
5
+
6
+ # /fleece-credits
7
+
8
+ Fetches the full list of statement credits and perks for a card.
9
+
10
+ ## When to use
11
+ - User asks what credits a card offers
12
+ - User wants to know how to offset the annual fee
13
+ - User asks about dining, travel, streaming, or hotel credits
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py credits "<card name>" --json
19
+ ```
20
+
21
+ ## Example
22
+
23
+ ```bash
24
+ python cli.py credits "Amex Platinum" --json
25
+ python cli.py credits "Chase Sapphire Reserve" --json
26
+ ```
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: fleece-news
3
+ description: Recent changes to a credit card in the past month — benefit cuts, fee increases, new perks, or limited-time offers. Use when asked if anything changed recently.
4
+ ---
5
+
6
+ # /fleece-news
7
+
8
+ Searches for the latest news and changes for a card using freshness-filtered results.
9
+
10
+ ## When to use
11
+ - User asks if a card's benefits have changed recently
12
+ - User heard something changed and wants confirmation
13
+ - You want to verify your training data is still accurate
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py news "<card name>" --json
19
+ ```
20
+
21
+ Results are filtered to the past month (`freshness=pm`).
22
+
23
+ ## Example
24
+
25
+ ```bash
26
+ python cli.py news "Amex Gold" --json
27
+ python cli.py news "Chase Sapphire Reserve" --json
28
+ ```
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: fleece-partners
3
+ description: Transfer partners for a credit card's rewards program — airlines and hotels, transfer ratios, and timing. Use when asked about moving points or miles.
4
+ ---
5
+
6
+ # /fleece-partners
7
+
8
+ Fetches transfer partner details for a card's rewards currency.
9
+
10
+ ## When to use
11
+ - User asks what airlines or hotels they can transfer points to
12
+ - User wants to know transfer ratios or how long transfers take
13
+ - User is planning a specific redemption and needs partner details
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py partners "<card name>" --json
19
+ ```
20
+
21
+ ## Example
22
+
23
+ ```bash
24
+ python cli.py partners "Chase Sapphire Preferred" --json
25
+ python cli.py partners "Capital One Venture X" --json
26
+ python cli.py partners "Amex Platinum" --json
27
+ ```
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: fleece-rates
3
+ description: Earning rates for a credit card by spend category — points, miles, or cash back per dollar. Optionally filter to a specific category like dining or travel.
4
+ ---
5
+
6
+ # /fleece-rates
7
+
8
+ Looks up earning rates for a credit card, with optional category filtering.
9
+
10
+ ## When to use
11
+ - User asks how many points/miles/cash back a card earns
12
+ - User wants to know the best card for a specific spend category
13
+ - You need to compare multipliers across categories
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py rates "<card name>" --json
19
+ python cli.py rates "<card name>" --category "<category>" --json
20
+ ```
21
+
22
+ Categories: `dining`, `travel`, `groceries`, `gas`, `streaming`, `drugstores`, etc.
23
+
24
+ ## Example
25
+
26
+ ```bash
27
+ python cli.py rates "Chase Sapphire Preferred" --json
28
+ python cli.py rates "Amex Gold" --category dining --json
29
+ ```
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: fleece-recommend
3
+ description: Card recommendations matched to a spending profile and preferences. Use when the user asks for the best card for their situation without naming a specific card.
4
+ ---
5
+
6
+ # /fleece-recommend
7
+
8
+ Searches for best-match US credit cards for a given spending profile.
9
+
10
+ ## When to use
11
+ - User asks "what's the best card for me?"
12
+ - User describes their spending habits and wants recommendations
13
+ - User states a preference (no annual fee, travel perks, cash back, etc.)
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py recommend "<spending profile>" --json
19
+ python cli.py recommend "<spending profile>" --preferences "<extra preferences>" --json
20
+ ```
21
+
22
+ Keep the profile concise: categories + rough amounts or priorities.
23
+
24
+ ## Example
25
+
26
+ ```bash
27
+ python cli.py recommend "high dining and travel spend, $500/mo dining, $300/mo travel" --json
28
+ python cli.py recommend "everyday spending, mostly groceries and gas" --preferences "no annual fee" --json
29
+ python cli.py recommend "frequent international traveler" --preferences "priority pass lounge access" --json
30
+ ```
31
+
32
+ After receiving results, present 2–3 top recommendations with a brief rationale for each.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: fleece-roi
3
+ description: First-year ROI estimate for a credit card given monthly spend on travel, dining, and other. Calculates welcome bonus value + earn + credits minus annual fee.
4
+ ---
5
+
6
+ # /fleece-roi
7
+
8
+ Estimates first-year return on investment for a card based on the user's spending.
9
+
10
+ ## When to use
11
+ - User asks if a card is worth it for them specifically
12
+ - User provides their spending habits and wants a value estimate
13
+ - User wants to compare first-year value across cards
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ python cli.py roi "<card name>" --travel <monthly $> --dining <monthly $> --other <monthly $> --json
19
+ ```
20
+
21
+ All spend flags are optional and default to `0`. Omit any category the user didn't mention.
22
+
23
+ ## Example
24
+
25
+ ```bash
26
+ python cli.py roi "Chase Sapphire Preferred" --travel 500 --dining 300 --other 1000 --json
27
+ python cli.py roi "Amex Gold" --dining 800 --other 500 --json
28
+ ```
29
+
30
+ The result includes annual spend totals, an assumed cents-per-point value, and live research context.
31
+ Present the math clearly and note that exact welcome bonus amounts should be verified with the issuer.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: fleece-wallet
3
+ description: Portfolio analysis for a set of cards the user holds — category coverage map, overlaps, gaps, and next-card suggestions. Use when asked how to maximize an existing wallet.
4
+ ---
5
+
6
+ # /fleece-wallet
7
+
8
+ Analyzes a multi-card portfolio and identifies optimization opportunities.
9
+
10
+ ## When to use
11
+ - User asks how many cards they have
12
+ - User lists their current cards and asks how to maximize
13
+ - User asks what category gaps exist in their wallet
14
+ - User asks which card to use for a specific purchase given what they hold
15
+
16
+ ## Usage
17
+
18
+ **If the user has a saved profile (most common)** — no args needed; the CLI auto-loads from `fleece.db`:
19
+
20
+ ```bash
21
+ python cli.py wallet
22
+ ```
23
+
24
+ **To pass cards explicitly:**
25
+
26
+ ```bash
27
+ python cli.py wallet "Amex Platinum" "Chase Freedom Unlimited" "Bilt"
28
+ ```
29
+
30
+ **Agent-friendly JSON output:**
31
+
32
+ ```bash
33
+ python cli.py wallet --json
34
+ ```
35
+
36
+ Cards can come from three sources (in priority order):
37
+ 1. Arguments passed directly on the command line
38
+ 2. `--from-profile` / `-p` flag (reads `user_cards.json`)
39
+ 3. No args + saved profile exists → auto-loads from `fleece.db`
40
+
41
+ > **Do not query `fleece.db` directly with SQLite.** The CLI fetches live data via
42
+ > Brave Search and returns a richer analysis (category rates, transfer partners,
43
+ > recent benefit changes). Raw DB queries only give you stored card names and
44
+ > cannot surface live earning rates or gaps.
45
+
46
+ ## Output
47
+
48
+ The result includes:
49
+ - **Category coverage map** — which card wins each spend category and at what rate
50
+ - **Overlaps** — redundant benefits across cards (e.g., two dining multipliers in different currencies)
51
+ - **Gaps** — categories earning only 1x with no bonus card
52
+ - **1–2 complementary card suggestions** to plug the biggest gaps
53
+
54
+ ## Example
55
+
56
+ ```bash
57
+ # Auto-load saved wallet (preferred)
58
+ python cli.py wallet
59
+
60
+ # Explicit cards
61
+ python cli.py wallet "Amex Gold" "Chase Sapphire Preferred" "Citi Double Cash"
62
+ ```
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "Python 3",
3
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
4
+ "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye",
5
+ "customizations": {
6
+ "codespaces": {
7
+ "openFiles": [
8
+ "README.md",
9
+ "fleece.py"
10
+ ]
11
+ },
12
+ "vscode": {
13
+ "settings": {},
14
+ "extensions": [
15
+ "ms-python.python",
16
+ "ms-python.vscode-pylance"
17
+ ]
18
+ }
19
+ },
20
+ "updateContentCommand": "[ -f packages.txt ] && sudo apt update && sudo apt upgrade -y && sudo xargs apt install -y <packages.txt; [ -f requirements.txt ] && pip3 install --user -r requirements.txt; pip3 install --user streamlit; echo '✅ Packages installed and Requirements met'",
21
+ "postAttachCommand": {
22
+ "server": "streamlit run fleece.py --server.enableCORS false --server.enableXsrfProtection false"
23
+ },
24
+ "portsAttributes": {
25
+ "8501": {
26
+ "label": "Application",
27
+ "onAutoForward": "openPreview"
28
+ }
29
+ },
30
+ "forwardPorts": [
31
+ 8501
32
+ ]
33
+ }
@@ -0,0 +1,40 @@
1
+ name: Deploy Databricks App
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ env:
9
+ DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
10
+ DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
11
+ APP_NAME: ${{ vars.DATABRICKS_APP_NAME || 'fleece' }}
12
+ WORKSPACE_USER: ${{ vars.DATABRICKS_WORKSPACE_USER }}
13
+ SOURCE_CODE_PATH: /Workspace/Users/${{ vars.DATABRICKS_WORKSPACE_USER }}/fleece
14
+
15
+ jobs:
16
+ deploy:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.12"
26
+
27
+ - name: Install Databricks CLI
28
+ uses: databricks/setup-cli@main
29
+
30
+ - name: Sync source code to workspace
31
+ run: |
32
+ databricks sync . "$SOURCE_CODE_PATH" --exclude ".git"
33
+
34
+ - name: Create app if missing
35
+ run: |
36
+ databricks apps create "$APP_NAME" || true
37
+
38
+ - name: Deploy app
39
+ run: |
40
+ databricks apps deploy "$APP_NAME" --source-code-path "$SOURCE_CODE_PATH"
@@ -0,0 +1,39 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.12"
17
+
18
+ - run: pip install build
19
+
20
+ - run: python -m build
21
+
22
+ - uses: actions/upload-artifact@v4
23
+ with:
24
+ name: dist
25
+ path: dist/
26
+
27
+ publish:
28
+ needs: build
29
+ runs-on: ubuntu-latest
30
+ environment: pypi
31
+ permissions:
32
+ id-token: write
33
+ steps:
34
+ - uses: actions/download-artifact@v4
35
+ with:
36
+ name: dist
37
+ path: dist/
38
+
39
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,137 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ .idea
132
+ .env
133
+ user_cards.json
134
+ user_cards.json.bak
135
+ fleece.db
136
+
137
+ user_cards.json
@@ -0,0 +1,3 @@
1
+ [theme]
2
+ base="light"
3
+ primaryColor="#1c1c1c"
@@ -0,0 +1,5 @@
1
+ Advertiser Disclosure:
2
+ Some of the card links and other products that appear on this website are from companies which AskSebby will earn an affiliate commission or referral bonus. AskSebby is part of an affiliate sales network and receives compensation for sending traffic to partner sites, such as CreditCards.com. This compensation may impact how and where products appear on this site (including, for example, the order in which they appear). This site does not include all credit card companies or all available credit card offers.
3
+
4
+ Editorial Note:
5
+ Opinions expressed here are the author's alone, not those of any bank, credit card issuer, airlines or hotel chain, vendors or companies, and have not been reviewed, approved, or otherwise endorsed by any of these entities.