solyanka 0.0.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 (32) hide show
  1. solyanka-0.0.1/.gitignore +14 -0
  2. solyanka-0.0.1/LICENSE +21 -0
  3. solyanka-0.0.1/PKG-INFO +101 -0
  4. solyanka-0.0.1/README.md +67 -0
  5. solyanka-0.0.1/pyproject.toml +40 -0
  6. solyanka-0.0.1/solyanka/__init__.py +6 -0
  7. solyanka-0.0.1/solyanka/transaction_patterns/__init__.py +5 -0
  8. solyanka-0.0.1/solyanka/transaction_patterns/data/README.md +79 -0
  9. solyanka-0.0.1/solyanka/transaction_patterns/data/brazil.yml +231 -0
  10. solyanka-0.0.1/solyanka/transaction_patterns/data/eea.yml +10 -0
  11. solyanka-0.0.1/solyanka/transaction_patterns/data/france.yml +18 -0
  12. solyanka-0.0.1/solyanka/transaction_patterns/data/general.yml +1091 -0
  13. solyanka-0.0.1/solyanka/transaction_patterns/data/georgia.yml +433 -0
  14. solyanka-0.0.1/solyanka/transaction_patterns/data/germany.yml +216 -0
  15. solyanka-0.0.1/solyanka/transaction_patterns/data/hungary.yml +108 -0
  16. solyanka-0.0.1/solyanka/transaction_patterns/data/indonesia.yml +602 -0
  17. solyanka-0.0.1/solyanka/transaction_patterns/data/japan.yml +127 -0
  18. solyanka-0.0.1/solyanka/transaction_patterns/data/latvia.yml +166 -0
  19. solyanka-0.0.1/solyanka/transaction_patterns/data/malaysia.yml +1109 -0
  20. solyanka-0.0.1/solyanka/transaction_patterns/data/oae.yml +53 -0
  21. solyanka-0.0.1/solyanka/transaction_patterns/data/oman.yml +26 -0
  22. solyanka-0.0.1/solyanka/transaction_patterns/data/portugal.yml +386 -0
  23. solyanka-0.0.1/solyanka/transaction_patterns/data/schema.json +237 -0
  24. solyanka-0.0.1/solyanka/transaction_patterns/data/thailand.yml +6825 -0
  25. solyanka-0.0.1/solyanka/transaction_patterns/data/transaction_pattern_creation.md +169 -0
  26. solyanka-0.0.1/solyanka/transaction_patterns/data/turkey.yml +29 -0
  27. solyanka-0.0.1/solyanka/transaction_patterns/data/uae.yml +376 -0
  28. solyanka-0.0.1/solyanka/transaction_patterns/data/uk.yml +67 -0
  29. solyanka-0.0.1/solyanka/transaction_patterns/data/ukraine.yml +13 -0
  30. solyanka-0.0.1/solyanka/transaction_patterns/data/usa.yml +120 -0
  31. solyanka-0.0.1/solyanka/transaction_patterns/data/vietnam.yml +2439 -0
  32. solyanka-0.0.1/solyanka/transaction_patterns/service.py +224 -0
