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.
Files changed (634) hide show
  1. tdcv2-0.1.2/LICENSE +21 -0
  2. tdcv2-0.1.2/PKG-INFO +230 -0
  3. tdcv2-0.1.2/README.md +196 -0
  4. tdcv2-0.1.2/pyproject.toml +112 -0
  5. tdcv2-0.1.2/setup.cfg +4 -0
  6. tdcv2-0.1.2/setup.py +33 -0
  7. tdcv2-0.1.2/src/tdcv2/__init__.py +6 -0
  8. tdcv2-0.1.2/src/tdcv2/cli/__init__.py +5 -0
  9. tdcv2-0.1.2/src/tdcv2/cli/__main__.py +5 -0
  10. tdcv2-0.1.2/src/tdcv2/cli/args.py +149 -0
  11. tdcv2-0.1.2/src/tdcv2/cli/init.py +206 -0
  12. tdcv2-0.1.2/src/tdcv2/cli/main.py +299 -0
  13. tdcv2-0.1.2/src/tdcv2/cli/pack.py +276 -0
  14. tdcv2-0.1.2/src/tdcv2/cli/pack_picker.py +975 -0
  15. tdcv2-0.1.2/src/tdcv2/compute/__init__.py +6 -0
  16. tdcv2-0.1.2/src/tdcv2/compute/encode.py +59 -0
  17. tdcv2-0.1.2/src/tdcv2/compute/evaluate.py +384 -0
  18. tdcv2-0.1.2/src/tdcv2/compute/value.py +125 -0
  19. tdcv2-0.1.2/src/tdcv2/date/__init__.py +5 -0
  20. tdcv2-0.1.2/src/tdcv2/date/formatter.py +163 -0
  21. tdcv2-0.1.2/src/tdcv2/date/gen.py +225 -0
  22. tdcv2-0.1.2/src/tdcv2/date/locales.py +481 -0
  23. tdcv2-0.1.2/src/tdcv2/date/parse.py +83 -0
  24. tdcv2-0.1.2/src/tdcv2/date/plain.py +142 -0
  25. tdcv2-0.1.2/src/tdcv2/distribution/__init__.py +5 -0
  26. tdcv2-0.1.2/src/tdcv2/distribution/hamilton.py +78 -0
  27. tdcv2-0.1.2/src/tdcv2/distribution/percent_mask.py +98 -0
  28. tdcv2-0.1.2/src/tdcv2/engine/__init__.py +5 -0
  29. tdcv2-0.1.2/src/tdcv2/engine/_shard.py +47 -0
  30. tdcv2-0.1.2/src/tdcv2/engine/disk.py +32 -0
  31. tdcv2-0.1.2/src/tdcv2/engine/exact_uniq.py +326 -0
  32. tdcv2-0.1.2/src/tdcv2/engine/external_sort.py +89 -0
  33. tdcv2-0.1.2/src/tdcv2/engine/memory.py +1739 -0
  34. tdcv2-0.1.2/src/tdcv2/engine/parallel.py +138 -0
  35. tdcv2-0.1.2/src/tdcv2/engine/per_row.py +323 -0
  36. tdcv2-0.1.2/src/tdcv2/engine/repeat_keyed.py +158 -0
  37. tdcv2-0.1.2/src/tdcv2/engine/router.py +202 -0
  38. tdcv2-0.1.2/src/tdcv2/engine/stream.py +1406 -0
  39. tdcv2-0.1.2/src/tdcv2/errors/__init__.py +14 -0
  40. tdcv2-0.1.2/src/tdcv2/errors/diagnostic.py +95 -0
  41. tdcv2-0.1.2/src/tdcv2/errors/render.py +200 -0
  42. tdcv2-0.1.2/src/tdcv2/expr/__init__.py +6 -0
  43. tdcv2-0.1.2/src/tdcv2/expr/evaluate.py +205 -0
  44. tdcv2-0.1.2/src/tdcv2/expr/parse.py +295 -0
  45. tdcv2-0.1.2/src/tdcv2/format/__init__.py +5 -0
  46. tdcv2-0.1.2/src/tdcv2/format/interpolate.py +136 -0
  47. tdcv2-0.1.2/src/tdcv2/format/mask.py +202 -0
  48. tdcv2-0.1.2/src/tdcv2/format/transforms.py +226 -0
  49. tdcv2-0.1.2/src/tdcv2/formatter/__init__.py +5 -0
  50. tdcv2-0.1.2/src/tdcv2/formatter/format.py +301 -0
  51. tdcv2-0.1.2/src/tdcv2/generators/__init__.py +25 -0
  52. tdcv2-0.1.2/src/tdcv2/generators/accumulate.py +163 -0
  53. tdcv2-0.1.2/src/tdcv2/generators/advanced_regex.py +596 -0
  54. tdcv2-0.1.2/src/tdcv2/generators/counter.py +19 -0
  55. tdcv2-0.1.2/src/tdcv2/generators/file.py +423 -0
  56. tdcv2-0.1.2/src/tdcv2/generators/http.py +208 -0
  57. tdcv2-0.1.2/src/tdcv2/generators/imperfections.py +133 -0
  58. tdcv2-0.1.2/src/tdcv2/generators/number.py +409 -0
  59. tdcv2-0.1.2/src/tdcv2/generators/regex.py +485 -0
  60. tdcv2-0.1.2/src/tdcv2/generators/repeat.py +203 -0
  61. tdcv2-0.1.2/src/tdcv2/generators/symbol.py +82 -0
  62. tdcv2-0.1.2/src/tdcv2/lib/__init__.py +5 -0
  63. tdcv2-0.1.2/src/tdcv2/lib/numbers.py +74 -0
  64. tdcv2-0.1.2/src/tdcv2/lib/text.py +31 -0
  65. tdcv2-0.1.2/src/tdcv2/model/__init__.py +33 -0
  66. tdcv2-0.1.2/src/tdcv2/model/config.py +272 -0
  67. tdcv2-0.1.2/src/tdcv2/output/__init__.py +5 -0
  68. tdcv2-0.1.2/src/tdcv2/output/column_type.py +153 -0
  69. tdcv2-0.1.2/src/tdcv2/output/columns.py +219 -0
  70. tdcv2-0.1.2/src/tdcv2/output/parquet/__init__.py +27 -0
  71. tdcv2-0.1.2/src/tdcv2/output/parquet/convert.py +244 -0
  72. tdcv2-0.1.2/src/tdcv2/output/parquet/dictionary.py +66 -0
  73. tdcv2-0.1.2/src/tdcv2/output/parquet/list_levels.py +75 -0
  74. tdcv2-0.1.2/src/tdcv2/output/parquet/plain.py +124 -0
  75. tdcv2-0.1.2/src/tdcv2/output/parquet/rle.py +108 -0
  76. tdcv2-0.1.2/src/tdcv2/output/parquet/schema.py +131 -0
  77. tdcv2-0.1.2/src/tdcv2/output/parquet/snappy.py +129 -0
  78. tdcv2-0.1.2/src/tdcv2/output/parquet/statistics.py +124 -0
  79. tdcv2-0.1.2/src/tdcv2/output/parquet/thrift.py +136 -0
  80. tdcv2-0.1.2/src/tdcv2/output/parquet/writer.py +522 -0
  81. tdcv2-0.1.2/src/tdcv2/output/parquet_output.py +134 -0
  82. tdcv2-0.1.2/src/tdcv2/packs/__init__.py +17 -0
  83. tdcv2-0.1.2/src/tdcv2/packs/data_packs.py +274 -0
  84. tdcv2-0.1.2/src/tdcv2/packs/project_config.py +222 -0
  85. tdcv2-0.1.2/src/tdcv2/packs/registry.py +246 -0
  86. tdcv2-0.1.2/src/tdcv2/packs/source.py +190 -0
  87. tdcv2-0.1.2/src/tdcv2/packs_data/common/book/isbn10.txt +25 -0
  88. tdcv2-0.1.2/src/tdcv2/packs_data/common/book/isbn13.txt +31 -0
  89. tdcv2-0.1.2/src/tdcv2/packs_data/common/database/collation.txt +10 -0
  90. tdcv2-0.1.2/src/tdcv2/packs_data/common/database/column.txt +28 -0
  91. tdcv2-0.1.2/src/tdcv2/packs_data/common/database/engine.txt +10 -0
  92. tdcv2-0.1.2/src/tdcv2/packs_data/common/database/type.txt +21 -0
  93. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/browser.txt +12 -0
  94. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/environment.txt +12 -0
  95. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/framework.txt +31 -0
  96. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/C#.txt +7 -0
  97. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Go.txt +7 -0
  98. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Java.txt +8 -0
  99. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/JavaScript.txt +10 -0
  100. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/PHP.txt +7 -0
  101. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Python.txt +10 -0
  102. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Ruby.txt +6 -0
  103. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Rust.txt +7 -0
  104. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/Swift.txt +6 -0
  105. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/frameworkByLanguage/TypeScript.txt +8 -0
  106. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/httpHeader.txt +22 -0
  107. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/languageCoherent.txt +13 -0
  108. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/logLevel.txt +9 -0
  109. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/os.txt +19 -0
  110. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/programmingLanguage.txt +37 -0
  111. tdcv2-0.1.2/src/tdcv2/packs_data/common/dev/spdxLicense.txt +18 -0
  112. tdcv2-0.1.2/src/tdcv2/packs_data/common/device/iccid.txt +36 -0
  113. tdcv2-0.1.2/src/tdcv2/packs_data/common/device/imei.txt +36 -0
  114. tdcv2-0.1.2/src/tdcv2/packs_data/common/docs/mrz/id_td1.txt +93 -0
  115. tdcv2-0.1.2/src/tdcv2/packs_data/common/docs/mrz/passport_td3.txt +105 -0
  116. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/accountType.txt +12 -0
  117. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/bic.txt +6 -0
  118. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/crypto.txt +18 -0
  119. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currency.txt +23 -0
  120. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currencyCode.txt +23 -0
  121. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/currencySymbol.txt +19 -0
  122. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/iban.txt +27 -0
  123. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/stockExchange.txt +18 -0
  124. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Avalanche.txt +4 -0
  125. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Bitcoin.txt +4 -0
  126. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Cardano.txt +4 -0
  127. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Chainlink.txt +4 -0
  128. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Cosmos.txt +4 -0
  129. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Dogecoin.txt +4 -0
  130. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Ethereum.txt +4 -0
  131. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Litecoin.txt +4 -0
  132. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Monero.txt +4 -0
  133. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Polkadot.txt +4 -0
  134. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Polygon.txt +4 -0
  135. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Ripple.txt +4 -0
  136. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Solana.txt +4 -0
  137. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Stellar.txt +4 -0
  138. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/tickerByCrypto/Tether.txt +4 -0
  139. tdcv2-0.1.2/src/tdcv2/packs_data/common/finance/transactionType.txt +12 -0
  140. tdcv2-0.1.2/src/tdcv2/packs_data/common/geo/timezone.txt +39 -0
  141. tdcv2-0.1.2/src/tdcv2/packs_data/common/git/sha.txt +6 -0
  142. tdcv2-0.1.2/src/tdcv2/packs_data/common/id/nanoid.txt +6 -0
  143. tdcv2-0.1.2/src/tdcv2/packs_data/common/id/object_id.txt +6 -0
  144. tdcv2-0.1.2/src/tdcv2/packs_data/common/id/ulid.txt +6 -0
  145. tdcv2-0.1.2/src/tdcv2/packs_data/common/id/uuid.txt +6 -0
  146. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/domain.txt +9 -0
  147. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/email.txt +8 -0
  148. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/emoji.txt +33 -0
  149. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/httpMethod.txt +10 -0
  150. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/httpStatus.txt +25 -0
  151. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/ipv4.txt +36 -0
  152. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/ipv6.txt +6 -0
  153. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/mac.txt +6 -0
  154. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/slug.txt +6 -0
  155. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/url.txt +9 -0
  156. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/userAgent.txt +9 -0
  157. tdcv2-0.1.2/src/tdcv2/packs_data/common/internet/username.txt +6 -0
  158. tdcv2-0.1.2/src/tdcv2/packs_data/common/logistics/container_iso6346.txt +34 -0
  159. tdcv2-0.1.2/src/tdcv2/packs_data/common/payment/card/pan.txt +36 -0
  160. tdcv2-0.1.2/src/tdcv2/packs_data/common/periodical/issn.txt +25 -0
  161. tdcv2-0.1.2/src/tdcv2/packs_data/common/phone/e164.txt +6 -0
  162. tdcv2-0.1.2/src/tdcv2/packs_data/common/product/ean13.txt +31 -0
  163. tdcv2-0.1.2/src/tdcv2/packs_data/common/product/gtin14.txt +31 -0
  164. tdcv2-0.1.2/src/tdcv2/packs_data/common/product/upc_a.txt +31 -0
  165. tdcv2-0.1.2/src/tdcv2/packs_data/common/science/chemicalElement.txt +32 -0
  166. tdcv2-0.1.2/src/tdcv2/packs_data/common/science/unit.txt +45 -0
  167. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/api_key.txt +6 -0
  168. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/jwt.txt +9 -0
  169. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/md5.txt +6 -0
  170. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/otp.txt +6 -0
  171. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/sha1.txt +6 -0
  172. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/sha256.txt +6 -0
  173. tdcv2-0.1.2/src/tdcv2/packs_data/common/security/totp_secret.txt +6 -0
  174. tdcv2-0.1.2/src/tdcv2/packs_data/common/system/cron.txt +14 -0
  175. tdcv2-0.1.2/src/tdcv2/packs_data/common/system/directoryPath.txt +15 -0
  176. tdcv2-0.1.2/src/tdcv2/packs_data/common/system/fileExt.txt +28 -0
  177. tdcv2-0.1.2/src/tdcv2/packs_data/common/system/mimeType.txt +23 -0
  178. tdcv2-0.1.2/src/tdcv2/packs_data/common/system/semver.txt +6 -0
  179. tdcv2-0.1.2/src/tdcv2/packs_data/common/transport/airportCode.txt +37 -0
  180. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/brand.txt +52 -0
  181. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/manufacturer.txt +41 -0
  182. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Acura.txt +10 -0
  183. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Alfa Romeo.txt +7 -0
  184. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Aston Martin.txt +8 -0
  185. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Audi.txt +17 -0
  186. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/BMW.txt +17 -0
  187. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Bentley.txt +7 -0
  188. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Bugatti.txt +6 -0
  189. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Buick.txt +8 -0
  190. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Cadillac.txt +11 -0
  191. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Chevrolet.txt +17 -0
  192. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Chrysler.txt +7 -0
  193. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Dodge.txt +8 -0
  194. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ferrari.txt +10 -0
  195. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Fiat.txt +9 -0
  196. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ford.txt +17 -0
  197. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/GMC.txt +10 -0
  198. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Genesis.txt +10 -0
  199. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Honda.txt +15 -0
  200. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Hyundai.txt +15 -0
  201. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Infiniti.txt +10 -0
  202. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Jaguar.txt +10 -0
  203. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Jeep.txt +12 -0
  204. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Kia.txt +16 -0
  205. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lamborghini.txt +7 -0
  206. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Land Rover.txt +10 -0
  207. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lexus.txt +14 -0
  208. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lincoln.txt +8 -0
  209. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lotus.txt +7 -0
  210. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Lucid.txt +6 -0
  211. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Maserati.txt +10 -0
  212. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Maybach.txt +6 -0
  213. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mazda.txt +12 -0
  214. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/McLaren.txt +8 -0
  215. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mercedes-Benz.txt +17 -0
  216. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mini.txt +8 -0
  217. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Mitsubishi.txt +8 -0
  218. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Nissan.txt +18 -0
  219. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Polestar.txt +6 -0
  220. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Porsche.txt +11 -0
  221. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Ram.txt +9 -0
  222. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Rivian.txt +6 -0
  223. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Rolls-Royce.txt +9 -0
  224. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Subaru.txt +13 -0
  225. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Tesla.txt +9 -0
  226. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Toyota.txt +18 -0
  227. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Volkswagen.txt +13 -0
  228. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model/Volvo.txt +11 -0
  229. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/model.txt +41 -0
  230. tdcv2-0.1.2/src/tdcv2/packs_data/common/vehicle/vin.txt +49 -0
  231. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/driversLicense.txt +7 -0
  232. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/medicare.txt +10 -0
  233. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/passport.txt +7 -0
  234. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/docs/ssn.txt +9 -0
  235. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/education/university.txt +38 -0
  236. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/aba_routing.txt +23 -0
  237. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/accountType.txt +17 -0
  238. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/finance/bank.txt +45 -0
  239. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/city.txt +1004 -0
  240. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/county.txt +183 -0
  241. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/state.txt +60 -0
  242. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/stateAbbr.txt +60 -0
  243. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/streetName.txt +32 -0
  244. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/streetNamed.txt +65 -0
  245. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/geo/zip.txt +6 -0
  246. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/holiday.txt +14 -0
  247. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/phone.txt +6 -0
  248. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/sport/team.txt +31 -0
  249. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/ein.txt +8 -0
  250. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/filingStatus.txt +10 -0
  251. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/tax/itin.txt +9 -0
  252. tdcv2-0.1.2/src/tdcv2/packs_data/countries/usa/vehicle/plate.txt +6 -0
  253. tdcv2-0.1.2/src/tdcv2/packs_data/en/address/buildingType.txt +18 -0
  254. tdcv2-0.1.2/src/tdcv2/packs_data/en/address/unitDesignator.txt +16 -0
  255. tdcv2-0.1.2/src/tdcv2/packs_data/en/airline/aircraftType.txt +21 -0
  256. tdcv2-0.1.2/src/tdcv2/packs_data/en/airline/name.txt +32 -0
  257. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/bird.txt +24 -0
  258. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/cat.txt +19 -0
  259. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/dog.txt +24 -0
  260. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/fish.txt +22 -0
  261. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/horse.txt +17 -0
  262. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/insect.txt +19 -0
  263. tdcv2-0.1.2/src/tdcv2/packs_data/en/animal/type.txt +34 -0
  264. tdcv2-0.1.2/src/tdcv2/packs_data/en/book/format.txt +10 -0
  265. tdcv2-0.1.2/src/tdcv2/packs_data/en/book/genre.txt +26 -0
  266. tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/shoeSizeUs.txt +18 -0
  267. tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/size.txt +12 -0
  268. tdcv2-0.1.2/src/tdcv2/packs_data/en/clothing/type.txt +19 -0
  269. tdcv2-0.1.2/src/tdcv2/packs_data/en/color/name.txt +54 -0
  270. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/carrier.txt +14 -0
  271. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/department.txt +32 -0
  272. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/orderStatus.txt +17 -0
  273. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/paymentMethod.txt +14 -0
  274. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/paymentStatus.txt +13 -0
  275. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productAdjective.txt +34 -0
  276. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productMaterial.txt +28 -0
  277. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/productNoun.txt +54 -0
  278. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/returnReason.txt +16 -0
  279. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/reviewTitle.txt +19 -0
  280. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/shippingStatus.txt +12 -0
  281. tdcv2-0.1.2/src/tdcv2/packs_data/en/commerce/unitOfMeasure.txt +24 -0
  282. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzAdjective.txt +44 -0
  283. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzNoun.txt +44 -0
  284. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/buzzVerb.txt +42 -0
  285. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/industry.txt +29 -0
  286. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/legalSuffix.txt +24 -0
  287. tdcv2-0.1.2/src/tdcv2/packs_data/en/company/namePart.txt +44 -0
  288. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/month.txt +16 -0
  289. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/monthAbbr.txt +16 -0
  290. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/quarter.txt +8 -0
  291. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/season.txt +8 -0
  292. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/timeOfDay.txt +12 -0
  293. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/weekday.txt +11 -0
  294. tdcv2-0.1.2/src/tdcv2/packs_data/en/date/weekdayAbbr.txt +11 -0
  295. tdcv2-0.1.2/src/tdcv2/packs_data/en/education/courseSubject.txt +20 -0
  296. tdcv2-0.1.2/src/tdcv2/packs_data/en/education/degree.txt +18 -0
  297. tdcv2-0.1.2/src/tdcv2/packs_data/en/education/grade.txt +17 -0
  298. tdcv2-0.1.2/src/tdcv2/packs_data/en/education/major.txt +26 -0
  299. tdcv2-0.1.2/src/tdcv2/packs_data/en/event/type.txt +16 -0
  300. tdcv2-0.1.2/src/tdcv2/packs_data/en/event/venueType.txt +15 -0
  301. tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/budgetCategory.txt +21 -0
  302. tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/creditScoreBand.txt +9 -0
  303. tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/insuranceType.txt +16 -0
  304. tdcv2-0.1.2/src/tdcv2/packs_data/en/finance/loanType.txt +13 -0
  305. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/cuisine.txt +18 -0
  306. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dish.txt +29 -0
  307. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/American.txt +11 -0
  308. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Chinese.txt +12 -0
  309. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/French.txt +12 -0
  310. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Greek.txt +11 -0
  311. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Indian.txt +12 -0
  312. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Italian.txt +12 -0
  313. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Japanese.txt +12 -0
  314. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Korean.txt +11 -0
  315. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Lebanese.txt +11 -0
  316. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Mexican.txt +12 -0
  317. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Spanish.txt +11 -0
  318. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Thai.txt +11 -0
  319. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Turkish.txt +11 -0
  320. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/dishByCuisine/Vietnamese.txt +10 -0
  321. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/fruit.txt +26 -0
  322. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/ingredient.txt +28 -0
  323. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/spice.txt +24 -0
  324. tdcv2-0.1.2/src/tdcv2/packs_data/en/food/vegetable.txt +26 -0
  325. tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/characterClass.txt +20 -0
  326. tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/platform.txt +13 -0
  327. tdcv2-0.1.2/src/tdcv2/packs_data/en/gaming/rank.txt +13 -0
  328. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Argentina.txt +5 -0
  329. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Australia.txt +5 -0
  330. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Bangladesh.txt +5 -0
  331. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Brazil.txt +5 -0
  332. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Canada.txt +5 -0
  333. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/China.txt +5 -0
  334. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Egypt.txt +5 -0
  335. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/France.txt +5 -0
  336. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Germany.txt +5 -0
  337. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Greece.txt +5 -0
  338. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/India.txt +5 -0
  339. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Indonesia.txt +5 -0
  340. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Ireland.txt +5 -0
  341. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Italy.txt +5 -0
  342. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Japan.txt +5 -0
  343. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Mexico.txt +5 -0
  344. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Netherlands.txt +5 -0
  345. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/New Zealand.txt +5 -0
  346. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Nigeria.txt +5 -0
  347. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Norway.txt +5 -0
  348. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Pakistan.txt +5 -0
  349. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Poland.txt +5 -0
  350. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Portugal.txt +5 -0
  351. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Russia.txt +5 -0
  352. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Saudi Arabia.txt +5 -0
  353. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Singapore.txt +5 -0
  354. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/South Africa.txt +5 -0
  355. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/South Korea.txt +5 -0
  356. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Spain.txt +5 -0
  357. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Sweden.txt +5 -0
  358. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Switzerland.txt +5 -0
  359. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Thailand.txt +5 -0
  360. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Turkey.txt +5 -0
  361. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/United Kingdom.txt +5 -0
  362. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/United States.txt +5 -0
  363. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/capitalByCountry/Vietnam.txt +5 -0
  364. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/country.txt +41 -0
  365. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Argentina.txt +5 -0
  366. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Australia.txt +5 -0
  367. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Bangladesh.txt +5 -0
  368. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Brazil.txt +5 -0
  369. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Canada.txt +5 -0
  370. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/China.txt +5 -0
  371. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Egypt.txt +5 -0
  372. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/France.txt +5 -0
  373. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Germany.txt +5 -0
  374. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Greece.txt +5 -0
  375. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/India.txt +5 -0
  376. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Indonesia.txt +5 -0
  377. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Ireland.txt +5 -0
  378. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Italy.txt +5 -0
  379. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Japan.txt +5 -0
  380. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Mexico.txt +5 -0
  381. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Netherlands.txt +5 -0
  382. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/New Zealand.txt +5 -0
  383. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Nigeria.txt +5 -0
  384. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Norway.txt +5 -0
  385. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Pakistan.txt +5 -0
  386. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Poland.txt +5 -0
  387. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Portugal.txt +5 -0
  388. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Russia.txt +5 -0
  389. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Saudi Arabia.txt +5 -0
  390. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Singapore.txt +5 -0
  391. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/South Africa.txt +5 -0
  392. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/South Korea.txt +5 -0
  393. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Spain.txt +5 -0
  394. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Sweden.txt +5 -0
  395. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Switzerland.txt +5 -0
  396. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Thailand.txt +5 -0
  397. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Turkey.txt +5 -0
  398. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/United Kingdom.txt +5 -0
  399. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/United States.txt +5 -0
  400. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyByCountry/Vietnam.txt +5 -0
  401. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Argentina.txt +5 -0
  402. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Australia.txt +5 -0
  403. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Bangladesh.txt +5 -0
  404. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Brazil.txt +5 -0
  405. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Canada.txt +5 -0
  406. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/China.txt +5 -0
  407. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Egypt.txt +5 -0
  408. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/France.txt +5 -0
  409. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Germany.txt +5 -0
  410. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Greece.txt +5 -0
  411. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/India.txt +5 -0
  412. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Indonesia.txt +5 -0
  413. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Ireland.txt +5 -0
  414. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Italy.txt +5 -0
  415. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Japan.txt +5 -0
  416. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Mexico.txt +5 -0
  417. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Netherlands.txt +5 -0
  418. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/New Zealand.txt +5 -0
  419. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Nigeria.txt +5 -0
  420. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Norway.txt +5 -0
  421. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Pakistan.txt +5 -0
  422. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Poland.txt +5 -0
  423. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Portugal.txt +5 -0
  424. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Russia.txt +5 -0
  425. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Saudi Arabia.txt +5 -0
  426. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Singapore.txt +5 -0
  427. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/South Africa.txt +5 -0
  428. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/South Korea.txt +5 -0
  429. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Spain.txt +5 -0
  430. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Sweden.txt +5 -0
  431. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Switzerland.txt +5 -0
  432. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Thailand.txt +5 -0
  433. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Turkey.txt +5 -0
  434. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/United Kingdom.txt +5 -0
  435. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/United States.txt +5 -0
  436. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/currencyCodeByCountry/Vietnam.txt +5 -0
  437. tdcv2-0.1.2/src/tdcv2/packs_data/en/geo/direction.txt +20 -0
  438. tdcv2-0.1.2/src/tdcv2/packs_data/en/government/agency.txt +13 -0
  439. tdcv2-0.1.2/src/tdcv2/packs_data/en/government/documentType.txt +14 -0
  440. tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/abbreviation.txt +40 -0
  441. tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/adjective.txt +24 -0
  442. tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/ingverb.txt +23 -0
  443. tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/noun.txt +30 -0
  444. tdcv2-0.1.2/src/tdcv2/packs_data/en/hacker/verb.txt +25 -0
  445. tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/benefit.txt +19 -0
  446. tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/interviewStage.txt +15 -0
  447. tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/leaveType.txt +14 -0
  448. tdcv2-0.1.2/src/tdcv2/packs_data/en/hr/meetingType.txt +16 -0
  449. tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/caseType.txt +15 -0
  450. tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/court.txt +12 -0
  451. tdcv2-0.1.2/src/tdcv2/packs_data/en/legal/term.txt +16 -0
  452. tdcv2-0.1.2/src/tdcv2/packs_data/en/location/country.txt +241 -0
  453. tdcv2-0.1.2/src/tdcv2/packs_data/en/media/gameGenre.txt +19 -0
  454. tdcv2-0.1.2/src/tdcv2/packs_data/en/media/movieGenre.txt +21 -0
  455. tdcv2-0.1.2/src/tdcv2/packs_data/en/media/streamingPlatform.txt +16 -0
  456. tdcv2-0.1.2/src/tdcv2/packs_data/en/media/tvRating.txt +15 -0
  457. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/allergy.txt +21 -0
  458. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/ancestry.txt +16 -0
  459. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/bloodType.txt +12 -0
  460. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosis.txt +82 -0
  461. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Ashkenazi Jewish.txt +16 -0
  462. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/East Asian.txt +14 -0
  463. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Eastern European.txt +10 -0
  464. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Indigenous American.txt +10 -0
  465. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Mediterranean.txt +11 -0
  466. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Middle Eastern.txt +10 -0
  467. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/North African.txt +10 -0
  468. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Northern European.txt +14 -0
  469. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Pacific Islander.txt +10 -0
  470. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/South Asian.txt +12 -0
  471. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Southeast Asian.txt +11 -0
  472. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisByAncestry/Sub-Saharan African.txt +16 -0
  473. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Cardiology.txt +10 -0
  474. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Dermatology.txt +10 -0
  475. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Endocrinology.txt +10 -0
  476. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Gastroenterology.txt +10 -0
  477. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Nephrology.txt +9 -0
  478. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Neurology.txt +10 -0
  479. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Oncology.txt +10 -0
  480. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Orthopedics.txt +10 -0
  481. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Psychiatry.txt +10 -0
  482. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisBySpecialty/Pulmonology.txt +10 -0
  483. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisFemale.txt +30 -0
  484. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/diagnosisMale.txt +24 -0
  485. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/drugGeneric.txt +38 -0
  486. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/specialty.txt +35 -0
  487. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/specialtyCoherent.txt +14 -0
  488. tdcv2-0.1.2/src/tdcv2/packs_data/en/medical/symptom.txt +39 -0
  489. tdcv2-0.1.2/src/tdcv2/packs_data/en/music/genre.txt +28 -0
  490. tdcv2-0.1.2/src/tdcv2/packs_data/en/music/instrument.txt +24 -0
  491. tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/flower.txt +24 -0
  492. tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/gemstone.txt +24 -0
  493. tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/metal.txt +22 -0
  494. tdcv2-0.1.2/src/tdcv2/packs_data/en/nature/tree.txt +24 -0
  495. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/female/diagnosis.txt +17 -0
  496. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/female/firstName.txt +1005 -0
  497. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/gender.txt +6 -0
  498. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/hobby.txt +26 -0
  499. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/householdSize.txt +11 -0
  500. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/incomeBracket.txt +11 -0
  501. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/language.txt +24 -0
  502. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/lastName.txt +1005 -0
  503. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/male/diagnosis.txt +14 -0
  504. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/male/firstName.txt +1005 -0
  505. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/maritalStatus.txt +11 -0
  506. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/nationality.txt +29 -0
  507. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/nickname.txt +44 -0
  508. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/prefix.txt +21 -0
  509. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/pronoun.txt +11 -0
  510. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/suffix.txt +20 -0
  511. tdcv2-0.1.2/src/tdcv2/packs_data/en/person/zodiac.txt +16 -0
  512. tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/amenity.txt +22 -0
  513. tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/listingStatus.txt +14 -0
  514. tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/propertyType.txt +21 -0
  515. tdcv2-0.1.2/src/tdcv2/packs_data/en/realestate/roomType.txt +17 -0
  516. tdcv2-0.1.2/src/tdcv2/packs_data/en/social/contentType.txt +15 -0
  517. tdcv2-0.1.2/src/tdcv2/packs_data/en/social/hashtag.txt +29 -0
  518. tdcv2-0.1.2/src/tdcv2/packs_data/en/social/platform.txt +19 -0
  519. tdcv2-0.1.2/src/tdcv2/packs_data/en/social/reaction.txt +15 -0
  520. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/name.txt +28 -0
  521. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/position.txt +22 -0
  522. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/American Football.txt +10 -0
  523. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Baseball.txt +10 -0
  524. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Basketball.txt +9 -0
  525. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Cricket.txt +9 -0
  526. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Ice Hockey.txt +9 -0
  527. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Rugby.txt +10 -0
  528. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Soccer.txt +10 -0
  529. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/positionBySport/Volleyball.txt +9 -0
  530. tdcv2-0.1.2/src/tdcv2/packs_data/en/sport/sportCoherent.txt +12 -0
  531. tdcv2-0.1.2/src/tdcv2/packs_data/en/telecom/carrier.txt +16 -0
  532. tdcv2-0.1.2/src/tdcv2/packs_data/en/telecom/planType.txt +11 -0
  533. tdcv2-0.1.2/src/tdcv2/packs_data/en/text/paragraph.txt +154 -0
  534. tdcv2-0.1.2/src/tdcv2/packs_data/en/text/sentence.txt +504 -0
  535. tdcv2-0.1.2/src/tdcv2/packs_data/en/text/word.txt +404 -0
  536. tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/bookingStatus.txt +12 -0
  537. tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/hotelAmenity.txt +20 -0
  538. tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/roomType.txt +17 -0
  539. tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/starRating.txt +9 -0
  540. tdcv2-0.1.2/src/tdcv2/packs_data/en/travel/tripType.txt +16 -0
  541. tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/bicycle.txt +16 -0
  542. tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/fuel.txt +12 -0
  543. tdcv2-0.1.2/src/tdcv2/packs_data/en/vehicle/type.txt +18 -0
  544. tdcv2-0.1.2/src/tdcv2/packs_data/en/weather/condition.txt +18 -0
  545. tdcv2-0.1.2/src/tdcv2/packs_data/en/weather/phenomenon.txt +16 -0
  546. tdcv2-0.1.2/src/tdcv2/packs_data/en/word/adjective.txt +44 -0
  547. tdcv2-0.1.2/src/tdcv2/packs_data/en/word/adverb.txt +34 -0
  548. tdcv2-0.1.2/src/tdcv2/packs_data/en/word/noun.txt +44 -0
  549. tdcv2-0.1.2/src/tdcv2/packs_data/en/word/verb.txt +44 -0
  550. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/cable/conduit.txt +11 -0
  551. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/cable/type.txt +13 -0
  552. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/department.txt +24 -0
  553. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/employmentType.txt +13 -0
  554. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/industryCoherent.txt +14 -0
  555. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Construction.txt +10 -0
  556. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Education.txt +10 -0
  557. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Finance.txt +10 -0
  558. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Healthcare.txt +10 -0
  559. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Hospitality.txt +10 -0
  560. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Legal.txt +10 -0
  561. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Manufacturing.txt +10 -0
  562. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Retail.txt +10 -0
  563. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Technology.txt +10 -0
  564. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobByIndustry/Transportation.txt +10 -0
  565. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/jobTitle.txt +189 -0
  566. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/method.txt +12 -0
  567. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/mineral.txt +21 -0
  568. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/mining/shift.txt +9 -0
  569. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/seniority.txt +20 -0
  570. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/skill.txt +44 -0
  571. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/cargoType.txt +17 -0
  572. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/licenceClass.txt +7 -0
  573. tdcv2-0.1.2/src/tdcv2/packs_data/en/work/trucking/routeType.txt +11 -0
  574. tdcv2-0.1.2/src/tdcv2/packs_data/en/world/religion.txt +17 -0
  575. tdcv2-0.1.2/src/tdcv2/packs_data/en/world/writingSystem.txt +16 -0
  576. tdcv2-0.1.2/src/tdcv2/packs_data/index.txt +489 -0
  577. tdcv2-0.1.2/src/tdcv2/parser/__init__.py +5 -0
  578. tdcv2-0.1.2/src/tdcv2/parser/config_builder.py +516 -0
  579. tdcv2-0.1.2/src/tdcv2/parser/facade.py +137 -0
  580. tdcv2-0.1.2/src/tdcv2/parser/generated/TDCLexer.py +160 -0
  581. tdcv2-0.1.2/src/tdcv2/parser/generated/TDCParser.py +870 -0
  582. tdcv2-0.1.2/src/tdcv2/parser/generated/TDCParserVisitor.py +72 -0
  583. tdcv2-0.1.2/src/tdcv2/parser/generated/__init__.py +0 -0
  584. tdcv2-0.1.2/src/tdcv2/pattern/__init__.py +5 -0
  585. tdcv2-0.1.2/src/tdcv2/pattern/curve.py +301 -0
  586. tdcv2-0.1.2/src/tdcv2/pattern/density.py +133 -0
  587. tdcv2-0.1.2/src/tdcv2/pattern/gen.py +261 -0
  588. tdcv2-0.1.2/src/tdcv2/pattern/png.py +178 -0
  589. tdcv2-0.1.2/src/tdcv2/pattern/svg.py +424 -0
  590. tdcv2-0.1.2/src/tdcv2/prng/__init__.py +6 -0
  591. tdcv2-0.1.2/src/tdcv2/prng/permute.py +102 -0
  592. tdcv2-0.1.2/src/tdcv2/prng/prng.py +141 -0
  593. tdcv2-0.1.2/src/tdcv2/prng/rand.py +34 -0
  594. tdcv2-0.1.2/src/tdcv2/prng/seekable.py +60 -0
  595. tdcv2-0.1.2/src/tdcv2/sequence/__init__.py +5 -0
  596. tdcv2-0.1.2/src/tdcv2/sequence/pool.py +132 -0
  597. tdcv2-0.1.2/src/tdcv2/sequence/uniq.py +264 -0
  598. tdcv2-0.1.2/src/tdcv2/sequence/uniq_simple.py +175 -0
  599. tdcv2-0.1.2/src/tdcv2/stats/__init__.py +5 -0
  600. tdcv2-0.1.2/src/tdcv2/stats/distribution.py +249 -0
  601. tdcv2-0.1.2/src/tdcv2/stats/special.py +174 -0
  602. tdcv2-0.1.2/src/tdcv2/stats/timeseries.py +89 -0
  603. tdcv2-0.1.2/src/tdcv2/tdc.py +465 -0
  604. tdcv2-0.1.2/src/tdcv2/unicode/__init__.py +5 -0
  605. tdcv2-0.1.2/src/tdcv2/unicode/alphabets.py +59 -0
  606. tdcv2-0.1.2/src/tdcv2/unicode/char_set.py +57 -0
  607. tdcv2-0.1.2/src/tdcv2/validator/__init__.py +5 -0
  608. tdcv2-0.1.2/src/tdcv2/validator/checks.py +101 -0
  609. tdcv2-0.1.2/src/tdcv2/validator/compute_check.py +324 -0
  610. tdcv2-0.1.2/src/tdcv2/validator/validate.py +2912 -0
  611. tdcv2-0.1.2/src/tdcv2.egg-info/PKG-INFO +230 -0
  612. tdcv2-0.1.2/src/tdcv2.egg-info/SOURCES.txt +632 -0
  613. tdcv2-0.1.2/src/tdcv2.egg-info/dependency_links.txt +1 -0
  614. tdcv2-0.1.2/src/tdcv2.egg-info/entry_points.txt +2 -0
  615. tdcv2-0.1.2/src/tdcv2.egg-info/requires.txt +5 -0
  616. tdcv2-0.1.2/src/tdcv2.egg-info/top_level.txt +1 -0
  617. tdcv2-0.1.2/tests/test_api.py +237 -0
  618. tdcv2-0.1.2/tests/test_cases.py +71 -0
  619. tdcv2-0.1.2/tests/test_cli.py +300 -0
  620. tdcv2-0.1.2/tests/test_cli_fixture.py +167 -0
  621. tdcv2-0.1.2/tests/test_compute.py +298 -0
  622. tdcv2-0.1.2/tests/test_dates.py +195 -0
  623. tdcv2-0.1.2/tests/test_diagnostics.py +46 -0
  624. tdcv2-0.1.2/tests/test_distribution.py +61 -0
  625. tdcv2-0.1.2/tests/test_engines.py +64 -0
  626. tdcv2-0.1.2/tests/test_filter_vectors.py +33 -0
  627. tdcv2-0.1.2/tests/test_format.py +92 -0
  628. tdcv2-0.1.2/tests/test_generators.py +260 -0
  629. tdcv2-0.1.2/tests/test_packs.py +280 -0
  630. tdcv2-0.1.2/tests/test_parallel.py +139 -0
  631. tdcv2-0.1.2/tests/test_parquet.py +53 -0
  632. tdcv2-0.1.2/tests/test_prng.py +76 -0
  633. tdcv2-0.1.2/tests/test_statistics.py +294 -0
  634. 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
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
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})
@@ -0,0 +1,6 @@
1
+ """TDC — The Data Constructor. Deterministic test data from a declarative config."""
2
+
3
+ from .errors import Diagnostic, Severity, TdcError
4
+ from .tdc import TDC, Row, SeedInfo
5
+
6
+ __all__ = ["TDC", "Diagnostic", "Row", "SeedInfo", "Severity", "TdcError"]
@@ -0,0 +1,5 @@
1
+ """The ``tdcv2`` command line.
2
+
3
+ Nothing is imported here on purpose: ``python -m tdcv2.cli.main`` would otherwise warn about the
4
+ module being loaded twice, and the ordinary library import has no reason to pull the CLI in.
5
+ """
@@ -0,0 +1,5 @@
1
+ """``python -m tdcv2.cli`` — the same entry point as the installed ``tdcv2`` command."""
2
+
3
+ from .main import cli
4
+
5
+ cli()