tdcv2 0.1.2__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.
- tdcv2-0.1.2/LICENSE +21 -0
- tdcv2-0.1.2/PKG-INFO +230 -0
- tdcv2-0.1.2/README.md +196 -0
- tdcv2-0.1.2/pyproject.toml +112 -0
- tdcv2-0.1.2/setup.cfg +4 -0
- tdcv2-0.1.2/setup.py +33 -0
- tdcv2-0.1.2/src/tdcv2/__init__.py +6 -0
- tdcv2-0.1.2/src/tdcv2/cli/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/cli/__main__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/cli/args.py +149 -0
- tdcv2-0.1.2/src/tdcv2/cli/init.py +206 -0
- tdcv2-0.1.2/src/tdcv2/cli/main.py +299 -0
- tdcv2-0.1.2/src/tdcv2/cli/pack.py +276 -0
- tdcv2-0.1.2/src/tdcv2/cli/pack_picker.py +975 -0
- tdcv2-0.1.2/src/tdcv2/compute/__init__.py +6 -0
- tdcv2-0.1.2/src/tdcv2/compute/encode.py +59 -0
- tdcv2-0.1.2/src/tdcv2/compute/evaluate.py +384 -0
- tdcv2-0.1.2/src/tdcv2/compute/value.py +125 -0
- tdcv2-0.1.2/src/tdcv2/date/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/date/formatter.py +163 -0
- tdcv2-0.1.2/src/tdcv2/date/gen.py +225 -0
- tdcv2-0.1.2/src/tdcv2/date/locales.py +481 -0
- tdcv2-0.1.2/src/tdcv2/date/parse.py +83 -0
- tdcv2-0.1.2/src/tdcv2/date/plain.py +142 -0
- tdcv2-0.1.2/src/tdcv2/distribution/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/distribution/hamilton.py +78 -0
- tdcv2-0.1.2/src/tdcv2/distribution/percent_mask.py +98 -0
- tdcv2-0.1.2/src/tdcv2/engine/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/engine/_shard.py +47 -0
- tdcv2-0.1.2/src/tdcv2/engine/disk.py +32 -0
- tdcv2-0.1.2/src/tdcv2/engine/exact_uniq.py +326 -0
- tdcv2-0.1.2/src/tdcv2/engine/external_sort.py +89 -0
- tdcv2-0.1.2/src/tdcv2/engine/memory.py +1739 -0
- tdcv2-0.1.2/src/tdcv2/engine/parallel.py +138 -0
- tdcv2-0.1.2/src/tdcv2/engine/per_row.py +323 -0
- tdcv2-0.1.2/src/tdcv2/engine/repeat_keyed.py +158 -0
- tdcv2-0.1.2/src/tdcv2/engine/router.py +202 -0
- tdcv2-0.1.2/src/tdcv2/engine/stream.py +1406 -0
- tdcv2-0.1.2/src/tdcv2/errors/__init__.py +14 -0
- tdcv2-0.1.2/src/tdcv2/errors/diagnostic.py +95 -0
- tdcv2-0.1.2/src/tdcv2/errors/render.py +200 -0
- tdcv2-0.1.2/src/tdcv2/expr/__init__.py +6 -0
- tdcv2-0.1.2/src/tdcv2/expr/evaluate.py +205 -0
- tdcv2-0.1.2/src/tdcv2/expr/parse.py +295 -0
- tdcv2-0.1.2/src/tdcv2/format/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/format/interpolate.py +136 -0
- tdcv2-0.1.2/src/tdcv2/format/mask.py +202 -0
- tdcv2-0.1.2/src/tdcv2/format/transforms.py +226 -0
- tdcv2-0.1.2/src/tdcv2/formatter/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/formatter/format.py +301 -0
- tdcv2-0.1.2/src/tdcv2/generators/__init__.py +25 -0
- tdcv2-0.1.2/src/tdcv2/generators/accumulate.py +163 -0
- tdcv2-0.1.2/src/tdcv2/generators/advanced_regex.py +596 -0
- tdcv2-0.1.2/src/tdcv2/generators/counter.py +19 -0
- tdcv2-0.1.2/src/tdcv2/generators/file.py +423 -0
- tdcv2-0.1.2/src/tdcv2/generators/http.py +208 -0
- tdcv2-0.1.2/src/tdcv2/generators/imperfections.py +133 -0
- tdcv2-0.1.2/src/tdcv2/generators/number.py +409 -0
- tdcv2-0.1.2/src/tdcv2/generators/regex.py +485 -0
- tdcv2-0.1.2/src/tdcv2/generators/repeat.py +203 -0
- tdcv2-0.1.2/src/tdcv2/generators/symbol.py +82 -0
- tdcv2-0.1.2/src/tdcv2/lib/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/lib/numbers.py +74 -0
- tdcv2-0.1.2/src/tdcv2/lib/text.py +31 -0
- tdcv2-0.1.2/src/tdcv2/model/__init__.py +33 -0
- tdcv2-0.1.2/src/tdcv2/model/config.py +272 -0
- tdcv2-0.1.2/src/tdcv2/output/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/output/column_type.py +153 -0
- tdcv2-0.1.2/src/tdcv2/output/columns.py +219 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/__init__.py +27 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/convert.py +244 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/dictionary.py +66 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/list_levels.py +75 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/plain.py +124 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/rle.py +108 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/schema.py +131 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/snappy.py +129 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/statistics.py +124 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/thrift.py +136 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet/writer.py +522 -0
- tdcv2-0.1.2/src/tdcv2/output/parquet_output.py +134 -0
- tdcv2-0.1.2/src/tdcv2/packs/__init__.py +17 -0
- tdcv2-0.1.2/src/tdcv2/packs/data_packs.py +274 -0
- tdcv2-0.1.2/src/tdcv2/packs/project_config.py +222 -0
- tdcv2-0.1.2/src/tdcv2/packs/registry.py +246 -0
- tdcv2-0.1.2/src/tdcv2/packs/source.py +190 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/book/isbn10.txt +25 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/book/isbn13.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/database/collation.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/database/column.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/database/engine.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/database/type.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/browser.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/environment.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/framework.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/C#.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Go.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Java.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/JavaScript.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/PHP.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Python.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Ruby.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Rust.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Swift.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/TypeScript.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/httpHeader.txt +22 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/languageCoherent.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/logLevel.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/os.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/programmingLanguage.txt +37 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/spdxLicense.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/device/iccid.txt +36 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/device/imei.txt +36 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/docs/mrz/id_td1.txt +93 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/docs/mrz/passport_td3.txt +105 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/accountType.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/bic.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/crypto.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currency.txt +23 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currencyCode.txt +23 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currencySymbol.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/iban.txt +27 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/stockExchange.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Avalanche.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Bitcoin.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Cardano.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Chainlink.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Cosmos.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Dogecoin.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Ethereum.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Litecoin.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Monero.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Polkadot.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Polygon.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Ripple.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Solana.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Stellar.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Tether.txt +4 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/transactionType.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/geo/timezone.txt +39 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/git/sha.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/id/nanoid.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/id/object_id.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/id/ulid.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/id/uuid.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/domain.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/email.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/emoji.txt +33 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/httpMethod.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/httpStatus.txt +25 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/ipv4.txt +36 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/ipv6.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/mac.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/slug.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/url.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/userAgent.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/username.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/logistics/container_iso6346.txt +34 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/payment/card/pan.txt +36 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/periodical/issn.txt +25 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/phone/e164.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/product/ean13.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/product/gtin14.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/product/upc_a.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/science/chemicalElement.txt +32 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/science/unit.txt +45 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/api_key.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/jwt.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/md5.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/otp.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/sha1.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/sha256.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/security/totp_secret.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/system/cron.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/system/directoryPath.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/system/fileExt.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/system/mimeType.txt +23 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/system/semver.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/transport/airportCode.txt +37 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/brand.txt +52 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/manufacturer.txt +41 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Acura.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Alfa Romeo.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Aston Martin.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Audi.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/BMW.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Bentley.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Bugatti.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Buick.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Cadillac.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Chevrolet.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Chrysler.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Dodge.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ferrari.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Fiat.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ford.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/GMC.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Genesis.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Honda.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Hyundai.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Infiniti.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Jaguar.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Jeep.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Kia.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lamborghini.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Land Rover.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lexus.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lincoln.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lotus.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lucid.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Maserati.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Maybach.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mazda.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/McLaren.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mercedes-Benz.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mini.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mitsubishi.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Nissan.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Polestar.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Porsche.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ram.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Rivian.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Rolls-Royce.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Subaru.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Tesla.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Toyota.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Volkswagen.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Volvo.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model.txt +41 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/vin.txt +49 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/driversLicense.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/medicare.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/passport.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/ssn.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/education/university.txt +38 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/aba_routing.txt +23 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/accountType.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/bank.txt +45 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/city.txt +1004 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/county.txt +183 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/state.txt +60 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/stateAbbr.txt +60 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/streetName.txt +32 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/streetNamed.txt +65 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/zip.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/holiday.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/phone.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/sport/team.txt +31 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/ein.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/filingStatus.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/itin.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/vehicle/plate.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/address/buildingType.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/address/unitDesignator.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/airline/aircraftType.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/airline/name.txt +32 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/bird.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/cat.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/dog.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/fish.txt +22 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/horse.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/insect.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/type.txt +34 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/book/format.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/book/genre.txt +26 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/shoeSizeUs.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/size.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/type.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/color/name.txt +54 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/carrier.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/department.txt +32 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/orderStatus.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/paymentMethod.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/paymentStatus.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productAdjective.txt +34 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productMaterial.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productNoun.txt +54 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/returnReason.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/reviewTitle.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/shippingStatus.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/unitOfMeasure.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzAdjective.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzNoun.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzVerb.txt +42 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/industry.txt +29 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/legalSuffix.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/company/namePart.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/month.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/monthAbbr.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/quarter.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/season.txt +8 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/timeOfDay.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/weekday.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/date/weekdayAbbr.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/education/courseSubject.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/education/degree.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/education/grade.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/education/major.txt +26 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/event/type.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/event/venueType.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/budgetCategory.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/creditScoreBand.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/insuranceType.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/loanType.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/cuisine.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dish.txt +29 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/American.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Chinese.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/French.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Greek.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Indian.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Italian.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Japanese.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Korean.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Lebanese.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Mexican.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Spanish.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Thai.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Turkish.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Vietnamese.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/fruit.txt +26 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/ingredient.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/spice.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/food/vegetable.txt +26 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/characterClass.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/platform.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/rank.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Argentina.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Australia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Bangladesh.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Brazil.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Canada.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/China.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Egypt.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/France.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Germany.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Greece.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/India.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Indonesia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Ireland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Italy.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Japan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Mexico.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Netherlands.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/New Zealand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Nigeria.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Norway.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Pakistan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Poland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Portugal.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Russia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Saudi Arabia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Singapore.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/South Africa.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/South Korea.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Spain.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Sweden.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Switzerland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Thailand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Turkey.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/United Kingdom.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/United States.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Vietnam.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/country.txt +41 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Argentina.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Australia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Bangladesh.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Brazil.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Canada.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/China.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Egypt.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/France.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Germany.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Greece.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/India.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Indonesia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Ireland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Italy.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Japan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Mexico.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Netherlands.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/New Zealand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Nigeria.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Norway.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Pakistan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Poland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Portugal.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Russia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Saudi Arabia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Singapore.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/South Africa.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/South Korea.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Spain.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Sweden.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Switzerland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Thailand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Turkey.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/United Kingdom.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/United States.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Vietnam.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Argentina.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Australia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Bangladesh.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Brazil.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Canada.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/China.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Egypt.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/France.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Germany.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Greece.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/India.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Indonesia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Ireland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Italy.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Japan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Mexico.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Netherlands.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/New Zealand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Nigeria.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Norway.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Pakistan.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Poland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Portugal.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Russia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Saudi Arabia.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Singapore.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/South Africa.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/South Korea.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Spain.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Sweden.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Switzerland.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Thailand.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Turkey.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/United Kingdom.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/United States.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Vietnam.txt +5 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/direction.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/government/agency.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/government/documentType.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/abbreviation.txt +40 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/adjective.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/ingverb.txt +23 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/noun.txt +30 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/verb.txt +25 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/benefit.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/interviewStage.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/leaveType.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/meetingType.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/caseType.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/court.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/term.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/location/country.txt +241 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/media/gameGenre.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/media/movieGenre.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/media/streamingPlatform.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/media/tvRating.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/allergy.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/ancestry.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/bloodType.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosis.txt +82 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Ashkenazi Jewish.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/East Asian.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Eastern European.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Indigenous American.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Mediterranean.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Middle Eastern.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/North African.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Northern European.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Pacific Islander.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/South Asian.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Southeast Asian.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Sub-Saharan African.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Cardiology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Dermatology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Endocrinology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Gastroenterology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Nephrology.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Neurology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Oncology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Orthopedics.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Psychiatry.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Pulmonology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisFemale.txt +30 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisMale.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/drugGeneric.txt +38 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/specialty.txt +35 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/specialtyCoherent.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/symptom.txt +39 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/music/genre.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/music/instrument.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/flower.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/gemstone.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/metal.txt +22 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/tree.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/female/diagnosis.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/female/firstName.txt +1005 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/gender.txt +6 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/hobby.txt +26 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/householdSize.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/incomeBracket.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/language.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/lastName.txt +1005 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/male/diagnosis.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/male/firstName.txt +1005 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/maritalStatus.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/nationality.txt +29 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/nickname.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/prefix.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/pronoun.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/suffix.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/person/zodiac.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/amenity.txt +22 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/listingStatus.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/propertyType.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/roomType.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/social/contentType.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/social/hashtag.txt +29 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/social/platform.txt +19 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/social/reaction.txt +15 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/name.txt +28 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/position.txt +22 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/American Football.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Baseball.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Basketball.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Cricket.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Ice Hockey.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Rugby.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Soccer.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Volleyball.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/sportCoherent.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/telecom/carrier.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/telecom/planType.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/text/paragraph.txt +154 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/text/sentence.txt +504 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/text/word.txt +404 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/bookingStatus.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/hotelAmenity.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/roomType.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/starRating.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/tripType.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/bicycle.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/fuel.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/type.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/weather/condition.txt +18 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/weather/phenomenon.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/word/adjective.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/word/adverb.txt +34 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/word/noun.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/word/verb.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/cable/conduit.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/cable/type.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/department.txt +24 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/employmentType.txt +13 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/industryCoherent.txt +14 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Construction.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Education.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Finance.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Healthcare.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Hospitality.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Legal.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Manufacturing.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Retail.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Technology.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Transportation.txt +10 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobTitle.txt +189 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/method.txt +12 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/mineral.txt +21 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/shift.txt +9 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/seniority.txt +20 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/skill.txt +44 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/cargoType.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/licenceClass.txt +7 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/routeType.txt +11 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/world/religion.txt +17 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/en/world/writingSystem.txt +16 -0
- tdcv2-0.1.2/src/tdcv2/packs_data/index.txt +489 -0
- tdcv2-0.1.2/src/tdcv2/parser/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/parser/config_builder.py +516 -0
- tdcv2-0.1.2/src/tdcv2/parser/facade.py +137 -0
- tdcv2-0.1.2/src/tdcv2/parser/generated/TDCLexer.py +160 -0
- tdcv2-0.1.2/src/tdcv2/parser/generated/TDCParser.py +870 -0
- tdcv2-0.1.2/src/tdcv2/parser/generated/TDCParserVisitor.py +72 -0
- tdcv2-0.1.2/src/tdcv2/parser/generated/__init__.py +0 -0
- tdcv2-0.1.2/src/tdcv2/pattern/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/pattern/curve.py +301 -0
- tdcv2-0.1.2/src/tdcv2/pattern/density.py +133 -0
- tdcv2-0.1.2/src/tdcv2/pattern/gen.py +261 -0
- tdcv2-0.1.2/src/tdcv2/pattern/png.py +178 -0
- tdcv2-0.1.2/src/tdcv2/pattern/svg.py +424 -0
- tdcv2-0.1.2/src/tdcv2/prng/__init__.py +6 -0
- tdcv2-0.1.2/src/tdcv2/prng/permute.py +102 -0
- tdcv2-0.1.2/src/tdcv2/prng/prng.py +141 -0
- tdcv2-0.1.2/src/tdcv2/prng/rand.py +34 -0
- tdcv2-0.1.2/src/tdcv2/prng/seekable.py +60 -0
- tdcv2-0.1.2/src/tdcv2/sequence/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/sequence/pool.py +132 -0
- tdcv2-0.1.2/src/tdcv2/sequence/uniq.py +264 -0
- tdcv2-0.1.2/src/tdcv2/sequence/uniq_simple.py +175 -0
- tdcv2-0.1.2/src/tdcv2/stats/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/stats/distribution.py +249 -0
- tdcv2-0.1.2/src/tdcv2/stats/special.py +174 -0
- tdcv2-0.1.2/src/tdcv2/stats/timeseries.py +89 -0
- tdcv2-0.1.2/src/tdcv2/tdc.py +465 -0
- tdcv2-0.1.2/src/tdcv2/unicode/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/unicode/alphabets.py +59 -0
- tdcv2-0.1.2/src/tdcv2/unicode/char_set.py +57 -0
- tdcv2-0.1.2/src/tdcv2/validator/__init__.py +5 -0
- tdcv2-0.1.2/src/tdcv2/validator/checks.py +101 -0
- tdcv2-0.1.2/src/tdcv2/validator/compute_check.py +324 -0
- tdcv2-0.1.2/src/tdcv2/validator/validate.py +2912 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/PKG-INFO +230 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/SOURCES.txt +632 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/dependency_links.txt +1 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/entry_points.txt +2 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/requires.txt +5 -0
- tdcv2-0.1.2/src/tdcv2.egg-info/top_level.txt +1 -0
- tdcv2-0.1.2/tests/test_api.py +237 -0
- tdcv2-0.1.2/tests/test_cases.py +71 -0
- tdcv2-0.1.2/tests/test_cli.py +300 -0
- tdcv2-0.1.2/tests/test_cli_fixture.py +167 -0
- tdcv2-0.1.2/tests/test_compute.py +298 -0
- tdcv2-0.1.2/tests/test_dates.py +195 -0
- tdcv2-0.1.2/tests/test_diagnostics.py +46 -0
- tdcv2-0.1.2/tests/test_distribution.py +61 -0
- tdcv2-0.1.2/tests/test_engines.py +64 -0
- tdcv2-0.1.2/tests/test_filter_vectors.py +33 -0
- tdcv2-0.1.2/tests/test_format.py +92 -0
- tdcv2-0.1.2/tests/test_generators.py +260 -0
- tdcv2-0.1.2/tests/test_packs.py +280 -0
- tdcv2-0.1.2/tests/test_parallel.py +139 -0
- tdcv2-0.1.2/tests/test_parquet.py +53 -0
- tdcv2-0.1.2/tests/test_prng.py +76 -0
- tdcv2-0.1.2/tests/test_statistics.py +294 -0
- tdcv2-0.1.2/tests/test_underline.py +52 -0
tdcv2-0.1.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nick Liapin
|
|
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.
|
tdcv2-0.1.2/PKG-INFO
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tdcv2
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Deterministic test-data generator: coherent records, exact proportions, and any text format you describe. Same seed, same bytes — in Python, TypeScript, Java, C# and Rust alike.
|
|
5
|
+
Author: Nick Liapin
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://nickliapin.github.io/tdcv2/
|
|
8
|
+
Project-URL: Documentation, https://nickliapin.github.io/tdcv2/docs/bindings/python
|
|
9
|
+
Project-URL: Repository, https://github.com/NickLiapin/tdcv2
|
|
10
|
+
Project-URL: Changelog, https://github.com/NickLiapin/tdcv2/blob/main/CHANGELOG.md
|
|
11
|
+
Project-URL: Issues, https://github.com/NickLiapin/tdcv2/issues
|
|
12
|
+
Keywords: test-data,test-data-generator,mock-data,fake-data,fake-data-generator,synthetic-data,synthetic-data-generator,dummy-data,sample-data,data-generator,data-generation,deterministic,seeded,reproducible,coherent-data,fixtures,testing,csv,json,sql,parquet,cli,dsl,locale,i18n
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development :: Testing
|
|
23
|
+
Classifier: Topic :: Software Development :: Testing :: Mocking
|
|
24
|
+
Classifier: Topic :: Utilities
|
|
25
|
+
Classifier: Typing :: Typed
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Requires-Dist: antlr4-python3-runtime==4.13.2
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
32
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
# TDC — The Data Constructor
|
|
36
|
+
|
|
37
|
+
Test data that is coherent **inside each record**. In one row, the name matches the
|
|
38
|
+
gender, the city sits in the right country, the diagnosis fits the patient. Run it
|
|
39
|
+
again with the same seed and you get the same rows, byte for byte.
|
|
40
|
+
|
|
41
|
+
An ordinary fake-data library draws every field on its own, so a row is a bag of
|
|
42
|
+
individually plausible values that contradict each other. TDC draws a field from what
|
|
43
|
+
the previous field chose.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pip install tdcv2
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## A first config
|
|
50
|
+
|
|
51
|
+
A config says what the records are; a block says how they should look on the page.
|
|
52
|
+
|
|
53
|
+
```xml title="people.tdc"
|
|
54
|
+
<tdc>
|
|
55
|
+
<env count="10" seed="demo" local="en">
|
|
56
|
+
<sequence name="Gender">
|
|
57
|
+
<gen type="text" value="Male,Female" percent="60,40"/>
|
|
58
|
+
</sequence>
|
|
59
|
+
|
|
60
|
+
<sequence name="MaleName" parent="Gender.Male">
|
|
61
|
+
<gen type="template" value="person.male.firstName"/>
|
|
62
|
+
</sequence>
|
|
63
|
+
<sequence name="FemaleName" parent="Gender.Female">
|
|
64
|
+
<gen type="template" value="person.female.firstName"/>
|
|
65
|
+
</sequence>
|
|
66
|
+
|
|
67
|
+
<sequence name="Age"><gen type="number" value="18..65"/></sequence>
|
|
68
|
+
</env>
|
|
69
|
+
|
|
70
|
+
<block>
|
|
71
|
+
<line><data>${{_count}}. ${{Gender}} — ${{MaleName}}${{FemaleName}}, age ${{Age}}</data></line>
|
|
72
|
+
</block>
|
|
73
|
+
</tdc>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
tdcv2 people.tdc
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
1. Male — Robert, age 59
|
|
82
|
+
2. Female — Mary, age 18
|
|
83
|
+
3. Male — James, age 53
|
|
84
|
+
...
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Exactly six men and four women — `percent="60,40"` is apportioned across whole rows by
|
|
88
|
+
the Hamilton method, not approximated by independent coin flips. Every name matches its
|
|
89
|
+
gender, because a female row cannot reach the male list at all. Change the `<block>` and
|
|
90
|
+
the same records come out as CSV, JSON, SQL, YAML or a format you spell out yourself.
|
|
91
|
+
|
|
92
|
+
## From Python
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from tdcv2 import TDC
|
|
96
|
+
|
|
97
|
+
data = TDC("people.tdc")
|
|
98
|
+
print(data) # the whole run as text
|
|
99
|
+
|
|
100
|
+
for row in data:
|
|
101
|
+
print(row["Gender"], row["Age"])
|
|
102
|
+
|
|
103
|
+
data.write_file("people.parquet") # the extension picks the format
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The constructor also takes `config_string=` instead of a path, and `count=`, `seed=`,
|
|
107
|
+
`locale=`, `now=` and `engine=` override whatever `<env>` declared. `now=` is the one
|
|
108
|
+
worth remembering in a test: a config with a date generator reads the clock, so pinning
|
|
109
|
+
it is what keeps such a test stable for longer than a day.
|
|
110
|
+
|
|
111
|
+
### Large runs
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
data.write_file("people.csv", workers="auto") # one process per core, bar one
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
A row is a function of its own index — that is what the streaming engine is built
|
|
118
|
+
around — so a run splits across processes with nothing to coordinate. The output is byte
|
|
119
|
+
for byte what one process writes; on one machine a gigabyte went from 11m37s to 87s
|
|
120
|
+
across eleven processes.
|
|
121
|
+
|
|
122
|
+
You do not need `if __name__ == "__main__":` around the call. Workers are launched as a
|
|
123
|
+
named module rather than through `multiprocessing`, so nothing of yours is re-imported
|
|
124
|
+
and re-executed.
|
|
125
|
+
|
|
126
|
+
Splitting is skipped, silently and safely, wherever it would not be sound: the in-memory
|
|
127
|
+
and exact engines, a config passed as a string rather than a file, Parquet output, and
|
|
128
|
+
runs short enough that starting processes costs more than the rows do.
|
|
129
|
+
|
|
130
|
+
## The command line
|
|
131
|
+
|
|
132
|
+
`pip install tdcv2` puts `tdcv2` on the PATH — the same commands as the TypeScript, Java,
|
|
133
|
+
C# and Rust CLIs, flag for flag. A Python user should not have to install Node to run a
|
|
134
|
+
`.tdc` file.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
tdcv2 people.tdc -o people.csv --count 100000 --jobs 8
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
| | |
|
|
141
|
+
| -------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
142
|
+
| `tdcv2 <file.tdc>` | Generate. `-o`, `--seed`, `--count`, `--locale`, `--data-path`, `--engine`, `--jobs` |
|
|
143
|
+
| `tdcv2 init` | Write a `tdcv2.config.json` — asks at a terminal, takes `--yes` in a script |
|
|
144
|
+
| `tdcv2 pack list \| add <id> \| remove <id>` | Data packs, from the shared registry |
|
|
145
|
+
| `tdcv2 check <file.tdc>` | Validate and say nothing when it is fine — for a pre-commit hook |
|
|
146
|
+
| `tdcv2 format [-w] <file.tdc>` | Pretty-print a config; `-w` rewrites it in place |
|
|
147
|
+
|
|
148
|
+
`--jobs` is the process split described above, and changes nothing but the wall clock.
|
|
149
|
+
|
|
150
|
+
## Data packs
|
|
151
|
+
|
|
152
|
+
A pack is the _data_ — the name lists, cities, streets and locale rules that
|
|
153
|
+
`type="template"` draws from. The wheel carries a starter set: `common`, `en` and the USA
|
|
154
|
+
country pack, which is what the example above uses. Ten languages and more than ninety
|
|
155
|
+
country packs — with the right check-digit rule for each national ID format — are
|
|
156
|
+
downloaded on demand:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
tdcv2 init # write a tdcv2.config.json, once per project
|
|
160
|
+
tdcv2 pack list # what the registry has
|
|
161
|
+
tdcv2 pack add ru france # download and wire up
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Or from code:
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from tdcv2.packs import DataPacks
|
|
168
|
+
|
|
169
|
+
DataPacks.install(None, "ru", "france") # downloads, verifies, registers in tdcv2.config.json
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
One registry, one `tdcv2.config.json`, one store, shared by all five implementations: a
|
|
173
|
+
pack installed from here is a pack the others find. `--registry` accepts an `http`,
|
|
174
|
+
`https` or `file` address, so an offline mirror or a folder on a share works the same way
|
|
175
|
+
as the public one.
|
|
176
|
+
|
|
177
|
+
## One config, five implementations
|
|
178
|
+
|
|
179
|
+
TDC exists in TypeScript, Python, Java, C# and Rust. The same config and seed produce the
|
|
180
|
+
same bytes in all five — that is the contract, and a shared fixture suite under
|
|
181
|
+
`fixtures/cross-language/` checks it on every change: the shared cases through the router
|
|
182
|
+
and on all three engines, the diagnostic cases by code and position, the PRNG and
|
|
183
|
+
apportionment vectors, and the Parquet files byte for byte.
|
|
184
|
+
|
|
185
|
+
It is why this package reimplements what a dependency would otherwise have provided. The
|
|
186
|
+
only runtime dependency is `antlr4-python3-runtime`, and only because the grammar is
|
|
187
|
+
shared with the other implementations and the parse tree has to be the same tree. The
|
|
188
|
+
PRNG, the Snappy encoder, the Parquet writer and the date arithmetic are written here, so
|
|
189
|
+
no library's choice of rounding or compression can change the bytes.
|
|
190
|
+
|
|
191
|
+
| Module | What it owns |
|
|
192
|
+
| -------------- | --------------------------------------------------------------------------------- |
|
|
193
|
+
| `prng` | The seekable generator, and the format-preserving permutation |
|
|
194
|
+
| `distribution` | Hamilton apportionment and the `percent=` mask |
|
|
195
|
+
| `generators` | number, regex, advanced_regex, symbol, counter, file, http, repeat, imperfections |
|
|
196
|
+
| `date` | A UTC calendar written out, eleven locale tables, the Moment-style formatter |
|
|
197
|
+
| `stats` | Named distributions, the special functions behind gamma and beta, time series |
|
|
198
|
+
| `pattern` | A drawn curve as a signal or a distribution; SVG and PNG readers |
|
|
199
|
+
| `format` | The positional mask, the interpolation filters, `${{Name\|filter}}` |
|
|
200
|
+
| `compute` | The check-digit language, and the `if=` expression language |
|
|
201
|
+
| `packs` | Pack loading, the project cascade, the shared registry client |
|
|
202
|
+
| `engine` | The three engines and the router that picks between them |
|
|
203
|
+
| `validator` | Every `TDC###` code, each at the position an editor would underline |
|
|
204
|
+
| `output` | Declared column types and the Parquet writer |
|
|
205
|
+
|
|
206
|
+
## Working on the repository
|
|
207
|
+
|
|
208
|
+
The parser is generated from the shared grammar and the generator runs on Node. A
|
|
209
|
+
released package ships it already generated; a checkout does not.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
node scripts/generate-parsers.mjs --only python
|
|
213
|
+
cd python
|
|
214
|
+
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
|
|
215
|
+
.venv/bin/pytest # 970 tests
|
|
216
|
+
.venv/bin/ruff check src tests
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
`node scripts/five-ways.mjs --only python` does the same and regenerates the parser
|
|
220
|
+
first, which is what CI runs.
|
|
221
|
+
|
|
222
|
+
## Links
|
|
223
|
+
|
|
224
|
+
- [Documentation](https://nickliapin.github.io/tdcv2/) — the DSL reference, guides and generators
|
|
225
|
+
- [The Python binding](https://nickliapin.github.io/tdcv2/docs/bindings/python)
|
|
226
|
+
- [Source](https://github.com/NickLiapin/tdcv2)
|
|
227
|
+
|
|
228
|
+
## License
|
|
229
|
+
|
|
230
|
+
MIT
|
tdcv2-0.1.2/README.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# TDC — The Data Constructor
|
|
2
|
+
|
|
3
|
+
Test data that is coherent **inside each record**. In one row, the name matches the
|
|
4
|
+
gender, the city sits in the right country, the diagnosis fits the patient. Run it
|
|
5
|
+
again with the same seed and you get the same rows, byte for byte.
|
|
6
|
+
|
|
7
|
+
An ordinary fake-data library draws every field on its own, so a row is a bag of
|
|
8
|
+
individually plausible values that contradict each other. TDC draws a field from what
|
|
9
|
+
the previous field chose.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install tdcv2
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## A first config
|
|
16
|
+
|
|
17
|
+
A config says what the records are; a block says how they should look on the page.
|
|
18
|
+
|
|
19
|
+
```xml title="people.tdc"
|
|
20
|
+
<tdc>
|
|
21
|
+
<env count="10" seed="demo" local="en">
|
|
22
|
+
<sequence name="Gender">
|
|
23
|
+
<gen type="text" value="Male,Female" percent="60,40"/>
|
|
24
|
+
</sequence>
|
|
25
|
+
|
|
26
|
+
<sequence name="MaleName" parent="Gender.Male">
|
|
27
|
+
<gen type="template" value="person.male.firstName"/>
|
|
28
|
+
</sequence>
|
|
29
|
+
<sequence name="FemaleName" parent="Gender.Female">
|
|
30
|
+
<gen type="template" value="person.female.firstName"/>
|
|
31
|
+
</sequence>
|
|
32
|
+
|
|
33
|
+
<sequence name="Age"><gen type="number" value="18..65"/></sequence>
|
|
34
|
+
</env>
|
|
35
|
+
|
|
36
|
+
<block>
|
|
37
|
+
<line><data>${{_count}}. ${{Gender}} — ${{MaleName}}${{FemaleName}}, age ${{Age}}</data></line>
|
|
38
|
+
</block>
|
|
39
|
+
</tdc>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
tdcv2 people.tdc
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
1. Male — Robert, age 59
|
|
48
|
+
2. Female — Mary, age 18
|
|
49
|
+
3. Male — James, age 53
|
|
50
|
+
...
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Exactly six men and four women — `percent="60,40"` is apportioned across whole rows by
|
|
54
|
+
the Hamilton method, not approximated by independent coin flips. Every name matches its
|
|
55
|
+
gender, because a female row cannot reach the male list at all. Change the `<block>` and
|
|
56
|
+
the same records come out as CSV, JSON, SQL, YAML or a format you spell out yourself.
|
|
57
|
+
|
|
58
|
+
## From Python
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from tdcv2 import TDC
|
|
62
|
+
|
|
63
|
+
data = TDC("people.tdc")
|
|
64
|
+
print(data) # the whole run as text
|
|
65
|
+
|
|
66
|
+
for row in data:
|
|
67
|
+
print(row["Gender"], row["Age"])
|
|
68
|
+
|
|
69
|
+
data.write_file("people.parquet") # the extension picks the format
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The constructor also takes `config_string=` instead of a path, and `count=`, `seed=`,
|
|
73
|
+
`locale=`, `now=` and `engine=` override whatever `<env>` declared. `now=` is the one
|
|
74
|
+
worth remembering in a test: a config with a date generator reads the clock, so pinning
|
|
75
|
+
it is what keeps such a test stable for longer than a day.
|
|
76
|
+
|
|
77
|
+
### Large runs
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
data.write_file("people.csv", workers="auto") # one process per core, bar one
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A row is a function of its own index — that is what the streaming engine is built
|
|
84
|
+
around — so a run splits across processes with nothing to coordinate. The output is byte
|
|
85
|
+
for byte what one process writes; on one machine a gigabyte went from 11m37s to 87s
|
|
86
|
+
across eleven processes.
|
|
87
|
+
|
|
88
|
+
You do not need `if __name__ == "__main__":` around the call. Workers are launched as a
|
|
89
|
+
named module rather than through `multiprocessing`, so nothing of yours is re-imported
|
|
90
|
+
and re-executed.
|
|
91
|
+
|
|
92
|
+
Splitting is skipped, silently and safely, wherever it would not be sound: the in-memory
|
|
93
|
+
and exact engines, a config passed as a string rather than a file, Parquet output, and
|
|
94
|
+
runs short enough that starting processes costs more than the rows do.
|
|
95
|
+
|
|
96
|
+
## The command line
|
|
97
|
+
|
|
98
|
+
`pip install tdcv2` puts `tdcv2` on the PATH — the same commands as the TypeScript, Java,
|
|
99
|
+
C# and Rust CLIs, flag for flag. A Python user should not have to install Node to run a
|
|
100
|
+
`.tdc` file.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
tdcv2 people.tdc -o people.csv --count 100000 --jobs 8
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
| | |
|
|
107
|
+
| -------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
108
|
+
| `tdcv2 <file.tdc>` | Generate. `-o`, `--seed`, `--count`, `--locale`, `--data-path`, `--engine`, `--jobs` |
|
|
109
|
+
| `tdcv2 init` | Write a `tdcv2.config.json` — asks at a terminal, takes `--yes` in a script |
|
|
110
|
+
| `tdcv2 pack list \| add <id> \| remove <id>` | Data packs, from the shared registry |
|
|
111
|
+
| `tdcv2 check <file.tdc>` | Validate and say nothing when it is fine — for a pre-commit hook |
|
|
112
|
+
| `tdcv2 format [-w] <file.tdc>` | Pretty-print a config; `-w` rewrites it in place |
|
|
113
|
+
|
|
114
|
+
`--jobs` is the process split described above, and changes nothing but the wall clock.
|
|
115
|
+
|
|
116
|
+
## Data packs
|
|
117
|
+
|
|
118
|
+
A pack is the _data_ — the name lists, cities, streets and locale rules that
|
|
119
|
+
`type="template"` draws from. The wheel carries a starter set: `common`, `en` and the USA
|
|
120
|
+
country pack, which is what the example above uses. Ten languages and more than ninety
|
|
121
|
+
country packs — with the right check-digit rule for each national ID format — are
|
|
122
|
+
downloaded on demand:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
tdcv2 init # write a tdcv2.config.json, once per project
|
|
126
|
+
tdcv2 pack list # what the registry has
|
|
127
|
+
tdcv2 pack add ru france # download and wire up
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Or from code:
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from tdcv2.packs import DataPacks
|
|
134
|
+
|
|
135
|
+
DataPacks.install(None, "ru", "france") # downloads, verifies, registers in tdcv2.config.json
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
One registry, one `tdcv2.config.json`, one store, shared by all five implementations: a
|
|
139
|
+
pack installed from here is a pack the others find. `--registry` accepts an `http`,
|
|
140
|
+
`https` or `file` address, so an offline mirror or a folder on a share works the same way
|
|
141
|
+
as the public one.
|
|
142
|
+
|
|
143
|
+
## One config, five implementations
|
|
144
|
+
|
|
145
|
+
TDC exists in TypeScript, Python, Java, C# and Rust. The same config and seed produce the
|
|
146
|
+
same bytes in all five — that is the contract, and a shared fixture suite under
|
|
147
|
+
`fixtures/cross-language/` checks it on every change: the shared cases through the router
|
|
148
|
+
and on all three engines, the diagnostic cases by code and position, the PRNG and
|
|
149
|
+
apportionment vectors, and the Parquet files byte for byte.
|
|
150
|
+
|
|
151
|
+
It is why this package reimplements what a dependency would otherwise have provided. The
|
|
152
|
+
only runtime dependency is `antlr4-python3-runtime`, and only because the grammar is
|
|
153
|
+
shared with the other implementations and the parse tree has to be the same tree. The
|
|
154
|
+
PRNG, the Snappy encoder, the Parquet writer and the date arithmetic are written here, so
|
|
155
|
+
no library's choice of rounding or compression can change the bytes.
|
|
156
|
+
|
|
157
|
+
| Module | What it owns |
|
|
158
|
+
| -------------- | --------------------------------------------------------------------------------- |
|
|
159
|
+
| `prng` | The seekable generator, and the format-preserving permutation |
|
|
160
|
+
| `distribution` | Hamilton apportionment and the `percent=` mask |
|
|
161
|
+
| `generators` | number, regex, advanced_regex, symbol, counter, file, http, repeat, imperfections |
|
|
162
|
+
| `date` | A UTC calendar written out, eleven locale tables, the Moment-style formatter |
|
|
163
|
+
| `stats` | Named distributions, the special functions behind gamma and beta, time series |
|
|
164
|
+
| `pattern` | A drawn curve as a signal or a distribution; SVG and PNG readers |
|
|
165
|
+
| `format` | The positional mask, the interpolation filters, `${{Name\|filter}}` |
|
|
166
|
+
| `compute` | The check-digit language, and the `if=` expression language |
|
|
167
|
+
| `packs` | Pack loading, the project cascade, the shared registry client |
|
|
168
|
+
| `engine` | The three engines and the router that picks between them |
|
|
169
|
+
| `validator` | Every `TDC###` code, each at the position an editor would underline |
|
|
170
|
+
| `output` | Declared column types and the Parquet writer |
|
|
171
|
+
|
|
172
|
+
## Working on the repository
|
|
173
|
+
|
|
174
|
+
The parser is generated from the shared grammar and the generator runs on Node. A
|
|
175
|
+
released package ships it already generated; a checkout does not.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
node scripts/generate-parsers.mjs --only python
|
|
179
|
+
cd python
|
|
180
|
+
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
|
|
181
|
+
.venv/bin/pytest # 970 tests
|
|
182
|
+
.venv/bin/ruff check src tests
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
`node scripts/five-ways.mjs --only python` does the same and regenerates the parser
|
|
186
|
+
first, which is what CI runs.
|
|
187
|
+
|
|
188
|
+
## Links
|
|
189
|
+
|
|
190
|
+
- [Documentation](https://nickliapin.github.io/tdcv2/) — the DSL reference, guides and generators
|
|
191
|
+
- [The Python binding](https://nickliapin.github.io/tdcv2/docs/bindings/python)
|
|
192
|
+
- [Source](https://github.com/NickLiapin/tdcv2)
|
|
193
|
+
|
|
194
|
+
## License
|
|
195
|
+
|
|
196
|
+
MIT
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "tdcv2"
|
|
7
|
+
# One number across all five implementations, deliberately. They are held to one
|
|
8
|
+
# contract by the fixtures under `fixtures/cross-language/`, so a reader comparing
|
|
9
|
+
# tdcv2 0.1.2 on PyPI with tdcv2 0.1.2 on npm should be able to assume the same
|
|
10
|
+
# engine and the same bytes — which is the whole claim of the project.
|
|
11
|
+
version = "0.1.2"
|
|
12
|
+
description = "Deterministic test-data generator: coherent records, exact proportions, and any text format you describe. Same seed, same bytes — in Python, TypeScript, Java, C# and Rust alike."
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
requires-python = ">=3.10"
|
|
15
|
+
license = { text = "MIT" }
|
|
16
|
+
authors = [{ name = "Nick Liapin" }]
|
|
17
|
+
|
|
18
|
+
# The terms people actually type when they are looking for this. PyPI's own search
|
|
19
|
+
# leans on the description far more than on these, but the classifiers below and
|
|
20
|
+
# these together are what the package indexes have to go on.
|
|
21
|
+
keywords = [
|
|
22
|
+
"test-data",
|
|
23
|
+
"test-data-generator",
|
|
24
|
+
"mock-data",
|
|
25
|
+
"fake-data",
|
|
26
|
+
"fake-data-generator",
|
|
27
|
+
"synthetic-data",
|
|
28
|
+
"synthetic-data-generator",
|
|
29
|
+
"dummy-data",
|
|
30
|
+
"sample-data",
|
|
31
|
+
"data-generator",
|
|
32
|
+
"data-generation",
|
|
33
|
+
"deterministic",
|
|
34
|
+
"seeded",
|
|
35
|
+
"reproducible",
|
|
36
|
+
"coherent-data",
|
|
37
|
+
"fixtures",
|
|
38
|
+
"testing",
|
|
39
|
+
"csv",
|
|
40
|
+
"json",
|
|
41
|
+
"sql",
|
|
42
|
+
"parquet",
|
|
43
|
+
"cli",
|
|
44
|
+
"dsl",
|
|
45
|
+
"locale",
|
|
46
|
+
"i18n",
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
classifiers = [
|
|
50
|
+
"Development Status :: 4 - Beta",
|
|
51
|
+
"Intended Audience :: Developers",
|
|
52
|
+
"License :: OSI Approved :: MIT License",
|
|
53
|
+
"Operating System :: OS Independent",
|
|
54
|
+
"Programming Language :: Python :: 3",
|
|
55
|
+
"Programming Language :: Python :: 3.10",
|
|
56
|
+
"Programming Language :: Python :: 3.11",
|
|
57
|
+
"Programming Language :: Python :: 3.12",
|
|
58
|
+
"Programming Language :: Python :: 3.13",
|
|
59
|
+
"Topic :: Software Development :: Testing",
|
|
60
|
+
"Topic :: Software Development :: Testing :: Mocking",
|
|
61
|
+
"Topic :: Utilities",
|
|
62
|
+
"Typing :: Typed",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
# One runtime dependency, and it is the parser generator's own runtime — the grammar is shared
|
|
66
|
+
# with the other implementations, so the parse tree has to be the same tree. Everything else is
|
|
67
|
+
# written here rather than depended on, which is what keeps the three implementations producing
|
|
68
|
+
# identical bytes: a library that changes its rounding or its compression changes our output.
|
|
69
|
+
dependencies = ["antlr4-python3-runtime==4.13.2"]
|
|
70
|
+
|
|
71
|
+
# Keep this table last among the [project] keys: in TOML every key below a table
|
|
72
|
+
# header belongs to that table, so a plain key written after it silently becomes
|
|
73
|
+
# `project.urls.<key>` — which is how `dependencies` once ended up in here.
|
|
74
|
+
[project.urls]
|
|
75
|
+
Homepage = "https://nickliapin.github.io/tdcv2/"
|
|
76
|
+
Documentation = "https://nickliapin.github.io/tdcv2/docs/bindings/python"
|
|
77
|
+
Repository = "https://github.com/NickLiapin/tdcv2"
|
|
78
|
+
Changelog = "https://github.com/NickLiapin/tdcv2/blob/main/CHANGELOG.md"
|
|
79
|
+
Issues = "https://github.com/NickLiapin/tdcv2/issues"
|
|
80
|
+
|
|
81
|
+
[project.optional-dependencies]
|
|
82
|
+
dev = ["pytest>=8", "ruff>=0.6"]
|
|
83
|
+
|
|
84
|
+
# `pip install tdcv2` puts `tdcv2` on the PATH. A Python user should never need another language's
|
|
85
|
+
# toolchain to run a .tdc file, which is exactly what having only the TypeScript CLI would mean.
|
|
86
|
+
[project.scripts]
|
|
87
|
+
tdcv2 = "tdcv2.cli.main:cli"
|
|
88
|
+
|
|
89
|
+
[tool.setuptools.packages.find]
|
|
90
|
+
where = ["src"]
|
|
91
|
+
|
|
92
|
+
[tool.setuptools.package-data]
|
|
93
|
+
# The starter packs, put here by scripts/bundle_packs.py. Everything else is downloaded from the
|
|
94
|
+
# shared registry on demand — see src/tdcv2/packs/registry.py.
|
|
95
|
+
"tdcv2" = ["packs_data/**/*.txt", "packs_data/index.txt"]
|
|
96
|
+
|
|
97
|
+
[tool.pytest.ini_options]
|
|
98
|
+
testpaths = ["tests"]
|
|
99
|
+
pythonpath = ["src"]
|
|
100
|
+
|
|
101
|
+
[tool.ruff]
|
|
102
|
+
line-length = 100
|
|
103
|
+
target-version = "py310"
|
|
104
|
+
# The generated parser is not ours to style, and regenerating it would undo any edit anyway.
|
|
105
|
+
extend-exclude = ["src/tdcv2/parser/generated"]
|
|
106
|
+
|
|
107
|
+
[tool.ruff.lint]
|
|
108
|
+
select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "RUF"]
|
|
109
|
+
# The "ambiguous unicode character" rules warn that а might be a typo for a. In a library whose
|
|
110
|
+
# job is multilingual data they fire on every alphabet we ship on purpose — Cyrillic, fullwidth
|
|
111
|
+
# digits, Greek — and there is no true positive among them.
|
|
112
|
+
ignore = ["RUF001", "RUF002", "RUF003"]
|
tdcv2-0.1.2/setup.cfg
ADDED
tdcv2-0.1.2/setup.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""The one thing pyproject.toml alone cannot express: generate the starter packs before building.
|
|
2
|
+
|
|
3
|
+
The packs are DATA, and they live in this repository once, under ``data/packs``. Committing a
|
|
4
|
+
second copy inside the package would guarantee the two drift, so the copy is made at build time
|
|
5
|
+
instead — the same thing the Gradle build does for the jar.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import runpy
|
|
11
|
+
import sys
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
from setuptools import setup
|
|
15
|
+
from setuptools.command.build_py import build_py
|
|
16
|
+
|
|
17
|
+
HERE = Path(__file__).resolve().parent
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BuildWithPacks(build_py):
|
|
21
|
+
def run(self) -> None:
|
|
22
|
+
script = HERE / "scripts" / "bundle_packs.py"
|
|
23
|
+
if script.is_file() and (HERE.parent / "data" / "packs").is_dir():
|
|
24
|
+
sys.argv = [str(script)]
|
|
25
|
+
try:
|
|
26
|
+
runpy.run_path(str(script), run_name="__main__")
|
|
27
|
+
except SystemExit as exit_code:
|
|
28
|
+
if exit_code.code:
|
|
29
|
+
raise
|
|
30
|
+
super().run()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
setup(cmdclass={"build_py": BuildWithPacks})
|