Skip to content

Implementing my own highcharts wrapper - #3

Merged
mistercrunch merged 2 commits into
masterfrom
charts
Jul 23, 2015
Merged

Implementing my own highcharts wrapper#3
mistercrunch merged 2 commits into
masterfrom
charts

Conversation

@mistercrunch

Copy link
Copy Markdown
Member

No description provided.

@mistercrunch mistercrunch changed the title Charts Implementing my own highcharts wrapper Jul 23, 2015
mistercrunch added a commit that referenced this pull request Jul 23, 2015
Implementing my own highcharts wrapper
@mistercrunch
mistercrunch merged commit b038d5a into master Jul 23, 2015
@mistercrunch
mistercrunch deleted the charts branch July 23, 2015 06:12
the-dcruz added a commit to the-dcruz/caravel that referenced this pull request Oct 25, 2016
* commit '9858b94ed750e79635234673c76c13927a1968af':
  Add prod script and configurations
  Annotation support in timeseries bar chart
graceguo-supercat referenced this pull request in graceguo-supercat/superset Aug 22, 2017
use react-intl-universal to improve multi language in react page
williaster added a commit that referenced this pull request Mar 3, 2018
add resizable grid and dragdroppables
hughhhh pushed a commit that referenced this pull request Jun 2, 2021
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases
hughhhh pushed a commit that referenced this pull request Jun 3, 2021
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases
hughhhh added a commit that referenced this pull request Jun 3, 2021
* split db modal file

* split db modal file

* hook up available databases

* add comment

* split db modal file

* hook up available databases

* use new validation component

* first draft

* use new validation component

* get tests passing

* split db modal file

* hook up available databases

* use new validation component

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* revisions

* fix package-lock.json

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* more revisions

* used db.backend

* added engine to model

* elizabeth revisions

* elizabeth revisions

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: hughhhh <hughmil3s@gmail.com>
hughhhh pushed a commit that referenced this pull request Jun 4, 2021
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases
hughhhh added a commit that referenced this pull request Jul 2, 2021
* split db modal file

* split db modal file

* hook up available databases

* add comment

* split db modal file

* hook up available databases

* use new validation component

* first draft

* use new validation component

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* get tests passing

* Removed logo from test

* split db modal file

* hook up available databases

* use new validation component

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* saving for now

* revisions

* fix package-lock.json

* update styles

* save

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* more revisions

* create 1 function for setting the DB

* add function to preferred section

* small refactor and added styling

* used db.backend

* add new footer buttons

* add finsh buttong

* refactor db modal render

* fix comments issue

* added engine to model

* elizabeth revisions

* add header

* add bottom footer to sqlalchemy form

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* elizabeth revisions

* add back headers

* add step