@@ -0,0 +1,14 @@
1
+ **/__pycache__
2
+ *.pyc
3
+ .pytest_cache/
4
+ .mypy_cache/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .env
9
+ */coverage/
10
+ logs/*
11
+ !logs/.gitkeep
12
+ **/tmp
13
+ shared
14
+ .worktree/
solyanka-0.0.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) kvokka. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: solyanka
3
+ Version: 0.0.1
4
+ Summary: Transaction pattern utilities and dataset for statement generators
5
+ Author-email: Development Team <dev@company.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) kvokka. All rights reserved.
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE
27
+ License-File: LICENSE
28
+ Requires-Python: >=3.11
29
+ Requires-Dist: pyyaml>=6.0
30
+ Provides-Extra: dev
31
+ Requires-Dist: jsonschema>=4.23; extra == 'dev'
32
+ Requires-Dist: pytest>=8.2; extra == 'dev'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # Solyanka
36
+
37
+ Shared helpers and datasets that power the statement generators and downstream synthetic-data
38
+ pipelines (including LLM fine-tuning sets).
39
+ The first module exported by this repository focuses on transaction patterns: the curated YAML
40
+ files, the schema that keeps them in shape, and a tiny loader to consume them from any
41
+ application (FastAPI, CLI tools, notebooks, etc).
42
+
43
+ ## Installation
44
+
45
+ ```bash
46
+ pip install solyanka
47
+ ```
48
+
49
+ For local development (tests + linters):
50
+
51
+ ```bash
52
+ pip install -e ".[dev]"
53
+ ```
54
+
55
+ ## Usage
56
+
57
+ ```python
58
+ from solyanka import PatternsService, EEA_COUNTRIES
59
+
60
+ service = PatternsService()
61
+ general = service.load_general_patterns()
62
+ eea = service.load_eea_patterns()
63
+ thailand_specific = service.load_country_patterns("Thailand")
64
+
65
+ # Preferred helper: auto-mix general + (eea) + country overrides
66
+ full_set = service.get_country_patterns("Germany")
67
+
68
+ # Advanced filtering (e.g. validation scripts)
69
+ custom = service.get_patterns(country="Germany", include="general,eea")
70
+
71
+ # API-friendly dicts
72
+ payload = service.get_pattern_dicts(country="Spain")
73
+ ```
74
+
75
+ If you need to point the loader to different files (e.g. while editing YAML locally),
76
+ either pass `PatternsService(base_dir=Path("./transaction_patterns"))` or set the
77
+ `TRANSACTION_PATTERNS_DIR` environment variable.
78
+
79
+ ## Pattern sets
80
+
81
+ - **General** – always included via `load_general_patterns()`.
82
+ - **EEA** – supplement auto-applied for EEA countries via `load_eea_patterns()`.
83
+ - **Country-specific** – call `load_country_patterns("Germany")`; the helper normalizes slugs internally.
84
+
85
+ `get_country_patterns(country)` mixes general + (EEA when applicable) + country-level patterns and accepts empty/None values.
86
+ `get_patterns(country, include)` exposes finer control when tooling needs only certain slices. `include` accepts a comma-separated subset of `{"general", "eea", "country"}`; invalid values raise `ValueError`.
87
+ `get_pattern_dicts(...)` mirrors these parameters but returns normalized dictionaries that are ready for JSON responses.
88
+
89
+ ## Development
90
+
91
+ - `pytest` validates every YAML file against `schema.json`.
92
+ - GitHub Actions run tests on push/pull_request and build/publish artifacts when a semver tag is pushed.
93
+
94
+ Contributions should keep the dataset human-friendly: no generated UUIDs in the patterns,
95
+ clear field names, and comments that help reviewers understand why a pattern exists.
96
+
97
+ ### Tests
98
+
99
+ ```bash
100
+ poetry run pytest
101
+ ```
@@ -0,0 +1,67 @@
1
+ # Solyanka
2
+
3
+ Shared helpers and datasets that power the statement generators and downstream synthetic-data
4
+ pipelines (including LLM fine-tuning sets).
5
+ The first module exported by this repository focuses on transaction patterns: the curated YAML
6
+ files, the schema that keeps them in shape, and a tiny loader to consume them from any
7
+ application (FastAPI, CLI tools, notebooks, etc).
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ pip install solyanka
13
+ ```
14
+
15
+ For local development (tests + linters):
16
+
17
+ ```bash
18
+ pip install -e ".[dev]"
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```python
24
+ from solyanka import PatternsService, EEA_COUNTRIES
25
+
26
+ service = PatternsService()
27
+ general = service.load_general_patterns()
28
+ eea = service.load_eea_patterns()
29
+ thailand_specific = service.load_country_patterns("Thailand")
30
+
31
+ # Preferred helper: auto-mix general + (eea) + country overrides
32
+ full_set = service.get_country_patterns("Germany")
33
+
34
+ # Advanced filtering (e.g. validation scripts)
35
+ custom = service.get_patterns(country="Germany", include="general,eea")
36
+
37
+ # API-friendly dicts
38
+ payload = service.get_pattern_dicts(country="Spain")
39
+ ```
40
+
41
+ If you need to point the loader to different files (e.g. while editing YAML locally),
42
+ either pass `PatternsService(base_dir=Path("./transaction_patterns"))` or set the
43
+ `TRANSACTION_PATTERNS_DIR` environment variable.
44
+
45
+ ## Pattern sets
46
+
47
+ - **General** – always included via `load_general_patterns()`.
48
+ - **EEA** – supplement auto-applied for EEA countries via `load_eea_patterns()`.
49
+ - **Country-specific** – call `load_country_patterns("Germany")`; the helper normalizes slugs internally.
50
+
51
+ `get_country_patterns(country)` mixes general + (EEA when applicable) + country-level patterns and accepts empty/None values.
52
+ `get_patterns(country, include)` exposes finer control when tooling needs only certain slices. `include` accepts a comma-separated subset of `{"general", "eea", "country"}`; invalid values raise `ValueError`.
53
+ `get_pattern_dicts(...)` mirrors these parameters but returns normalized dictionaries that are ready for JSON responses.
54
+
55
+ ## Development
56
+
57
+ - `pytest` validates every YAML file against `schema.json`.
58
+ - GitHub Actions run tests on push/pull_request and build/publish artifacts when a semver tag is pushed.
59
+
60
+ Contributions should keep the dataset human-friendly: no generated UUIDs in the patterns,
61
+ clear field names, and comments that help reviewers understand why a pattern exists.
62
+
63
+ ### Tests
64
+
65
+ ```bash
66
+ poetry run pytest
67
+ ```
@@ -0,0 +1,40 @@
1
+ [project]
2
+ name = "solyanka"
3
+ version = "0.0.1"
4
+ description = "Transaction pattern utilities and dataset for statement generators"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = {file = "LICENSE"}
8
+ authors = [
9
+ {name = "Development Team", email = "dev@company.com"},
10
+ ]
11
+ dependencies = [
12
+ "pyyaml>=6.0",
13
+ ]
14
+
15
+ [project.optional-dependencies]
16
+ dev = [
17
+ "pytest>=8.2",
18
+ "jsonschema>=4.23",
19
+ ]
20
+
21
+ [build-system]
22
+ requires = ["hatchling"]
23
+ build-backend = "hatchling.build"
24
+
25
+ [tool.hatch.build]
26
+ include = [
27
+ "solyanka",
28
+ "README.md",
29
+ "LICENSE",
30
+ ]
31
+
32
+ [tool.hatch.build.targets.wheel]
33
+ packages = ["solyanka"]
34
+
35
+ [tool.pytest.ini_options]
36
+ addopts = "-ra --strict-markers --strict-config"
37
+ testpaths = ["tests"]
38
+ markers = [
39
+ "transaction_patterns: validate transaction pattern YAML files against the schema",
40
+ ]
@@ -0,0 +1,6 @@
1
+ """Solyanka – lightweight helpers for statement generation tooling."""
2
+
3
+ from .transaction_patterns.service import EEA_COUNTRIES, Pattern, PatternsService
4
+
5
+ __all__ = ["EEA_COUNTRIES", "Pattern", "PatternsService"]
6
+ __version__ = "0.1.0"
@@ -0,0 +1,5 @@
1
+ """Transaction pattern utilities."""
2
+
3
+ from .service import EEA_COUNTRIES, Pattern, PatternsService
4
+
5
+ __all__ = ["EEA_COUNTRIES", "Pattern", "PatternsService"]
@@ -0,0 +1,79 @@
1
+ # Transaction Patterns
2
+
3
+ This directory contains YAML files with transaction patterns for generating card transactions.
4
+
5
+ ## Structure
6
+
7
+ - `general.yml`: Contains transaction patterns that are common to all countries.
8
+ - `eea.yml`: Contains transaction patterns specific to EEA (European Economic Area) countries.
9
+ - `[country_code].yml`: Contains transaction patterns specific to a country. For example, `portugal.yml` contains patterns for Portugal.
10
+
11
+ ## Pattern Format
12
+
13
+ Each pattern is a YAML object with the following fields:
14
+
15
+ ### Required Fields
16
+
17
+ - `title`: The merchant name. Can be a string or a template object for dynamic generation.
18
+ - `currency`: The currency of the transaction (3-letter currency code).
19
+ - `amount_range`: A dictionary with `min` and `max` values for the transaction amount.
20
+ - `amount_format`: An integer that controls the rounding of the generated transaction amount.
21
+ - A positive integer `n` rounds the amount to `n` decimal places (e.g., `2` for `12.34`).
22
+ - `0` rounds the amount to the nearest whole number (e.g., `12`).
23
+ - A negative integer `-n` rounds the amount to the nearest `10^|n|` (e.g., `-2` for rounding to the nearest 100, like `100`, `200`).
24
+ - `types`: An array of tags categorizing the merchant (e.g., `["shopping", "groceries"]`).
25
+
26
+ ### Optional Fields
27
+
28
+ - `weight` (optional): The relative probability weight for pattern selection. Defaults to 1000.
29
+ - `refund_probability` (optional): The probability (from 0.0 to 1.0) that a transaction will be refunded. If not provided, defaults to system default.
30
+ - `refundDelayMinHours` (optional): The minimum number of hours after a transaction that a refund can be generated. Defaults to 72.
31
+ - `refundDelayMaxHours` (optional): The maximum number of hours after a transaction that a refund can be generated. Defaults to 288.
32
+ - `numberOfOccurrences` (optional): The maximum number of times this transaction pattern can be used globally across a statement. If not provided, allows unlimited use.
33
+ - `subscription_frequency_days` (optional): The frequency in days for recurring transactions. If provided, additional transactions will be generated every `subscription_frequency_days` days from the initial occurrence.
34
+
35
+ ### Template Titles
36
+
37
+ The `title` field supports dynamic generation using templates:
38
+
39
+ ```yaml
40
+ title:
41
+ type: template
42
+ template: "Revolut**{num}* DUBLIN"
43
+ params:
44
+ num:
45
+ generator: random_digits
46
+ length: 4
47
+ global_constant: true
48
+ ```
49
+
50
+ #### Supported Generators
51
+
52
+ - `random_digits`: Generates random digit strings
53
+ - `length`: Number of digits
54
+ - `zero_pad`: Whether to pad with leading zeros (default: true)
55
+ - `random_alnum`: Generates random alphanumeric strings
56
+ - `length`: Number of characters
57
+ - `charset`: Custom character set (optional)
58
+ - `choice`: Selects from a list of options
59
+ - `options`: Array of possible values
60
+ - `weights`: Optional array of selection weights
61
+
62
+ #### Supported Transforms
63
+
64
+ - `transform.case`: Apply case transformation
65
+ - `upper`: Convert to uppercase
66
+ - `lower`: Convert to lowercase
67
+ - `title`: Convert to title case
68
+
69
+ #### Global Constants
70
+
71
+ - `global_constant: true`: Ensures the same value is used across all instances of this parameter within a statement generation session.
72
+
73
+ ## Schema
74
+
75
+ The JSON schema for the transaction patterns is available at [`schema.json`](schema.json).
76
+
77
+ ## Creating Transaction Patterns
78
+
79
+ To create new transaction patterns, refer to the [Transaction Pattern Creation Guide](transaction_pattern_creation.md).
@@ -0,0 +1,231 @@
1
+ # Brazil Transaction Patterns
2
+ # Generated from BRL transaction data analysis
3
+
4
+ # Transportation - Uber rides
5
+ - title: "Uber *Uber *Trip Sao Paulo"
6
+ currency: "BRL"
7
+ amount_range:
8
+ min: 5.00
9
+ max: 150.00
10
+ amount_format: 2
11
+ types: ["transportation", "rideshare", "uber"]
12
+ weight: 800
13
+
14
+ - title: "Uber *Trip Help.uber.com SAO PAULO"
15
+ currency: "BRL"
16
+ amount_range:
17
+ min: 5.00
18
+ max: 150.00
19
+ amount_format: 2
20
+ types: ["transportation", "rideshare", "uber"]
21
+ weight: 600
22
+
23
+ # Food & Dining - Cafes
24
+ - title: "Cafe Fratelli Franqueador SAO PAULO"
25
+ currency: "BRL"
26
+ amount_range:
27
+ min: 10.00
28
+ max: 120.00
29
+ amount_format: 2
30
+ types: ["food", "cafe", "coffee"]
31
+ weight: 400
32
+
33
+ - title: "Cafeteria Bsg SAO PAULO"
34
+ currency: "BRL"
35
+ amount_range:
36
+ min: 10.00
37
+ max: 120.00
38
+ amount_format: 2
39
+ types: ["food", "cafe", "coffee"]
40
+ weight: 300
41
+
42
+ - title: "Rac Cafe Ltda SAO PAULO"
43
+ currency: "BRL"
44
+ amount_range:
45
+ min: 10.00
46
+ max: 120.00
47
+ amount_format: 2
48
+ types: ["food", "cafe", "coffee"]
49
+ weight: 200
50
+
51
+ # Healthcare - Pharmacies
52
+ - title: "Raia Drogasil SAO PAULO"
53
+ currency: "BRL"
54
+ amount_range:
55
+ min: 5.00
56
+ max: 150.00
57
+ amount_format: 2
58
+ types: ["healthcare", "pharmacy", "medicine"]
59
+ weight: 300
60
+
61
+ - title: "Drogaria Sao Paulo Sa SAO PAULO"
62
+ currency: "BRL"
63
+ amount_range:
64
+ min: 5.00
65
+ max: 150.00
66
+ amount_format: 2
67
+ types: ["healthcare", "pharmacy", "medicine"]
68
+ weight: 250
69
+
70
+ - title: "Drogaria Discover SAO PAULO"
71
+ currency: "BRL"
72
+ amount_range:
73
+ min: 5.00
74
+ max: 150.00
75
+ amount_format: 2
76
+ types: ["healthcare", "pharmacy", "medicine"]
77
+ weight: 200
78
+
79
+ # Personal Care - Barbershops
80
+ - title: "Barbearia Retrogol SAO PAULO"
81
+ currency: "BRL"
82
+ amount_range:
83
+ min: 100.00
84
+ max: 200.00
85
+ amount_format: 0
86
+ types: ["personal_care", "barbershop", "grooming"]
87
+ weight: 100
88
+
89
+ # Food & Dining - Restaurants
90
+ - title: "Restaurante Kanpai SAO PAULO"
91
+ currency: "BRL"
92
+ amount_range:
93
+ min: 50.00
94
+ max: 400.00
95
+ amount_format: 2
96
+ types: ["food", "restaurant", "dining"]
97
+ weight: 200
98
+
99
+ - title: "Z Deli Sanduiches SAO PAULO"
100
+ currency: "BRL"
101
+ amount_range:
102
+ min: 30.00
103
+ max: 350.00
104
+ amount_format: 2
105
+ types: ["food", "restaurant", "deli", "sandwiches"]
106
+ weight: 150
107
+
108
+ # Travel - Hotels
109
+ - title: "Hotel At Booking.com SAO PAULO"
110
+ currency: "BRL"
111
+ amount_range:
112
+ min: 500.00
113
+ max: 2500.00
114
+ amount_format: 2
115
+ types: ["travel", "hotel", "accommodation"]
116
+ weight: 50
117
+
118
+ - title: "Booking.com Hotel SAO PAULO"
119
+ currency: "BRL"
120
+ amount_range:
121
+ min: 500.00
122
+ max: 2500.00
123
+ amount_format: 2
124
+ types: ["travel", "hotel", "accommodation"]
125
+ weight: 50
126
+
127
+ # Shopping - General retail
128
+ - title: "Shopping Center SAO PAULO"
129
+ currency: "BRL"
130
+ amount_range:
131
+ min: 20.00
132
+ max: 400.00
133
+ amount_format: 0
134
+ types: ["shopping", "retail", "general"]
135
+ weight: 200
136
+
137
+ # Supermarkets and grocery stores
138
+ - title: "Supermercado Pao De Acucar SAO PAULO"
139
+ currency: "BRL"
140
+ amount_range:
141
+ min: 20.00
142
+ max: 300.00
143
+ amount_format: 2
144
+ types: ["food", "grocery", "supermarket"]
145
+ weight: 300
146
+
147
+ - title: "Extra Supermercados SAO PAULO"
148
+ currency: "BRL"
149
+ amount_range:
150
+ min: 25.00
151
+ max: 350.00
152
+ amount_format: 2
153
+ types: ["food", "grocery", "supermarket"]
154
+ weight: 250
155
+
156
+ # Gas stations
157
+ - title: "Posto Ipiranga SAO PAULO"
158
+ currency: "BRL"
159
+ amount_range:
160
+ min: 50.00
161
+ max: 400.00
162
+ amount_format: 2
163
+ types: ["fuel", "gas_station", "automotive"]
164
+ weight: 200
165
+
166
+ - title: "Shell Brasil SAO PAULO"
167
+ currency: "BRL"
168
+ amount_range:
169
+ min: 50.00
170
+ max: 400.00
171
+ amount_format: 2
172
+ types: ["fuel", "gas_station", "automotive"]
173
+ weight: 180
174
+
175
+ # Fast food chains
176
+ - title: "McDonald's SAO PAULO"
177
+ currency: "BRL"
178
+ amount_range:
179
+ min: 15.00
180
+ max: 80.00
181
+ amount_format: 2
182
+ types: ["food", "fast_food", "restaurant"]
183
+ weight: 300
184
+
185
+ - title: "Burger King SAO PAULO"
186
+ currency: "BRL"
187
+ amount_range:
188
+ min: 15.00
189
+ max: 75.00
190
+ amount_format: 2
191
+ types: ["food", "fast_food", "restaurant"]
192
+ weight: 200
193
+
194
+ # Public transportation
195
+ - title: "Metro Sao Paulo"
196
+ currency: "BRL"
197
+ amount_range:
198
+ min: 4.00
199
+ max: 15.00
200
+ amount_format: 2
201
+ types: ["transportation", "public_transport", "metro"]
202
+ weight: 400
203
+
204
+ # Entertainment
205
+ - title: "Cinema Cinemark SAO PAULO"
206
+ currency: "BRL"
207
+ amount_range:
208
+ min: 20.00
209
+ max: 60.00
210
+ amount_format: 2
211
+ types: ["entertainment", "cinema", "movies"]
212
+ weight: 100
213
+
214
+ # Clothing stores
215
+ - title: "C&A SAO PAULO"
216
+ currency: "BRL"
217
+ amount_range:
218
+ min: 30.00
219
+ max: 300.00
220
+ amount_format: 2
221
+ types: ["shopping", "clothing", "fashion"]
222
+ weight: 150
223
+
224
+ - title: "Renner SAO PAULO"
225
+ currency: "BRL"
226
+ amount_range:
227
+ min: 40.00
228
+ max: 350.00
229
+ amount_format: 2
230
+ types: ["shopping", "clothing", "fashion"]
231
+ weight: 120
@@ -0,0 +1,10 @@
1
+ - title: "Flixbus Berlin"
2
+ currency: "EUR"
3
+ amount_range:
4
+ min: 15.0
5
+ max: 100.0
6
+ amount_format: 2
7
+ types:
8
+ - "traveling"
9
+ - "transportation"
10
+ weight: 30
@@ -0,0 +1,18 @@
1
+ - title:
2
+ type: template
3
+ template: "Hotel Tpe2 Vad {city}"
4
+ params:
5
+ city:
6
+ generator: choice
7
+ options: ["Bordeaux", "Paris", "Lyon"]
8
+ transform:
9
+ case: upper
10
+ currency: "EUR"
11
+ amount_range:
12
+ min: 250
13
+ max: 1000.0
14
+ amount_format: 2
15
+ types:
16
+ - "traveling"
17
+ - "hotel"
18
+ weight: 20