tab-cli 0.1.3__tar.gz → 0.1.4__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 (168) hide show
  1. {tab_cli-0.1.3 → tab_cli-0.1.4}/.gitignore +1 -0
  2. tab_cli-0.1.4/.jj/.gitignore +1 -0
  3. tab_cli-0.1.4/.jj/repo/index/op_links/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2 -0
  4. tab_cli-0.1.4/.jj/repo/index/op_links/282ad8cf3324b2679a7d460c0fc324adfa21dcfad2f197ac6991b98ec91f98495bb3ddb2cba36ce5dfa28a52063a373bb03f5d2e34f6e0c7b6b81b3046a4d7d0 +3 -0
  5. tab_cli-0.1.4/.jj/repo/index/op_links/891d7ed26f62b0f8757b081e9d76840636877f1613ee17b7695fe2ee8640258c56e01291934e3797728bc2300a1b5f41e3f3ef81ab532c0e5ab475bb9b6f097a +4 -0
  6. tab_cli-0.1.4/.jj/repo/index/op_links/8926397375b8328137652c18cd4371808b214cb26864d77dd33c8eea895e10e62c297064c3d4c703d58ee11dee81bbf9851525e3a0c33151f54c164b8a4343b0 +0 -0
  7. tab_cli-0.1.4/.jj/repo/index/op_links/89d29d938e64b1295e138faedfa5df6f6729a67e5ba8e0c3fdd1c9266e0f59a4bc35b8a21e14225072317879af3323fa0457e01d9b08608770bc23957feec6c0 +2 -0
  8. tab_cli-0.1.4/.jj/repo/index/op_links/95fc2854c0fa2528b03e2bcabc7612f56f0bcb3d6f54a06293e21d1887885a449907b5b320a1a94bac712bf56fdad0a4184b17047c1fc179dfa83acab3f70d21 +2 -0
  9. tab_cli-0.1.4/.jj/repo/index/op_links/9a58ceae46de4649375b6b880b8500c85d34c8e9bc650dc4c993afb2fa8d45c4180331821c6226a0fb1475b04a0b9a849502647ef9c4dcac74769eb501c885fa +2 -0
  10. tab_cli-0.1.4/.jj/repo/index/op_links/a19ae062208aa20b7310705af3d26ef53095a9dabfad080883cc7a32e98687063179db95cb2c71ef9064801c59fa46d261f172d83e83f96a39c274387b59dca4 +2 -0
  11. tab_cli-0.1.4/.jj/repo/index/op_links/d1169a8d10067493e42752c2a7615ff27f55bd90c38b91feef918958e29a2239ee289a0cde8385441d1f0fe9af1fb634fa6d56438b9f33ec382e81fa59d70b54 +2 -0
  12. tab_cli-0.1.4/.jj/repo/index/op_links/e171e5c6039c050c2368584a537d36df221b1f9f23d285c0399b95b14608d67006229823e6831bff7d8b0c2f9e86ebaec9c6811461119195f430ade055073fed +2 -0
  13. tab_cli-0.1.4/.jj/repo/index/op_links/ee118dd19aac4e1cb354f83a37dadca70bc5f086cc8d36cd0059b222bf8c7250824401ff681518d0120f8db1f96f0025c464dcfc3b1ee28777e8c76325760134 +2 -0
  14. tab_cli-0.1.4/.jj/repo/index/operations/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1 -0
  15. tab_cli-0.1.4/.jj/repo/index/operations/282ad8cf3324b2679a7d460c0fc324adfa21dcfad2f197ac6991b98ec91f98495bb3ddb2cba36ce5dfa28a52063a373bb03f5d2e34f6e0c7b6b81b3046a4d7d0 +1 -0
  16. tab_cli-0.1.4/.jj/repo/index/operations/891d7ed26f62b0f8757b081e9d76840636877f1613ee17b7695fe2ee8640258c56e01291934e3797728bc2300a1b5f41e3f3ef81ab532c0e5ab475bb9b6f097a +1 -0
  17. tab_cli-0.1.4/.jj/repo/index/operations/8926397375b8328137652c18cd4371808b214cb26864d77dd33c8eea895e10e62c297064c3d4c703d58ee11dee81bbf9851525e3a0c33151f54c164b8a4343b0 +1 -0
  18. tab_cli-0.1.4/.jj/repo/index/operations/89d29d938e64b1295e138faedfa5df6f6729a67e5ba8e0c3fdd1c9266e0f59a4bc35b8a21e14225072317879af3323fa0457e01d9b08608770bc23957feec6c0 +1 -0
  19. tab_cli-0.1.4/.jj/repo/index/operations/95fc2854c0fa2528b03e2bcabc7612f56f0bcb3d6f54a06293e21d1887885a449907b5b320a1a94bac712bf56fdad0a4184b17047c1fc179dfa83acab3f70d21 +1 -0
  20. tab_cli-0.1.4/.jj/repo/index/operations/9a58ceae46de4649375b6b880b8500c85d34c8e9bc650dc4c993afb2fa8d45c4180331821c6226a0fb1475b04a0b9a849502647ef9c4dcac74769eb501c885fa +1 -0
  21. tab_cli-0.1.4/.jj/repo/index/operations/a19ae062208aa20b7310705af3d26ef53095a9dabfad080883cc7a32e98687063179db95cb2c71ef9064801c59fa46d261f172d83e83f96a39c274387b59dca4 +1 -0
  22. tab_cli-0.1.4/.jj/repo/index/operations/d1169a8d10067493e42752c2a7615ff27f55bd90c38b91feef918958e29a2239ee289a0cde8385441d1f0fe9af1fb634fa6d56438b9f33ec382e81fa59d70b54 +1 -0
  23. tab_cli-0.1.4/.jj/repo/index/operations/e171e5c6039c050c2368584a537d36df221b1f9f23d285c0399b95b14608d67006229823e6831bff7d8b0c2f9e86ebaec9c6811461119195f430ade055073fed +1 -0
  24. tab_cli-0.1.4/.jj/repo/index/operations/ee118dd19aac4e1cb354f83a37dadca70bc5f086cc8d36cd0059b222bf8c7250824401ff681518d0120f8db1f96f0025c464dcfc3b1ee28777e8c76325760134 +1 -0
  25. tab_cli-0.1.4/.jj/repo/index/segments/1029dd1c1f4430d8a667a0e48d0b817652c7ddca6f5ff56cac1755e5bb0c1cb7586935941c9b36f26cab05c0effe6154d073bd1dffbe37f22fed0a6e7d79201f +0 -0
  26. tab_cli-0.1.4/.jj/repo/index/segments/3228b9bef9d8374b5532b40df2da8be3bfc86de713bdad7fe620977ffa7c56db83928678caa792bf0d328db607028e045a9e41423ef7501e5b550651c3815ffe +0 -0
  27. tab_cli-0.1.4/.jj/repo/index/segments/424c9a53f5458b328d77ed6a943dc35662e949befa8725cfc7eead01a270417c8d07c1001b11623a088da8d2c9c34a41573314fa2394643147e4027e8a96a605 +0 -0
  28. tab_cli-0.1.4/.jj/repo/index/segments/44107e81054aa5544b36eab8d811908a559b4d9027dc3fa1762c44e39551652199ef2a31f9bbcda79773c906151c12578cb18c43e0045de8b20c357272e1c62a +0 -0
  29. tab_cli-0.1.4/.jj/repo/index/segments/52ea57bde33e8ef4718d833c2df3cf0a9e90fdcd5715c0caad50b4e37ea60aca2b8c71096de6920dc936c40b6291e896293f91c7cfd2aa96cf6c2aa49ef662c8 +0 -0
  30. tab_cli-0.1.4/.jj/repo/index/segments/5ea52f6d4771afda4747b9f44954102c02ae2d0686f8aa9eca36c29796bbba0d14e851c0dca0a6af17bfbbbac174e3be645ae708d958390168e85c64786fc9ef +0 -0
  31. tab_cli-0.1.4/.jj/repo/index/segments/86a1cfa113399acc7dd2dc90262a845558affb5e9373b6300dff68a485482c5e17ace9466bbc23b4301013ca1a27a577ca57ea838113f45bf321a64a242b1ad3 +0 -0
  32. tab_cli-0.1.4/.jj/repo/index/segments/8ef99a12ae0624db198d9ecd83014fb8353c4731e0ba9a472f1fc339784308e38f1287d0765a7b0444f1a89c218c76a820dc4c9a3a39c1cedcd7423a4f5f88dc +0 -0
  33. tab_cli-0.1.4/.jj/repo/index/segments/cb3e8da2bf2b7efae4a6e8fd0b8562dacd16ca0531b173a91480a9e60ee795ac5bec13fc6eb461e03edc9a26f5ff1d5ba53521a1c1a6c1ee1765b544b7d7bf73 +0 -0
  34. tab_cli-0.1.4/.jj/repo/index/segments/d27ad326963b75736b636adad9fb812eb3f2871e0efb4bc7db37d4b701a4282911eaaee91bed3a759e940769b667be1ed66f2d7f2f41ac3906b87ab7eec19c3a +0 -0
  35. tab_cli-0.1.4/.jj/repo/index/type +1 -0
  36. tab_cli-0.1.4/.jj/repo/op_heads/type +1 -0
  37. tab_cli-0.1.4/.jj/repo/op_store/operations/282ad8cf3324b2679a7d460c0fc324adfa21dcfad2f197ac6991b98ec91f98495bb3ddb2cba36ce5dfa28a52063a373bb03f5d2e34f6e0c7b6b81b3046a4d7d0 +4 -0
  38. tab_cli-0.1.4/.jj/repo/op_store/operations/891d7ed26f62b0f8757b081e9d76840636877f1613ee17b7695fe2ee8640258c56e01291934e3797728bc2300a1b5f41e3f3ef81ab532c0e5ab475bb9b6f097a +7 -0
  39. tab_cli-0.1.4/.jj/repo/op_store/operations/8926397375b8328137652c18cd4371808b214cb26864d77dd33c8eea895e10e62c297064c3d4c703d58ee11dee81bbf9851525e3a0c33151f54c164b8a4343b0 +5 -0
  40. tab_cli-0.1.4/.jj/repo/op_store/operations/89d29d938e64b1295e138faedfa5df6f6729a67e5ba8e0c3fdd1c9266e0f59a4bc35b8a21e14225072317879af3323fa0457e01d9b08608770bc23957feec6c0 +5 -0
  41. tab_cli-0.1.4/.jj/repo/op_store/operations/95fc2854c0fa2528b03e2bcabc7612f56f0bcb3d6f54a06293e21d1887885a449907b5b320a1a94bac712bf56fdad0a4184b17047c1fc179dfa83acab3f70d21 +6 -0
  42. tab_cli-0.1.4/.jj/repo/op_store/operations/9a58ceae46de4649375b6b880b8500c85d34c8e9bc650dc4c993afb2fa8d45c4180331821c6226a0fb1475b04a0b9a849502647ef9c4dcac74769eb501c885fa +0 -0
  43. tab_cli-0.1.4/.jj/repo/op_store/operations/a19ae062208aa20b7310705af3d26ef53095a9dabfad080883cc7a32e98687063179db95cb2c71ef9064801c59fa46d261f172d83e83f96a39c274387b59dca4 +0 -0
  44. tab_cli-0.1.4/.jj/repo/op_store/operations/d1169a8d10067493e42752c2a7615ff27f55bd90c38b91feef918958e29a2239ee289a0cde8385441d1f0fe9af1fb634fa6d56438b9f33ec382e81fa59d70b54 +0 -0
  45. tab_cli-0.1.4/.jj/repo/op_store/operations/e171e5c6039c050c2368584a537d36df221b1f9f23d285c0399b95b14608d67006229823e6831bff7d8b0c2f9e86ebaec9c6811461119195f430ade055073fed +0 -0
  46. tab_cli-0.1.4/.jj/repo/op_store/operations/ee118dd19aac4e1cb354f83a37dadca70bc5f086cc8d36cd0059b222bf8c7250824401ff681518d0120f8db1f96f0025c464dcfc3b1ee28777e8c76325760134 +5 -0
  47. tab_cli-0.1.4/.jj/repo/op_store/type +1 -0
  48. tab_cli-0.1.4/.jj/repo/op_store/views/123b0e36150cf8e99d644d2dfd1a7b0c8d2f676a78248d6902516d9ae58903665c79ec3f5f6729b98a1237dcf2abc1d41e690ae0ad30888c84786bcc9de5e314 +0 -0
  49. tab_cli-0.1.4/.jj/repo/op_store/views/2ac0b7d8b1fdfac82b3ff3926e0018f72ef2b48f85b41f5fa541271370e1197d41e37c2c6d62af0c6974658c4a9e5e945b8efcbcc7748bdd99bd9483f7e13e22 +0 -0
  50. tab_cli-0.1.4/.jj/repo/op_store/views/67b8396b301935ff624ff98952c57d8ee021e7d885e1220053b993e7bc822a4cf061298e9643ded745c55f3ed8e923a6731524129993d2664f48b60660761145 +0 -0
  51. tab_cli-0.1.4/.jj/repo/op_store/views/9c6fca696f77383cc87d068fe3f5912466b157dccc6465973e653dd4d2c02e2eca9c0725c071857bf3f4f0e263259eafc18f1739615a501e672bb2afd415316b +0 -0
  52. tab_cli-0.1.4/.jj/repo/op_store/views/cae2e3e5952cb5ba93f27e3898d90dac6c41fc9e20c66ef0791e71b91dc103d924996c921c88179705264a224fb5d2bb29091fc8f18f0ea7a088aaabb859ea2a +0 -0
  53. tab_cli-0.1.4/.jj/repo/op_store/views/cd8efb6da14127c81c37b56ead18a39b30f2cd154891185a6e906efb491dbf63f290eed3c31d4725f490a93208ffbe5cdc031d5b6de38fcb77cbb11f0357118f +0 -0
  54. tab_cli-0.1.4/.jj/repo/op_store/views/e434359d6306a4f6997733b9b5308299984f05219c92e1b2a31f1203126be0fada5fc09a2ba86c98d1318981cb53997c7f8674ef25da6ca7bf9fd849598cd355 +0 -0
  55. tab_cli-0.1.4/.jj/repo/op_store/views/ea75e7ccb42f52b013dc1b45bb4e6d692b37c5e38bd39356ba2806be83ca5ca03ce20481db2788428126f93663e6723f99f4d46c5c705f5b12b70e2127ab15ba +0 -0
  56. tab_cli-0.1.4/.jj/repo/op_store/views/fa5dec7ee06fbc6cbb2798c8e98bab482a6750776de41406fb06893c83f71f5015ec7ee2873642714b7bbc1c496f880e3acf44ffdabf2f87a39e0fbd68a4cc46 +0 -0
  57. tab_cli-0.1.4/.jj/repo/op_store/views/ffde172c6285c71851b22780e34962d8f9234067af59ff2dc38b74e905dc540fe35b944e8c0b2d4230dfcf778424a335494cd0aeea1bb4be2a11c4b5428ad465 +0 -0
  58. tab_cli-0.1.4/.jj/repo/store/extra/14e3f15273e204cadfe38dd2f38cebd1343a6bfbb91c6af0f5f9de6e9003d8ec8b0eb676975af9dca2d06ee5e6b3886c3c5d3755c6f149b6b09172cccc35adff +0 -0
  59. tab_cli-0.1.4/.jj/repo/store/extra/42e0f32dd10ba6ae9f2297ca8ad0bd16337f14545b29f956ce380a7ab92bab771cbc9e04755752a6fa13231286f724379d6662b0fb257ef2cc2c52fe680eb95d +0 -0
  60. tab_cli-0.1.4/.jj/repo/store/extra/466a441e56afdde383cef1d6127ca1d4c825157feb65a59f8f6ff5fa7a523bd683d0b7a6bb16c00afff53a890319a472d98da9af3dea5675168a4d424aa7af32 +0 -0
  61. tab_cli-0.1.4/.jj/repo/store/extra/482ae5a29fbe856c7272f2071b8b0f0359ee2d89ff392b8a900643fbd0836eccd067b8bf41909e206c90d45d6e7d8b6686b93ecaee5fe1a9060d87b672101310 +0 -0
  62. tab_cli-0.1.4/.jj/repo/store/extra/5403fa06049419ddcf620ce0dc20911583e1b1062b42630ee325aa5ac2f918dd266dfed93ebc808a2aecb37ac3a33e251fe1396fd24b8ed566bfbd61a81ff959 +0 -0
  63. tab_cli-0.1.4/.jj/repo/store/extra/56119fa0480cb66159978b1a8c9b031f9e978b7a3172eb87407a701fea34fdd90db7771cd433a2cf7e8a84a7b49c924f973eccb0eb05685ec42f36f7ef61cc06 +0 -0
  64. tab_cli-0.1.4/.jj/repo/store/extra/90b1f4de4ba65e0652f1de45e4c84b623f99bd9d9453667e19c7040857bd397e59e7a84406f2ab6204d25789d995c47c350d8abc47a4bbb102059f3111f20028 +0 -0
  65. tab_cli-0.1.4/.jj/repo/store/extra/9215bd4ac28fdecba111c63bace46d0f1c253ad3af44e0e74bd43d30757bef2e655538c1172c8f25769bce0a3c669b713440773c1859f0a136d9ca42501f2470 +0 -0
  66. tab_cli-0.1.4/.jj/repo/store/extra/a79320f784ef97b3d6297e55a48b17a517a38d95d5c61ba8d01c59d68dcd2ccf3a96479f4fc3c4cafdcd56dc7bd58b1cb987e079764c1646533ab32418900727 +0 -0
  67. tab_cli-0.1.4/.jj/repo/store/extra/abe6b7a350e1604cb8f5a2cd10cef13a019bd797770e6dc37414d33d98dcf36d8ec80a2ae13bd7dd2d2076772c0ffadec0b53ba72f4669b461fff2da5d30f1ba +0 -0
  68. tab_cli-0.1.4/.jj/repo/store/extra/b7689d54193a3798edd58d758966ad65ad57297c5276eab3e4ef07380779363efe9e462a149f4d42f55bbe004eb5ba88bf35df4c78ac975275530382390159d6 +0 -0
  69. tab_cli-0.1.4/.jj/repo/store/extra/e75f5f3431d172d7e9434dfaef2be50812105b3ead73eeb10345c9b6892e9cbb5ee0602ebb0ceaf5ab87d22f45930dc30d136d0aac77310fb0261b3857ffde9b +0 -0
  70. tab_cli-0.1.4/.jj/repo/store/extra/heads/56119fa0480cb66159978b1a8c9b031f9e978b7a3172eb87407a701fea34fdd90db7771cd433a2cf7e8a84a7b49c924f973eccb0eb05685ec42f36f7ef61cc06 +0 -0
  71. tab_cli-0.1.4/.jj/repo/store/git_target +1 -0
  72. tab_cli-0.1.4/.jj/repo/store/type +1 -0
  73. tab_cli-0.1.4/.jj/repo/submodule_store/type +1 -0
  74. tab_cli-0.1.4/.jj/repo/workspace_store/index +3 -0
  75. tab_cli-0.1.4/.jj/working_copy/checkout +2 -0
  76. tab_cli-0.1.4/.jj/working_copy/tree_state +0 -0
  77. tab_cli-0.1.4/.jj/working_copy/type +1 -0
  78. {tab_cli-0.1.3 → tab_cli-0.1.4}/CHANGELOG.md +3 -0
  79. {tab_cli-0.1.3 → tab_cli-0.1.4}/PKG-INFO +2 -2
  80. {tab_cli-0.1.3 → tab_cli-0.1.4}/README.md +1 -1
  81. {tab_cli-0.1.3 → tab_cli-0.1.4}/docs/cli-ref.md +3 -17
  82. tab_cli-0.1.4/docs/gen_assets.sh +3 -0
  83. {tab_cli-0.1.3 → tab_cli-0.1.4}/mkdocs.yml +1 -1
  84. {tab_cli-0.1.3 → tab_cli-0.1.4}/pyproject.toml +1 -1
  85. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/cli.py +48 -41
  86. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/parquet.py +27 -3
  87. tab_cli-0.1.4/tests/__init__.py +0 -0
  88. {tab_cli-0.1.3 → tab_cli-0.1.4}/tests/test_cli.py +13 -13
  89. tab_cli-0.1.3/docs/gen_assets.sh +0 -3
  90. tab_cli-0.1.3/site/404.html +0 -348
  91. tab_cli-0.1.3/site/assets/images/favicon.png +0 -0
  92. tab_cli-0.1.3/site/assets/javascripts/bundle.d7c377c4.min.js +0 -29
  93. tab_cli-0.1.3/site/assets/javascripts/bundle.d7c377c4.min.js.map +0 -7
  94. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ar.min.js +0 -1
  95. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.da.min.js +0 -18
  96. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.de.min.js +0 -18
  97. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.du.min.js +0 -18
  98. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.el.min.js +0 -1
  99. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.es.min.js +0 -18
  100. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.fi.min.js +0 -18
  101. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.fr.min.js +0 -18
  102. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.he.min.js +0 -1
  103. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.hi.min.js +0 -1
  104. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.hu.min.js +0 -18
  105. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.hy.min.js +0 -1
  106. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.it.min.js +0 -18
  107. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ja.min.js +0 -1
  108. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.jp.min.js +0 -1
  109. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.kn.min.js +0 -1
  110. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ko.min.js +0 -1
  111. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.multi.min.js +0 -1
  112. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.nl.min.js +0 -18
  113. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.no.min.js +0 -18
  114. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.pt.min.js +0 -18
  115. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ro.min.js +0 -18
  116. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ru.min.js +0 -18
  117. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.sa.min.js +0 -1
  118. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -1
  119. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.sv.min.js +0 -18
  120. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.ta.min.js +0 -1
  121. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.te.min.js +0 -1
  122. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.th.min.js +0 -1
  123. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.tr.min.js +0 -18
  124. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.vi.min.js +0 -1
  125. tab_cli-0.1.3/site/assets/javascripts/lunr/min/lunr.zh.min.js +0 -1
  126. tab_cli-0.1.3/site/assets/javascripts/lunr/tinyseg.js +0 -206
  127. tab_cli-0.1.3/site/assets/javascripts/lunr/wordcut.js +0 -6708
  128. tab_cli-0.1.3/site/assets/javascripts/workers/search.f886a092.min.js +0 -42
  129. tab_cli-0.1.3/site/assets/javascripts/workers/search.f886a092.min.js.map +0 -7
  130. tab_cli-0.1.3/site/assets/stylesheets/main.50c56a3b.min.css +0 -1
  131. tab_cli-0.1.3/site/assets/stylesheets/main.50c56a3b.min.css.map +0 -1
  132. tab_cli-0.1.3/site/assets/stylesheets/palette.06af60db.min.css +0 -1
  133. tab_cli-0.1.3/site/assets/stylesheets/palette.06af60db.min.css.map +0 -1
  134. tab_cli-0.1.3/site/assets/test-where.svg +0 -80
  135. tab_cli-0.1.3/site/assets/test.svg +0 -106
  136. tab_cli-0.1.3/site/cli-ref/index.html +0 -718
  137. tab_cli-0.1.3/site/cloud/index.html +0 -582
  138. tab_cli-0.1.3/site/gen_assets.sh +0 -3
  139. tab_cli-0.1.3/site/index.html +0 -729
  140. tab_cli-0.1.3/site/search/search_index.json +0 -1
  141. tab_cli-0.1.3/site/sitemap.xml +0 -3
  142. tab_cli-0.1.3/site/sitemap.xml.gz +0 -0
  143. tab_cli-0.1.3/tests/assets/test.csv +0 -9
  144. /tab_cli-0.1.3/tests/__init__.py → /tab_cli-0.1.4/.jj/repo/op_heads/heads/891d7ed26f62b0f8757b081e9d76840636877f1613ee17b7695fe2ee8640258c56e01291934e3797728bc2300a1b5f41e3f3ef81ab532c0e5ab475bb9b6f097a +0 -0
  145. {tab_cli-0.1.3 → tab_cli-0.1.4}/LICENSE +0 -0
  146. {tab_cli-0.1.3 → tab_cli-0.1.4}/Makefile +0 -0
  147. {tab_cli-0.1.3 → tab_cli-0.1.4}/docs/cloud.md +0 -0
  148. {tab_cli-0.1.3 → tab_cli-0.1.4}/docs/index.md +0 -0
  149. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/__init__.py +0 -0
  150. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/config.py +0 -0
  151. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/__init__.py +0 -0
  152. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/avro.py +0 -0
  153. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/base.py +0 -0
  154. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/csv.py +0 -0
  155. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/formats/jsonl.py +0 -0
  156. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/handlers/__init__.py +0 -0
  157. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/handlers/base.py +0 -0
  158. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/handlers/cli_table.py +0 -0
  159. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/__init__.py +0 -0
  160. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/aws.py +0 -0
  161. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/az.py +0 -0
  162. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/base.py +0 -0
  163. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/fsspec.py +0 -0
  164. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/gcloud.py +0 -0
  165. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/storage/local.py +0 -0
  166. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/style.py +0 -0
  167. {tab_cli-0.1.3 → tab_cli-0.1.4}/src/tab_cli/url_parser.py +0 -0
  168. {tab_cli-0.1.3/site → tab_cli-0.1.4/tests/assets}/test.csv +0 -0