* feat: Dynamic Form for edit DB Modal (#14845)

* split db modal file

* split db modal file

* hook up available databases

* add comment

* split db modal file

* hook up available databases

* use new validation component

* first draft

* use new validation component

* get tests passing

* split db modal file

* hook up available databases

* use new validation component

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* revisions

* fix package-lock.json

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* more revisions

* used db.backend

* added engine to model

* elizabeth revisions

* elizabeth revisions

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: hughhhh <hughmil3s@gmail.com>

* address comments

* oops

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* remove merge conflicts

* small fix on blocking creating

* feat(db-connection-ui): Big Query Add Database Form (#14829)

* fix(native-filters): Manage default value of filters by superset (#14785)

* fix:fix get permission function

* feat: manage default value in superset

* fix(native-filters): loop bug by simplify state handling (#14788)

* fix: set table name width to not hide icons when name is too long (#14489)

* fix: set table name width to now hide icons when name is too long

* fix: table style

Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>

* feat(explore): Remove default for time range filter and Metrics (#14661)

* feat(explore): Remove default for time range filter and Metrics

* Merge errors with same messages

* Fix e2e test

* Rename a variable

* Bump packages

* Fix unit tests

* feat: chart gallery search improvement (#14484)

* feat: chart gallery search improvement

* test: adding unit test for VizTypeControl

* fix: lint errors

Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>

* Update schemas.py

* Update bigquery.py

* Fix tests

* big query form is appearing on the screen

* add name to allow for actions to get picked up

* working post for saving db via paste

* working file upload

* switch to textare

* better styles

* add delete buttong

* save formating

* wrap encrypted_extra

* formatting component

* clear out file input before reloading

* remove default driver

* address comments

* fix things off rebase

* small refactore

* more patches

* checkout space file

* fix variable ref

Co-authored-by: simcha90 <56388545+simcha90@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Einat Bertenthal <einatbar@users.noreply.github.com>
Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* feat: adding SSL Toggle to Create Database Modal (#14976)

* first draft of SSL Toggle

* added payload data

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* changed tooltips based on stephen advice

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>

* feat(database-connection-ui) Allow configuration of Database Images from SupersetText (#15023)

* saving this for now

* fix some styles

* add database images

* fix

* enforce only numbers

* add default iamge

* fix bug

* additional params to the DatabaseConnectionForm (#15071)

* additional params to the DatabaseConnectionForm

* save passing params up to api

* feat: Added Steps and centralized Headers (#15041)

* fix superset_text issue (#15095)

* fix edit issue by returning parameters properly (#15101)

* feat: added alerts (#15103)

* added alerts

* revisions

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>

* fix: fixing api tests for database connections (#15124)

* fixing api tests

* added test for no config method on create

* added config method to validation tests

* fix(db-connection-ui): Additional Query Parameters render (#15150)

* working query params

* move condition out before update or create

* fix type script issues

* feat(db-connection-ui): Move fields from Extra section and split engine and metadata (#15143)

* working edit extra options

* acquired most of json

* recontruct json

* add schema array

* add proper styles

* fix tslint issues

* remove console.log

* this is working

* style: Database connect UI Polish - Step 1 (#15119)

* save avg

* Styled step 1

* Remove Alert

* Finished styling, added ellipsis library to IconButton

* Fixed text margin

Co-authored-by: hughhhh <hughmil3s@gmail.com>

* fix app from merge

* fix tslint issues

* fix all tslint issue on feature branch

* catch errors for dialects with no driver set

* fix dremio issue

* fix dialect issue without driver attr

* Styled step 3 (#15187)

* feat: adding server-side validation and unmasked password on create (#15151)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* validation and password masking

* revisions and validation range

* revisions

* added beto revisions

* added tests for port range

* added config to available

* testing, rtl

* made tests always pass

* feat: add Close/Finish buttons to DBModal on Edit (#15199)

* fix(db-connection-ui): Allow Dynamic Big Query Edits (#15185)

* working big query edits

* fix big stoping users from moving to next step

* fix default

* save defaults

* fix tslint

* remove object

* fix styling

* fix: Connect on DB Connection wasn't working (#15201)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* fixed the connect button

* make available alphabetically sort

* make available alphabetically sort II

* fix selection

* remove console.log

* fix styling

* fix: fix api_test and typeScript error (#15202)

* fix big query issue

* allow for query params

* feat: Added Dynamic form link to SQL Alchemy Form (#15208)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* added dynamic form link

* fix: fix api tests for test_available (#15210)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* fixes api tests

* feat: added Spinner to DB Modal (#15229)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* Made header sticky (#15204)

* fix: make Edit DB modal look similar to create Modal (#15231)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* changed edit

* fix: DB Connection UI R2 Fixes (#15232)

* fix display name refill

* fix order of additional params to always be at the bottom

* remove schema check on validation

* make encryption last

* fix json file upload

* fix additional params issue

* remove comments

* add back validation

* small fixes on bigquery edit

* only wrap encrypted with bigquery

* specific conditions for wrapping big query items

* dix additional params

* fix allow display name in sqlalchemy form

* backend before engine

* fix: do not use Marshmallow validation in partial params validation (#15236)

* fix: do not use Marshmallow validation in partial params validation

* Fix lint

* Update test

* make display name required

* reset validation errors onClose (#15243)

* fix: Edit for all dynamic forms (#15244)

* fix edit for dynamic forms

* fix linting

* fix edit on sqlalchemy forms

* fix big query reference

* remove extra if

* wrap configuration method (#15274)

* add more specific engine elastic search (#15287)

* do a deep copy of obj before POST (#15298)

* feat: add Back button to extra options (#15300)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* first draft

* working

* added back button to create modal

* revisions and testing

* chore: Add tooltips and button to Connect Postgresql DB Modal Form (#15179)

* Added tooltips. Still need to place in the right spot.

* Revert to where I started.

* Added 3 tooltips, 1 Button(need link config). BigQuery not added yet.

* Added tooltip BigOuery modal. `span` above upload btn missing `*`

* Added tooltip to `Host` field. Alignment needs to be fixed.

* Stuck trying to add conditional render of tooltip to LabeledErrorBoundInput

* Clean commit for review

* Dynamic tooltip componet created. Needs alignment of SVG still.

* Fixed typo.

* Added line spacing back in

* Changed required props to optional/Remove comment

* Fixed alignment of tooltips & moved 2tooltips outside of Btn

* Added one more line space back in

* Removed Typo

* Removed another typo

* Flixed linter error

* Created test for tooltip.

* Added expectation for visible tooltipIcon

Co-authored-by: andrewbastian <andrewbastian@hosaka-deck.lan>

* style: Database Modal UI Polish (#15234)

* Corrected polishing tasks from Clubhouse ticket

* More UI polish

* Added more polish

* Moved encryption field and created constant value for viewBox in InfoToolTip

* feat: allow editing (#15308)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* elizabeth fixed the edit issue

* feat: Added error alert for DB connection Modal  (#15242)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* added errorAlert

* added revisions

* current work

* revisions

* fix: validation on edit (#15310)

* fix: Big Query Error messaging (#15334)

* remove validation check

* remove validation check

* fix error messaging

* stop validation on big query

* add condition for skipping specific engines for validation

* if no params

* update styles

* feat: big Query using back button (#15338)

* fix: password errors on validation (#15372)

* filter out password supply for validation

* filter password

* feat: updated Error Alert (#15377)

* Updated styling (#15379)

* fix password error filter

* feat: Arash/password field error (#15388)

* fix: Back Button on Create for DB conncetion (#15389)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* fixing backButton on Create

* fix doc (#15393)

* style: Database Connection Modal UI Polish R5 (#15412)

* Fixed inconsistent header spacing in step 1

* Touched up tooltips

* Added red *s to BigQuery form

* Centered modal window

* make alerts configurable (#15404)

* fix: Allow users to override database connection docs (#15434)

* allow users to override docs

* fix linting issue

* fix: Error Icon not showing up on  errored input fieds on validation (#15431)

* Fixed now-show error icon

Signed-off-by: andrewbastian <andrew.bastian@gmail.com>

* Changed `%` to `px`

* Fixed lint error

* Changed units to `theme.gridUnit`

* test: RTL testing on DatabaseModal (#15394)

* RTL testing on DatabaseModal

* Continued RTL testing on DatabaseModal

* Code cleanup

* Removed a comment that missed my radar

* test: Add e2e testing (#15376)

* create boilerplate for cypress test

* added 1 more test

* add more test cases

* saving this for development

* lit

* remove name

* update pass

* remove unused test

* fix merge conflicts

* Fixed "connetion" typo (#15458)

* fix: Database connection modal touch up (#15463)

* Removed unnecessary TODO and named the remaining ones

* Added translation functionality

* Fixed typo in Database Modal RTL test

* Update modal.test.ts

* fix: Showing errors for SQLA forms (#15462)

* fix documentation links

* fix sqlalchemy onCreate

* Fixing SQLA error messaging

* fix logic for extra save

* fix this issue

* fix: Update Invalid Port SIP-40 Reference (#15464)

* Fixed jumpy header text

* fix: Edit Modal not saving properly (#15468)

* Aligned info icons on dynamic form

* fix: merge conflict (#15479)

* chore: simplify errors and issue codes (#15437)

* Fix issue number

* Fix test

* Fixed line-height in header, also fixed translation functions in BigQuery

* Updated placeholder text in additional params field

* Fixed padding in edit form

* Corrected placeholder text in BigQuery > Service Account field

* Make linter happy

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: hughhhh <hughmil3s@gmail.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: simcha90 <56388545+simcha90@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Einat Bertenthal <einatbar@users.noreply.github.com>
Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Andrew Bastian <50464395+andrewbastian@users.noreply.github.com>
Co-authored-by: andrewbastian <andrewbastian@hosaka-deck.lan>
zhaoyongjie pushed a commit that referenced this pull request Nov 24, 2021
* [monorepo] initial attempt at travis

* [monorepo] coveralls => codecov

* [monorepo] don't lerna bootstrap?

* [monorepo] ignore lock files, add lint:fix script

* [core] add node-fetch dev dep

* [monorepo] tweak codecov call

* [monorepo] tweak codecov call take ii

* [monorepo] codecov again

* [core][deps] build-config@^0.0.11

* [core][jest] add <rootDir> to coveragePathIgnorePatterns paths

* [core][jest] add collectCoverageFrom config

* [core][jest] try adding rootDir to collectCoverageFrom glob

* [core][deps] build-config@0.0.12

* [travis] yolo

* [travis] this is the one

* [travis] install global codecov

* [travis] no quotes in yml

* [travis] no quotes in yml part 2
zhaoyongjie pushed a commit that referenced this pull request Nov 25, 2021
* [monorepo] initial attempt at travis

* [monorepo] coveralls => codecov

* [monorepo] don't lerna bootstrap?

* [monorepo] ignore lock files, add lint:fix script

* [core] add node-fetch dev dep

* [monorepo] tweak codecov call

* [monorepo] tweak codecov call take ii

* [monorepo] codecov again

* [core][deps] build-config@^0.0.11

* [core][jest] add <rootDir> to coveragePathIgnorePatterns paths

* [core][jest] add collectCoverageFrom config

* [core][jest] try adding rootDir to collectCoverageFrom glob

* [core][deps] build-config@0.0.12

* [travis] yolo

* [travis] this is the one

* [travis] install global codecov

* [travis] no quotes in yml

* [travis] no quotes in yml part 2
zhaoyongjie pushed a commit that referenced this pull request Nov 26, 2021
* [monorepo] initial attempt at travis

* [monorepo] coveralls => codecov

* [monorepo] don't lerna bootstrap?

* [monorepo] ignore lock files, add lint:fix script

* [core] add node-fetch dev dep

* [monorepo] tweak codecov call

* [monorepo] tweak codecov call take ii

* [monorepo] codecov again

* [core][deps] build-config@^0.0.11

* [core][jest] add <rootDir> to coveragePathIgnorePatterns paths

* [core][jest] add collectCoverageFrom config

* [core][jest] try adding rootDir to collectCoverageFrom glob

* [core][deps] build-config@0.0.12

* [travis] yolo

* [travis] this is the one

* [travis] install global codecov

* [travis] no quotes in yml

* [travis] no quotes in yml part 2
zhaoyongjie pushed a commit that referenced this pull request Nov 30, 2021
* fix: remove storybook dependency

* fix: update node
villebro pushed a commit that referenced this pull request Apr 25, 2022
aminghadersohi added a commit that referenced this pull request May 26, 2026
- Register report model type in get_schema (Fix #1): add _get_report_schema_core
  factory + "report" entry in _SCHEMA_CORE_FACTORIES; ModelType now includes "report"
- Add OwnedByMeMixin/CreatedByMeMixin to ListReportsRequest (Fix #2)
- DRY up list_reports.py column constants (Fix #3): import REPORT_* constants and
  get_report_columns from schema_discovery; pass created_by_me/owned_by_me to run_tool
- Extend test coverage (Fix #6): humanized timestamp fields, invalid order_column
  guard, owned_by_me/created_by_me DAO filter injection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
aminghadersohi added a commit that referenced this pull request May 30, 2026
- Register report model type in get_schema (Fix #1): add _get_report_schema_core
  factory + "report" entry in _SCHEMA_CORE_FACTORIES; ModelType now includes "report"
- Add OwnedByMeMixin/CreatedByMeMixin to ListReportsRequest (Fix #2)
- DRY up list_reports.py column constants (Fix #3): import REPORT_* constants and
  get_report_columns from schema_discovery; pass created_by_me/owned_by_me to run_tool
- Extend test coverage (Fix #6): humanized timestamp fields, invalid order_column
  guard, owned_by_me/created_by_me DAO filter injection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
aminghadersohi added a commit that referenced this pull request May 31, 2026
- Register report model type in get_schema (Fix #1): add _get_report_schema_core
  factory + "report" entry in _SCHEMA_CORE_FACTORIES; ModelType now includes "report"
- Add OwnedByMeMixin/CreatedByMeMixin to ListReportsRequest (Fix #2)
- DRY up list_reports.py column constants (Fix #3): import REPORT_* constants and
  get_report_columns from schema_discovery; pass created_by_me/owned_by_me to run_tool
- Extend test coverage (Fix #6): humanized timestamp fields, invalid order_column
  guard, owned_by_me/created_by_me DAO filter injection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 5, 2026
…e-shadow helper

The literal set ``{"transaction_id", "end_transaction_id",
"operation_type"}`` — Continuum's per-shadow-row bookkeeping columns —
appeared at four call sites, three of them with the same shape:
build a ``col_values`` dict from a live row excluding the bookkeeping
columns, then set the bookkeeping columns explicitly to mint a
synthetic ``operation_type=0`` baseline shadow row.

* Name the set as ``CONTINUUM_BOOKKEEPING_COLUMNS`` in ``baseline.py``.
* Extract the build-and-insert pattern into
  ``_insert_baseline_shadow_row(conn, version_table, source_row, tx_id)``.
  The three baseline-write sites in ``baseline.py`` (parent shadow,
  generic child shadow, slice shadow) collapse to one-line calls; the
  one filter use in ``changes.py`` imports and reuses the named set.

Surfaced by tidy-first review (#3 — "Explanatory Constant + helper").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 5, 2026
``superset.versioning.changes`` was a 897-LOC single module that
admitted its own internal structure via banner-comment dividers.
Split it into four submodules along those existing boundaries:

* ``changes/table.py`` (~85 LOC) — the ``version_changes_table``
  ``sa.Table`` definition plus the ``_ENTITY_KIND_BY_CLASS_NAME``
  mapping. Schema-only; no logic.
* ``changes/state.py`` (~210 LOC) — per-entity diff dispatch:
  ``_jsonable`` JSON-safety coercion, ``_orm_to_post_state``,
  ``_read_pre_state``, ``_compute_records_for_entity`` (string-dispatch
  to ``diff_slice`` / ``diff_dashboard`` / ``diff_dataset``),
  ``_bulk_insert_records``, and the cached scalar-field set.
* ``changes/shadow_queries.py`` (~225 LOC) — Continuum shadow-table
  reads for child-collection diffs: ``_shadow_rows_valid_at``,
  ``_affected_{dataset,dashboard}_ids_at_tx``,
  ``_{dataset,dashboard}_child_records_for_tx_from_shadows``,
  ``_dashboard_slice_uuids_at_tx``.
* ``changes/listener.py`` (~290 LOC) — the SQLAlchemy event listener
  machinery: ``register_change_record_listener`` (public), the four
  flush/commit/rollback handlers, ``ACTION_KIND_KEY`` and the buffer-
  key constants, the per-tx action-kind stamper.

``changes/__init__.py`` re-exports the five symbols imported across
package boundaries (``ACTION_KIND_KEY``, ``register_change_record_listener``,
``version_changes_table``, ``_ENTITY_KIND_BY_CLASS_NAME``,
``_shadow_rows_valid_at``), so every existing
``from superset.versioning.changes import …`` site continues to work
without change.

Listener registration order — load-bearing per SIP-210 — is
preserved: the four ``event.listen`` calls in
``register_change_record_listener`` keep the same order, and the
function itself is unchanged apart from its file location.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 5, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
…e-shadow helper

The literal set ``{"transaction_id", "end_transaction_id",
"operation_type"}`` — Continuum's per-shadow-row bookkeeping columns —
appeared at four call sites, three of them with the same shape:
build a ``col_values`` dict from a live row excluding the bookkeeping
columns, then set the bookkeeping columns explicitly to mint a
synthetic ``operation_type=0`` baseline shadow row.

* Name the set as ``CONTINUUM_BOOKKEEPING_COLUMNS`` in ``baseline.py``.
* Extract the build-and-insert pattern into
  ``_insert_baseline_shadow_row(conn, version_table, source_row, tx_id)``.
  The three baseline-write sites in ``baseline.py`` (parent shadow,
  generic child shadow, slice shadow) collapse to one-line calls; the
  one filter use in ``changes.py`` imports and reuses the named set.

Surfaced by tidy-first review (#3 — "Explanatory Constant + helper").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
``superset.versioning.changes`` was a 897-LOC single module that
admitted its own internal structure via banner-comment dividers.
Split it into four submodules along those existing boundaries:

* ``changes/table.py`` (~85 LOC) — the ``version_changes_table``
  ``sa.Table`` definition plus the ``_ENTITY_KIND_BY_CLASS_NAME``
  mapping. Schema-only; no logic.
* ``changes/state.py`` (~210 LOC) — per-entity diff dispatch:
  ``_jsonable`` JSON-safety coercion, ``_orm_to_post_state``,
  ``_read_pre_state``, ``_compute_records_for_entity`` (string-dispatch
  to ``diff_slice`` / ``diff_dashboard`` / ``diff_dataset``),
  ``_bulk_insert_records``, and the cached scalar-field set.
* ``changes/shadow_queries.py`` (~225 LOC) — Continuum shadow-table
  reads for child-collection diffs: ``_shadow_rows_valid_at``,
  ``_affected_{dataset,dashboard}_ids_at_tx``,
  ``_{dataset,dashboard}_child_records_for_tx_from_shadows``,
  ``_dashboard_slice_uuids_at_tx``.
* ``changes/listener.py`` (~290 LOC) — the SQLAlchemy event listener
  machinery: ``register_change_record_listener`` (public), the four
  flush/commit/rollback handlers, ``ACTION_KIND_KEY`` and the buffer-
  key constants, the per-tx action-kind stamper.

``changes/__init__.py`` re-exports the five symbols imported across
package boundaries (``ACTION_KIND_KEY``, ``register_change_record_listener``,
``version_changes_table``, ``_ENTITY_KIND_BY_CLASS_NAME``,
``_shadow_rows_valid_at``), so every existing
``from superset.versioning.changes import …`` site continues to work
without change.

Listener registration order — load-bearing per SIP-210 — is
preserved: the four ``event.listen`` calls in
``register_change_record_listener`` keep the same order, and the
function itself is unchanged apart from its file location.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
…e-shadow helper

The literal set ``{"transaction_id", "end_transaction_id",
"operation_type"}`` — Continuum's per-shadow-row bookkeeping columns —
appeared at four call sites, three of them with the same shape:
build a ``col_values`` dict from a live row excluding the bookkeeping
columns, then set the bookkeeping columns explicitly to mint a
synthetic ``operation_type=0`` baseline shadow row.

* Name the set as ``CONTINUUM_BOOKKEEPING_COLUMNS`` in ``baseline.py``.
* Extract the build-and-insert pattern into
  ``_insert_baseline_shadow_row(conn, version_table, source_row, tx_id)``.
  The three baseline-write sites in ``baseline.py`` (parent shadow,
  generic child shadow, slice shadow) collapse to one-line calls; the
  one filter use in ``changes.py`` imports and reuses the named set.

Surfaced by tidy-first review (#3 — "Explanatory Constant + helper").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
``superset.versioning.changes`` was a 897-LOC single module that
admitted its own internal structure via banner-comment dividers.
Split it into four submodules along those existing boundaries:

* ``changes/table.py`` (~85 LOC) — the ``version_changes_table``
  ``sa.Table`` definition plus the ``_ENTITY_KIND_BY_CLASS_NAME``
  mapping. Schema-only; no logic.
* ``changes/state.py`` (~210 LOC) — per-entity diff dispatch:
  ``_jsonable`` JSON-safety coercion, ``_orm_to_post_state``,
  ``_read_pre_state``, ``_compute_records_for_entity`` (string-dispatch
  to ``diff_slice`` / ``diff_dashboard`` / ``diff_dataset``),
  ``_bulk_insert_records``, and the cached scalar-field set.
* ``changes/shadow_queries.py`` (~225 LOC) — Continuum shadow-table
  reads for child-collection diffs: ``_shadow_rows_valid_at``,
  ``_affected_{dataset,dashboard}_ids_at_tx``,
  ``_{dataset,dashboard}_child_records_for_tx_from_shadows``,
  ``_dashboard_slice_uuids_at_tx``.
* ``changes/listener.py`` (~290 LOC) — the SQLAlchemy event listener
  machinery: ``register_change_record_listener`` (public), the four
  flush/commit/rollback handlers, ``ACTION_KIND_KEY`` and the buffer-
  key constants, the per-tx action-kind stamper.

``changes/__init__.py`` re-exports the five symbols imported across
package boundaries (``ACTION_KIND_KEY``, ``register_change_record_listener``,
``version_changes_table``, ``_ENTITY_KIND_BY_CLASS_NAME``,
``_shadow_rows_valid_at``), so every existing
``from superset.versioning.changes import …`` site continues to work
without change.

Listener registration order — load-bearing per SIP-210 — is
preserved: the four ``event.listen`` calls in
``register_change_record_listener`` keep the same order, and the
function itself is unchanged apart from its file location.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 11, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 12, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 12, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
…e-shadow helper

The literal set ``{"transaction_id", "end_transaction_id",
"operation_type"}`` — Continuum's per-shadow-row bookkeeping columns —
appeared at four call sites, three of them with the same shape:
build a ``col_values`` dict from a live row excluding the bookkeeping
columns, then set the bookkeeping columns explicitly to mint a
synthetic ``operation_type=0`` baseline shadow row.

* Name the set as ``CONTINUUM_BOOKKEEPING_COLUMNS`` in ``baseline.py``.
* Extract the build-and-insert pattern into
  ``_insert_baseline_shadow_row(conn, version_table, source_row, tx_id)``.
  The three baseline-write sites in ``baseline.py`` (parent shadow,
  generic child shadow, slice shadow) collapse to one-line calls; the
  one filter use in ``changes.py`` imports and reuses the named set.

Surfaced by tidy-first review (#3 — "Explanatory Constant + helper").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
``superset.versioning.changes`` was a 897-LOC single module that
admitted its own internal structure via banner-comment dividers.
Split it into four submodules along those existing boundaries:

* ``changes/table.py`` (~85 LOC) — the ``version_changes_table``
  ``sa.Table`` definition plus the ``_ENTITY_KIND_BY_CLASS_NAME``
  mapping. Schema-only; no logic.
* ``changes/state.py`` (~210 LOC) — per-entity diff dispatch:
  ``_jsonable`` JSON-safety coercion, ``_orm_to_post_state``,
  ``_read_pre_state``, ``_compute_records_for_entity`` (string-dispatch
  to ``diff_slice`` / ``diff_dashboard`` / ``diff_dataset``),
  ``_bulk_insert_records``, and the cached scalar-field set.
* ``changes/shadow_queries.py`` (~225 LOC) — Continuum shadow-table
  reads for child-collection diffs: ``_shadow_rows_valid_at``,
  ``_affected_{dataset,dashboard}_ids_at_tx``,
  ``_{dataset,dashboard}_child_records_for_tx_from_shadows``,
  ``_dashboard_slice_uuids_at_tx``.
* ``changes/listener.py`` (~290 LOC) — the SQLAlchemy event listener
  machinery: ``register_change_record_listener`` (public), the four
  flush/commit/rollback handlers, ``ACTION_KIND_KEY`` and the buffer-
  key constants, the per-tx action-kind stamper.

``changes/__init__.py`` re-exports the five symbols imported across
package boundaries (``ACTION_KIND_KEY``, ``register_change_record_listener``,
``version_changes_table``, ``_ENTITY_KIND_BY_CLASS_NAME``,
``_shadow_rows_valid_at``), so every existing
``from superset.versioning.changes import …`` site continues to work
without change.

Listener registration order — load-bearing per SIP-210 — is
preserved: the four ``event.listen`` calls in
``register_change_record_listener`` keep the same order, and the
function itself is unchanged apart from its file location.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
``superset.versioning.activity`` was a 1358-LOC single module whose
own banner-comment dividers (``# ---- T004 ... # ---- T013``) admitted
internal structure. Split along those existing boundaries into seven
submodules:

* ``activity/kinds.py`` (~120 LOC) — kind translation tables,
  ``Window`` / ``EntityWindows`` type aliases, ``_NOT_FOUND_EXC``
  per-kind exception mapping, ``_NAME_COLUMN`` shadow-column lookup,
  and ``_load_shadow_model`` shadow-class loader.
* ``activity/scope.py`` (~190 LOC) — pure window arithmetic
  (``_intersect_windows`` / ``_union_windows`` /
  ``_row_within_any_window``) and scope resolution
  (``_resolve_scope`` / ``_resolve_{dashboard,chart,related}_scope`` /
  ``_merge_entity_windows``).
* ``activity/queries.py`` (~430 LOC) — every DB-touching helper:
  ``_resolve_path_entity``, Phase A relationship walks
  (``_charts_attached_to_dashboard`` / ``_datasets_used_by_chart`` /
  ``_batch_datasets_used_by_charts``), Phase B change-record fetch
  (``_fetch_change_records`` / ``_select_change_rows_for_kinds``),
  name denormalization (``_resolve_names_for_kind`` /
  ``_denormalize_entity_names``), and tombstone state
  (``_check_entity_tombstones``).
* ``activity/impact.py`` (~160 LOC) — per-record impact-count
  (``_collect_impact_pairs`` / ``_batch_chart_counts`` /
  ``_impact_for_record``).
* ``activity/visibility.py`` (~165 LOC) — the AV-008 silent visibility
  filter (``_filter_records_by_visibility`` / ``_resolve_visibility``).
* ``activity/render.py`` (~210 LOC) — record decoration
  (``_decorate_records`` / ``_lookup_entity_uuids`` /
  ``_build_summary`` / ``_changed_by_dict`` / ``_SUMMARY_VERBS``).
* ``activity/orchestrator.py`` (~280 LOC) — public ``get_activity``,
  ``parse_activity_query_params`` + the per-param parsers,
  ``ActivityParamsError``, plus the T037/T038 observability
  instrumentation (``_phase_timer`` / ``_emit_request_shape_attributes``
  / ``_METRIC_PREFIX``).

``activity/__init__.py`` re-exports 47 symbols — every name imported
across package boundaries (public API + test-private names tested by
``test_activity.py`` + the ``activity_module.<name>``-style attribute
access used by the three ``/activity/`` endpoint callers). External
callers don't need import-path changes.

``PathEntityResponseError`` and ``resolve_endpoint_path_entity`` are
re-exported from :mod:`superset.versioning.api_helpers` (where they
live alongside the ``/versions/`` endpoint handlers) so the
``activity_module.<name>``-style call sites in ``charts/api.py`` /
``dashboards/api.py`` / ``datasets/api.py`` keep working.

Smoke-tested in the running container: all 47 re-exported names
import cleanly via ``from superset.versioning.activity import ...``.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
…e-shadow helper

The literal set ``{"transaction_id", "end_transaction_id",
"operation_type"}`` — Continuum's per-shadow-row bookkeeping columns —
appeared at four call sites, three of them with the same shape:
build a ``col_values`` dict from a live row excluding the bookkeeping
columns, then set the bookkeeping columns explicitly to mint a
synthetic ``operation_type=0`` baseline shadow row.

* Name the set as ``CONTINUUM_BOOKKEEPING_COLUMNS`` in ``baseline.py``.
* Extract the build-and-insert pattern into
  ``_insert_baseline_shadow_row(conn, version_table, source_row, tx_id)``.
  The three baseline-write sites in ``baseline.py`` (parent shadow,
  generic child shadow, slice shadow) collapse to one-line calls; the
  one filter use in ``changes.py`` imports and reuses the named set.

Surfaced by tidy-first review (#3 — "Explanatory Constant + helper").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mikebridge referenced this pull request in mikebridge/superset Jun 15, 2026
``superset.versioning.changes`` was a 897-LOC single module that
admitted its own internal structure via banner-comment dividers.
Split it into four submodules along those existing boundaries:

* ``changes/table.py`` (~85 LOC) — the ``version_changes_table``
  ``sa.Table`` definition plus the ``_ENTITY_KIND_BY_CLASS_NAME``
  mapping. Schema-only; no logic.
* ``changes/state.py`` (~210 LOC) — per-entity diff dispatch:
  ``_jsonable`` JSON-safety coercion, ``_orm_to_post_state``,
  ``_read_pre_state``, ``_compute_records_for_entity`` (string-dispatch
  to ``diff_slice`` / ``diff_dashboard`` / ``diff_dataset``),
  ``_bulk_insert_records``, and the cached scalar-field set.
* ``changes/shadow_queries.py`` (~225 LOC) — Continuum shadow-table
  reads for child-collection diffs: ``_shadow_rows_valid_at``,
  ``_affected_{dataset,dashboard}_ids_at_tx``,
  ``_{dataset,dashboard}_child_records_for_tx_from_shadows``,
  ``_dashboard_slice_uuids_at_tx``.
* ``changes/listener.py`` (~290 LOC) — the SQLAlchemy event listener
  machinery: ``register_change_record_listener`` (public), the four
  flush/commit/rollback handlers, ``ACTION_KIND_KEY`` and the buffer-
  key constants, the per-tx action-kind stamper.

``changes/__init__.py`` re-exports the five symbols imported across
package boundaries (``ACTION_KIND_KEY``, ``register_change_record_listener``,
``version_changes_table``, ``_ENTITY_KIND_BY_CLASS_NAME``,
``_shadow_rows_valid_at``), so every existing
``from superset.versioning.changes import …`` site continues to work
without change.

Listener registration order — load-bearing per SIP-210 — is
preserved: the four ``event.listen`` calls in
``register_change_record_listener`` keep the same order, and the
function itself is unchanged apart from its file location.

Surfaced by clean-code-review (#3) and tidy-first-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@onheap onheap mentioned this pull request Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🏷️ bot A label used by `supersetbot` to keep track of which PR where auto-tagged with release labels 🚢 0.2.0 First shipped in 0.2.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant