What's Changed
- Add initial setup for allow building PyDough + some directories by @njriasan in #1
- Adding initial type definitions by @knassre-bodo in #4
- Initialize PyDough metadata module by @knassre-bodo in #6
- Set up PyDough metadata error handling utilities by @knassre-bodo in #7
- Set up PyDough metadata classes by @knassre-bodo in #8
- Setup Github Actions by @njriasan in #9
- Fixing escape character warnings flagged by CI by @knassre-bodo in #12
- Updating how inherited properties work to contend with nested compound relationships by @knassre-bodo in #10
- Set up PyDough metadata parsing and testing by @knassre-bodo in #2
- Add the sqlite database with TPCH data for the demo by @njriasan in #11
- Reworking import heirarchy of metadata imports by @knassre-bodo in #18
- Set up PyDough AST module with basic abstract classes and simple type verifiers by @knassre-bodo in #13
- Set up type deducers in PyDough AST module by @knassre-bodo in #14
- Set up PyDough expression operators in AST module by @knassre-bodo in #16
- Adding initial AST expressions and collections by @knassre-bodo in #26
- Enable connecting to SqLite by @njriasan in #3
- Adding mypy to PyDough by @knassre-bodo in #27
- Add PyUpgrade and import cleaning to Ruff by @knassre-bodo in #28
- Define the abstract base classes for the relational step by @njriasan in #31
- Add remaining PyDough colleciton nodes by @knassre-bodo in #48
- Creating the unqualified PyDough module by @knassre-bodo in #43
- Setting up the unqualified transform step by @knassre-bodo in #45
- Add support for the Scan relational node by @njriasan in #36
- Add support for the Project relational node by @njriasan in #37
- Add support for the Limit relational node by @njriasan in #38
- Add support for the Aggregate relational node by @njriasan in #39
- Add support for the Filter relational node by @njriasan in #40
- Add support for the Root relational node by @njriasan in #41
- Add support for the Join relational node by @njriasan in #42
- Refactoring how operands are dealt with in the UnqualifiedNode stage by @knassre-bodo in #54
- Build a visitor pattern for handling Relational Trees by @njriasan in #52
- Builds the Relational Expression Visitors by @njriasan in #53
- Support Converting a Scan to SQLGlot by @njriasan in #55
- Support for converting a projection to SQLGlot by @njriasan in #56
- Adding ability to reference a child collection as a collection by @knassre-bodo in #62
- Support converting functions to SQLGlot by @njriasan in #57
- Support converting a filter to SQLGlot by @njriasan in #58
- Support converting a Limit to SQLGlot by @njriasan in #59
- Adding PyDough translations to remaining TPC-H queries by @knassre-bodo in #51
- Adding transform from UnqualifiedNodes to PyDough AST by @knassre-bodo in #49
- Support for converting an Aggregate to SQLGlot by @njriasan in #60
- Support for converting Join to SQLGlot by @njriasan in #61
- Support converting the Root to SQLGlot by @njriasan in #63
- Support for Anti + Semi Join in relational by @njriasan in #64
- Infrastructure for converting Relational to SQL by @njriasan in #65
- Add first batch of tests for Relational to SQL Conversion + Fix Bugs by @njriasan in #67
- Create relational to SQL tests for all node types but join by @njriasan in #68
- Support Join to SQL by @njriasan in #69
- Test TPCH Q1 conversion + fix operator precedence by @njriasan in #70
- Support TPCH Q6 to SQL + add support for AND by @njriasan in #71
- Move TPCH plans to a separate file by @njriasan in #72
- Implement PyDough singular/plural checking semantics by @knassre-bodo in #66
- Add TPCH Q3 to SQL by @njriasan in #73
- Enable function calls/complex expressions in ordering by @njriasan in #75
- Enable executing SQL on a database + test TPCH Q6 by @njriasan in #74
- Convert the Join represent to allow multiple joins by @njriasan in #79
- Add a RelationalExpressionShuttle and Remove aliases from unique columns in a join by @njriasan in #80
- Remove subquery aliases if the table has all unique columns by @njriasan in #81
- Enable fusing compatible limits and orderings by @njriasan in #82
- Enable column pruning Relational Nodes by @njriasan in #88
- Replace the execute query API return type with a Pandas DataFrame by @njriasan in #83
- Fix Python version in the test matrix by @njriasan in #84
- Add remaining sample TPC-H outputs by @njriasan in #86
- Adds proper support for Date Literals in SQLGlot conversion by @njriasan in #87
- Support Startswith, Endswith, and String Contains in SQL conversion by @njriasan in #89
- Support converting ISIN to SQLGlot by @njriasan in #90
- Support for IFF in SQLGlot by @njriasan in #91
- Support for LIKE function in SQLGlot by @njriasan in #92
- Support for Year in SQLGlot by @njriasan in #93
- Begin AST->Relational conversion by @knassre-bodo in #78
- Support basic scalar functions in PyDough by @knassre-bodo in #94
- Support basic singular child accesses as LEFT joins in AST->Relational conversion by @knassre-bodo in #95
- Support basic BACK reference expressions in AST->Relational conversion by @knassre-bodo in #96
- Support basic aggregations in AST->Relational conversion by @knassre-bodo in #98
- Support calling COUNT on a subcollection in AST->Relational by @knassre-bodo in #100
- Support for converting WHERE to Relational by @njriasan in #97
- Fix merge conflict with aggregate by @njriasan in #104
- Support global calcs and global aggregations in AST->Relational conversion by @knassre-bodo in #102
- Remove rust dependency by @gjdorman in #103
- Reformatting AST->Relational conversion tests to use fixtures by @knassre-bodo in #107
- Support for converting TopK + Order By by @njriasan in #99
- Add a single step to load SQLite dialect + connection by @njriasan in #105
- Support PARTITION in AST -> Relational conversion by @knassre-bodo in #106
- Test AST->Relational conversion for initial batch of TPCH queries by @knassre-bodo in #110
- Support stepping into a partition child in AST -> Relational conversion by @knassre-bodo in #111
- Support HAS and HASNOT in PyDough by @knassre-bodo in #112
- Adds support for defining a PyDough Session by @njriasan in #108
- Support a PyDough module level active_session by @njriasan in #109
- Various adjustments to codebase and tests to enable running TPCH queries by @knassre-bodo in #116
- Enable runtime correctness testing of TPCH queries by @knassre-bodo in #115
- Update the unqualified decorator to take a graph instead of path info by @njriasan in #117
- Refactoring qualification and unqualified nodes by @knassre-bodo in #122
- Add APIs for basic metadata exploration by @knassre-bodo in #119
- Add an end-to-end API for converting unqualified nodes to SQL + executing them by @njriasan in #120
- Add jupyter extensions for PyDough by @njriasan in #118
- Add the first demo notebook by @njriasan in #121
- Build the jupyter notebook for the demo presentation by @njriasan in #123
- Change default null position for ASC to FIRST by @knassre-bodo in #126
- Add notebook for metadata exploration by @knassre-bodo in #125
- PyDough Operations Notebook by @njriasan in #124
- Setup Github Codespaces by @njriasan in #130
- Improve the file opening experience for codespaces by starting with the readme and then navigating to the demos by @njriasan in #131
- Add a notebook with the TPC-H examples by @njriasan in #128
- Apply PyDough Demo Feedback by @njriasan in #129
- Adding details to TPCH notebook by @knassre-bodo in #132
- Demo notebook suggestions by @scott-routledge2 in #134
- Move the download to a cached step by @njriasan in #133
- Applied some of Ehsan's feedback by @njriasan in #136
- Start adding missing docstrings and readmes by @knassre-bodo in #127
- Moving operators module out of the AST module by @knassre-bodo in #135
- Cleanup more introduction language by @njriasan in #137
- Renaming the AST nodes to QDAG by @knassre-bodo in #138
- Cleanup TPC-H notebook by @njriasan in #142
- Simplify language in the metadata notebook by @njriasan in #144
- Fix IIF bug due to older versions of SQLite on Codespaces. by @njriasan in #146
- Final basic example updates by @njriasan in #147
- Fill out many of the remaining README files for each module & sub-module of PyDough by @knassre-bodo in #166
- Refactor how PyDough operators are converted to SQLGlot expressions with a binding infrastructure by @knassre-bodo in #165
- Tag Github Issues for Relational + SQLGlot Modules by @njriasan in #176
- Add Apache 2.0 License by @njriasan in #177
- Update License Copyright by @njriasan in #178
- Filling out remaining README files to PyDough by @knassre-bodo in #168
- Added Contributing.md by @njriasan in #179
- Add UV installation to codespaces by @njriasan in #180
- Move IPython Extension to submodule by @njriasan in #181
- Fixing cache bug caused by bad equality checks by @knassre-bodo in #184
- Implement precursor changes to implementing the BEST operator by @knassre-bodo in #189
- Update the project.toml in preparation for pip package by @njriasan in #185
- Add a workflow step for pip release by @njriasan in #186
- Implement RANKING function by @knassre-bodo in #190
- Added graphs for defog.ai schemas by @knassre-bodo in #192
- Implement PERCENTILE function by @knassre-bodo in #191
- Fix COUNT(*) bug when no input columns are used by @knassre-bodo in #195
- Setting up empty spec/documentation files for PyDough users by @knassre-bodo in #201
- Add
sort-all
pre-commit hook by @knassre-bodo in #203 - Add additional functions to PyDough by @knassre-bodo in #197
- Refactor our basic example notebook based on what if feedback by @njriasan in #214
- Adding function list documentation by @knassre-bodo in #210
- Adding PyDough metadata specification by @knassre-bodo in #215
- Fix a typo in the what_if notebook by @njriasan in #216
- Adding PyDough usage docs by @knassre-bodo in #217
- Adding PyDough DSL documentation by @knassre-bodo in #211
- Fix hybrid conversion so it does not produce unnecessary duplicate subtrees that get joined by @knassre-bodo in #231
Full Changelog: https://github.com/bodo-ai/PyDough/commits/v1.00.00