@@ -63,6 +63,7 @@ htmlcov/
63
63
 
64
64
  # Generated assets
65
65
  docs/assets/
66
+ site/
66
67
 
67
68
  # Claude
68
69
  .claude/
@@ -0,0 +1 @@
1
+ /*
@@ -0,0 +1,2 @@
1
+
2
+ @�z�&�;uskcj����.���K��7Է�()���:u��i�g��o-/A�9�z����:
@@ -0,0 +1,3 @@
1
+
2
+ @)�D0ئg�� �vR���o_�l�U� �Xi5��6�l����aT�s���7�/�
3
+ n}y 
@@ -0,0 +1,2 @@
1
+
2
+ @�>���+~���� �b���1�s����畬[��n�a�>ܚ&��[�5!�����e�D�׿s
@@ -0,0 +1,2 @@
1
+
2
+ @����$���̓O�5<G1ບG/�9xC���vZ{D�!�v� �L�:9����B:O_��
@@ -0,0 +1,2 @@
1
+
2
+ @D~�J�TK6����U�M�'�?�v,D�Qe!��*1��ͧ�s�W���C�]� 5rr��*
@@ -0,0 +1,2 @@
1
+
2
+ @����$���̓O�5<G1ບG/�9xC���vZ{D�!�v� �L�:9����B:O_��
@@ -0,0 +1 @@
1
+ d27ad326963b75736b636adad9fb812eb3f2871e0efb4bc7db37d4b701a4282911eaaee91bed3a759e940769b667be1ed66f2d7f2f41ac3906b87ab7eec19c3a
@@ -0,0 +1 @@
1
+ 1029dd1c1f4430d8a667a0e48d0b817652c7ddca6f5ff56cac1755e5bb0c1cb7586935941c9b36f26cab05c0effe6154d073bd1dffbe37f22fed0a6e7d79201f
@@ -0,0 +1 @@
1
+ 52ea57bde33e8ef4718d833c2df3cf0a9e90fdcd5715c0caad50b4e37ea60aca2b8c71096de6920dc936c40b6291e896293f91c7cfd2aa96cf6c2aa49ef662c8
@@ -0,0 +1 @@
1
+ 424c9a53f5458b328d77ed6a943dc35662e949befa8725cfc7eead01a270417c8d07c1001b11623a088da8d2c9c34a41573314fa2394643147e4027e8a96a605
@@ -0,0 +1 @@
1
+ cb3e8da2bf2b7efae4a6e8fd0b8562dacd16ca0531b173a91480a9e60ee795ac5bec13fc6eb461e03edc9a26f5ff1d5ba53521a1c1a6c1ee1765b544b7d7bf73
@@ -0,0 +1 @@
1
+ 3228b9bef9d8374b5532b40df2da8be3bfc86de713bdad7fe620977ffa7c56db83928678caa792bf0d328db607028e045a9e41423ef7501e5b550651c3815ffe
@@ -0,0 +1 @@
1
+ 8ef99a12ae0624db198d9ecd83014fb8353c4731e0ba9a472f1fc339784308e38f1287d0765a7b0444f1a89c218c76a820dc4c9a3a39c1cedcd7423a4f5f88dc
@@ -0,0 +1 @@
1
+ 86a1cfa113399acc7dd2dc90262a845558affb5e9373b6300dff68a485482c5e17ace9466bbc23b4301013ca1a27a577ca57ea838113f45bf321a64a242b1ad3
@@ -0,0 +1 @@
1
+ 44107e81054aa5544b36eab8d811908a559b4d9027dc3fa1762c44e39551652199ef2a31f9bbcda79773c906151c12578cb18c43e0045de8b20c357272e1c62a
@@ -0,0 +1 @@
1
+ 8ef99a12ae0624db198d9ecd83014fb8353c4731e0ba9a472f1fc339784308e38f1287d0765a7b0444f1a89c218c76a820dc4c9a3a39c1cedcd7423a4f5f88dc
@@ -0,0 +1 @@
1
+ 5ea52f6d4771afda4747b9f44954102c02ae2d0686f8aa9eca36c29796bbba0d14e851c0dca0a6af17bfbbbac174e3be645ae708d958390168e85c64786fc9ef
@@ -0,0 +1 @@
1
+ default
@@ -0,0 +1 @@
1
+ simple_op_heads_store
@@ -0,0 +1,4 @@
1
+
2
+ @�u�̴/R��E�Nmi+7��ӓV�(���\�<���'�B�&�6c�r?���l\p_[�!'��@���b �� spZ��n�0��ڿ���z2醇1yە�,q�d�Y�F�a�r�>��j9�t8{Yܤj
3
+ �Ȋ��3����������Ȋ��3���������import git refs"tongfei-alienware*tongfei2
4
+ args jj git init(
@@ -0,0 +1,7 @@
1
+
2
+ @;6 ��dM-�{ �/gjx$�iQm��f\y�?_g)��7����i
3
+ �0���xk̝��@��(T��%(�>+ʼv�o �=oT�b����ZD��� ��K�q+�o�ФK|�yߨ:ʳ�
4
+ �����3��������������3���������/commit f917bd9e5adc33c5e5ef59b12b4ddd7fc816a42e"tongfei-alienware*tongfei2
5
+ argsjj commit -m jj",
6
+ ^r�%�͇��ز��EG�m�����Z�3���Y�+M���."
7
+ �M��a�dI��`��&:���2(
@@ -0,0 +1,5 @@
1
+
2
+ @͎�m�A'�7�n���0��H�Zn�n�I�c����G%���2��\�[m��w˱W�@�ҝ��d�)^��ߥ�og)�~[������&nY��5��"Pr1xy�3#�W��`�p�#�����
3
+ ����3�������������3���������
4
+ args�jj file untrack site/404.html site/assets site/cli-ref site/cloud site/gen_assets.sh site/index.html site/search site/sitemap.xml site/sitemap.xml.gz",
5
+ _��>V&�U��Ҝ�61BdH��F
@@ -0,0 +1,5 @@
1
+
2
+ @�45�c���w3��0���O!��Უk���_��+�l��1���S�|�t�%�l����IY��U@�q��� #hXJS}6�"�#҅�9���F�p"�#��}� /����Ɓa���0��U?�p
3
+ �����3��������������3���������snapshot working copy"tongfei-alienware*tongfei2
4
+ args jj status8",
5
+ F
@@ -0,0 +1,6 @@
1
+
2
+ @����,����~8��
3
+ �Ɩ��3�������������3���������/commit 2cf78a4bc12a1c8d99507386fb55c5a8cabb230b"tongfei-alienware*tongfei2
4
+ args jj commit",
5
+ ?s����$�[�m|c
6
+ ���Z�3���Y�+M���.(
@@ -0,0 +1,5 @@
1
+
2
+ @�]�~�o�l�'��鋫H*gPwm���<��P�~�6BqK{�Io�:�D�ڿ/����h��F@(*��3$�g�}F �$��!����i�����I[�ݲˣl�ߢ�R:7;�?].4��Ƕ�0F���j
3
+ �Ȋ��3����������Ɋ��3���������import git head"tongfei-alienware*tongfei2
4
+ args jj git init"
5
+ Sg��>?��_ڤ���6�6(
@@ -0,0 +1 @@
1
+ simple_op_store
@@ -0,0 +1 @@
1
+ ../../../.git
@@ -0,0 +1 @@
1
+ git
@@ -0,0 +1 @@
1
+ default
@@ -0,0 +1,3 @@
1
+
2
+ %
3
+ default/home/tongfei/proj/tab-cli
@@ -0,0 +1,2 @@
1
+ @�~�ob��u{�v�6���i_��@%�V���N7�r��0
2
+ _A��S,Z�u��o zdefault
@@ -0,0 +1 @@
1
+ local
@@ -1,3 +1,6 @@
1
+ - 0.1.4:
2
+ - Removed `tab sql` subcommand; SQL is now a `--sql` option on `tab view`, `tab convert`, and `tab cat`.
3
+ - Automatic PyArrow fallback for Parquet files that fail to read with Polars' native reader.
1
4
  - 0.1.3:
2
5
  - Separate `tab view` from `tab cat`: `tab view` does not convert formats, `tab cat` does.
3
6
  - Added `--max-cell-len` option to `tab view` to truncate long cell contents.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tab-cli
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: A CLI tool for tabular data
5
5
  Author-email: Tongfei Chen <tongfei@pm.me>
6
6
  License-File: LICENSE
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
26
26
 
27
27
  # tab
28
28
 
29
- ![pypi](https://img.shields.io/pypi/v/tab-cli)
29
+ [![pypi](https://img.shields.io/pypi/v/tab-cli)](https://pypi.org/project/tab-cli/)
30
30
  ```sh
31
31
  pip install tab-cli
32
32
  ```
@@ -1,6 +1,6 @@
1
1
  # tab
2
2
 
3
- ![pypi](https://img.shields.io/pypi/v/tab-cli)
3
+ [![pypi](https://img.shields.io/pypi/v/tab-cli)](https://pypi.org/project/tab-cli/)
4
4
  ```sh
5
5
  pip install tab-cli
6
6
  ```
@@ -13,6 +13,7 @@ Options:
13
13
  | Option | Description |
14
14
  |-------------------------|-----------------------------------------------------------------------------------------------------------|
15
15
  | `-i` / `--input-format` | Input format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). Auto-detected from extension if omitted. |
16
+ | `--sql` | SQL query to apply before displaying. The table is available as `t`. |
16
17
  | `--limit` | Maximum number of rows to display. |
17
18
  | `--skip` | Number of rows to skip from the beginning. |
18
19
  | `--max-cell-len` | Truncate cell contents longer than this. |
@@ -47,23 +48,6 @@ Options:
47
48
  | `-i` / `--input-format` | Input format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). Auto-detected from extension if omitted. |
48
49
 
49
50
 
50
- ## `tab sql`
51
-
52
- Run a SQL query on tabular data. The table is available as `t`.
53
-
54
- ```bash
55
- tab sql $query $path [OPTIONS]
56
- ```
57
-
58
- Options:
59
-
60
- | Option | Description |
61
- |-------------------------|-----------------------------------------------------------------------------------------------------------|
62
- | `-i` / `--input-format` | Input format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). Auto-detected from extension if omitted. |
63
- | `-o` / `--output-format` | Output format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). If not specified, print Rich table in terminal. |
64
- | `--limit` | Maximum number of rows to display. |
65
- | `--skip` | Number of rows to skip from the beginning. |
66
-
67
51
  ## `tab convert`
68
52
 
69
53
  Convert tabular data from one format to another.
@@ -78,6 +62,7 @@ Options:
78
62
  |-------------------------|---------------------------------------------------------------------------------------------------------|
79
63
  | `-i` / `--input-format` | Input format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). Auto-detected from extension if omitted. |
80
64
  | `-o` / `--output-format` | Output format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). If not specified, inherits from input format. |
65
+ | `--sql` | SQL query to apply before writing. The table is available as `t`. |
81
66
  | `-n` / `--num-partitions` | Number of output partitions. Creates a directory with partition files. |
82
67
 
83
68
 
@@ -95,6 +80,7 @@ Options:
95
80
  |-------------------------|-----------------------------------------------------------------------------------------------------------|
96
81
  | `-i` / `--input-format` | Input format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). Auto-detected from extension if omitted. |
97
82
  | `-o` / `--output-format` | Output format (`parquet`, `csv`, `tsv`, `jsonl`, `avro`). If not specified, print Rich table in terminal. |
83
+ | `--sql` | SQL query to apply after concatenation. The table is available as `t`. |
98
84
 
99
85
 
100
86
  ## Global options
@@ -0,0 +1,3 @@
1
+ mkdir -p docs/assets
2
+ uv run tab view tests/assets/test.csv --table-svg 2> docs/assets/test.svg
3
+ uv run tab sql 'SELECT * FROM t WHERE Metric_A_Value > 80' tests/assets/test.csv --table-svg 2> docs/assets/test-where.svg
@@ -35,4 +35,4 @@ nav:
35
35
  - 'CLI reference': 'cli-ref.md'
36
36
 
37
37
  watch:
38
- - tab_cli
38
+ - src
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tab-cli"
3
- version = "0.1.3"
3
+ version = "0.1.4"
4
4
  description = "A CLI tool for tabular data"
5
5
  authors = [{name = "Tongfei Chen", email = "tongfei@pm.me"}]
6
6
  readme = "README.md"
@@ -1,7 +1,7 @@
1
1
  """Main CLI entry point using Typer."""
2
2
 
3
3
  import sys
4
- from typing import Annotated, Optional
4
+ from typing import Annotated, Optional, TypeAlias
5
5
 
6
6
  from loguru import logger
7
7
  import polars as pl
@@ -11,7 +11,20 @@ from rich.logging import RichHandler
11
11
 
12
12
  from tab_cli import config
13
13
  from tab_cli.handlers import TableWriter, infer_reader, infer_writer
14
- from tab_cli.handlers.cli_table import CliTableFormatter
14
+
15
+ # Reusable type aliases for common CLI options
16
+ PathArg: TypeAlias = Annotated[str, typer.Argument(help="Path to the data file or directory")]
17
+ PathsArg: TypeAlias = Annotated[list[str], typer.Argument(help="Paths to the data files or directories")]
18
+ SrcArg: TypeAlias = Annotated[str, typer.Argument(help="Path to the source file or directory")]
19
+ DstArg: TypeAlias = Annotated[str, typer.Argument(help="Path to the destination file or directory")]
20
+ InputOpt: TypeAlias = Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format, auto-detected from extension if omitted")]
21
+ OutputOpt: TypeAlias = Annotated[Optional[str], typer.Option("-o", "--output-format", help="Output format")]
22
+ SqlOpt: TypeAlias = Annotated[Optional[str], typer.Option("--sql", help="SQL query to apply (table is available as 't')")]
23
+ LimitOpt: TypeAlias = Annotated[Optional[int], typer.Option("--limit", help="Maximum number of rows to display")]
24
+ SkipOpt: TypeAlias = Annotated[int, typer.Option("--skip", help="Number of rows to skip")]
25
+ MaxCellLenOpt: TypeAlias = Annotated[Optional[int], typer.Option("--max-cell-len", help="Truncate cell contents longer than this")]
26
+ TableSvgOpt: TypeAlias = Annotated[bool, typer.Option("--table-svg", help="Output table as SVG")]
27
+ NumPartitionsOpt: TypeAlias = Annotated[Optional[int], typer.Option("-n", "--num-partitions", help="Number of output partitions")]
15
28
 
16
29
  app = typer.Typer(
17
30
  help="A CLI tool for viewing and manipulating tabular data.",
@@ -47,6 +60,14 @@ def main_callback(
47
60
  )
48
61
 
49
62
 
63
+ def _apply_sql(lf: pl.LazyFrame, sql: str | None) -> pl.LazyFrame:
64
+ """Apply an optional SQL query to a LazyFrame. The table is available as 't'."""
65
+ if sql is not None:
66
+ ctx = pl.SQLContext(t=lf, eager=False)
67
+ return ctx.execute(sql)
68
+ return lf
69
+
70
+
50
71
  def _apply_limit(
51
72
  lf: pl.LazyFrame,
52
73
  limit: int | None,
@@ -73,24 +94,27 @@ def _apply_limit(
73
94
 
74
95
  @app.command()
75
96
  def view(
76
- path: Annotated[str, typer.Argument(help="Path to the data file or directory")],
77
- limit: Annotated[Optional[int], typer.Option("--limit", help="Maximum number of rows to display")] = None,
78
- skip: Annotated[int, typer.Option("--skip", help="Number of rows to skip")] = 0,
79
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format, auto-detected from extension if omitted")] = None,
80
- max_cell_len: Annotated[Optional[int], typer.Option("--max-cell-len", help="Truncate cell contents longer than this")] = None,
97
+ path: PathArg,
98
+ limit: LimitOpt = None,
99
+ skip: SkipOpt = 0,
100
+ input: InputOpt = None,
101
+ sql: SqlOpt = None,
102
+ max_cell_len: MaxCellLenOpt = None,
103
+ table_svg: TableSvgOpt = False,
81
104
  ) -> None:
82
105
  """View tabular data as a formatted table."""
83
106
  reader = infer_reader(path, format=input)
84
107
  lf = reader.read(path)
108
+ lf = _apply_sql(lf, sql)
85
109
  lf, truncated = _apply_limit(lf, limit=limit, skip=skip, default_limit=20 if limit is None else None)
86
- writer = CliTableFormatter(truncated=truncated, max_cell_len=max_cell_len)
110
+ writer = infer_writer("table-svg" if table_svg else None, truncated=truncated, max_cell_len=max_cell_len)
87
111
  for chunk in writer.write(lf):
88
112
  sys.stdout.buffer.write(chunk)
89
113
 
90
114
  @app.command()
91
115
  def schema(
92
- path: Annotated[str, typer.Argument(help="Path to the data file or directory")],
93
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format")] = None,
116
+ path: PathArg,
117
+ input: InputOpt = None,
94
118
  ) -> None:
95
119
  """Display the schema of a tabular data file."""
96
120
  reader = infer_reader(path, format=input)
@@ -99,31 +123,10 @@ def schema(
99
123
  console.print(table_schema)
100
124
 
101
125
 
102
- @app.command()
103
- def sql(
104
- query: Annotated[str, typer.Argument(help="SQL query to execute (table is available as 't')")],
105
- path: Annotated[str, typer.Argument(help="Path to the data file or directory")],
106
- limit: Annotated[Optional[int], typer.Option("--limit", help="Maximum number of rows to display")] = None,
107
- skip: Annotated[int, typer.Option("--skip", help="Number of rows to skip")] = 0,
108
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format")] = None,
109
- output: Annotated[Optional[str], typer.Option("-o", "--output-format", help="Output format")] = None,
110
- ) -> None:
111
- """Run a SQL query on tabular data. The table is available as 't'."""
112
- reader = infer_reader(path, format=input)
113
- lf = reader.read(path)
114
- ctx = pl.SQLContext(t=lf, eager=False)
115
- result_lf = ctx.execute(query)
116
- show_truncation = limit is None and output is None
117
- result_lf, truncated = _apply_limit(result_lf, limit=limit, skip=skip, default_limit=20 if show_truncation else None)
118
- writer = infer_writer(output, truncated=truncated)
119
- for chunk in writer.write(result_lf):
120
- sys.stdout.buffer.write(chunk)
121
-
122
-
123
126
  @app.command()
124
127
  def summary(
125
- path: Annotated[str, typer.Argument(help="Path to the data file or directory")],
126
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format")] = None,
128
+ path: PathArg,
129
+ input: InputOpt = None,
127
130
  ) -> None:
128
131
  """Display summary information about a tabular data file."""
129
132
  handler = infer_reader(path, format=input)
@@ -134,11 +137,12 @@ def summary(
134
137
 
135
138
  @app.command()
136
139
  def convert(
137
- src: Annotated[str, typer.Argument(help="Path to the source file or directory")],
138
- dst: Annotated[str, typer.Argument(help="Path to the destination file or directory")],
139
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format")] = None,
140
- output: Annotated[Optional[str], typer.Option("-o", "--output-format", help="Output format")] = None,
141
- num_partitions: Annotated[Optional[int], typer.Option("-n", "--num-partitions", help="Number of output partitions")] = None,
140
+ src: SrcArg,
141
+ dst: DstArg,
142
+ input: InputOpt = None,
143
+ output: OutputOpt = None,
144
+ sql: SqlOpt = None,
145
+ num_partitions: NumPartitionsOpt = None,
142
146
  ) -> None:
143
147
  """Convert tabular data from one format to another."""
144
148
  reader = infer_reader(src, format=input)
@@ -151,19 +155,22 @@ def convert(
151
155
  writer = reader
152
156
  assert isinstance(writer, TableWriter)
153
157
  lf = reader.read(src)
158
+ lf = _apply_sql(lf, sql)
154
159
  writer.write_to_path(lf, dst, partitions=num_partitions)
155
160
 
156
161
 
157
162
  @app.command()
158
163
  def cat(
159
- paths: Annotated[list[str], typer.Argument(help="Paths to the data files or directories")],
160
- input: Annotated[Optional[str], typer.Option("-i", "--input-format", help="Input format")] = None,
161
- output: Annotated[Optional[str], typer.Option("-o", "--output-format", help="Output format")] = None,
164
+ paths: PathsArg,
165
+ input: InputOpt = None,
166
+ output: OutputOpt = None,
167
+ sql: SqlOpt = None,
162
168
  ) -> None:
163
169
  """Concatenate tabular data from multiple files, or just print a single file."""
164
170
  reader = infer_reader(paths[0], format=input)
165
171
  files = [reader.read(path) for path in paths]
166
172
  lf = pl.concat(files, how="vertical")
173
+ lf = _apply_sql(lf, sql)
167
174
  if output is not None:
168
175
  writer = infer_writer(format=output)
169
176
  else: