issue_comments
616 rows where author_association = "CONTRIBUTOR" sorted by updated_at descending
This data as json, CSV (advanced)
Suggested facets: body, created_at (date), updated_at (date)
issue 330
- Upgrade to CodeMirror 6, add SQL autocomplete 21
- feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 14
- Database page loads too slowly with many large tables (due to table counts) 13
- Stream all results for arbitrary SQL and canned queries 10
- docker image is duplicating db files somehow 10
- Handle spatialite geometry columns better 7
- base_url configuration setting 7
- Exceeding Cloud Run memory limits when deploying a 4.8G database 7
- create-index should run analyze after creating index 7
- Add new spatialite helper methods 7
- Add register_output_renderer hook 6
- Helper methods for working with SpatiaLite 6
- Plugin hook for dynamic metadata 6
- clean checkout & clean environment has test failures 6
- [WIP] Add publish to heroku support 5
- Scripted exports 5
- datasette publish lambda plugin 4
- Build Dockerfile with recent Sqlite + Spatialite 4
- Documentation with recommendations on running Datasette in production without using Docker 4
- bpylist.archiver.CircularReference: archive has a cycle with uid(13) 4
- Add insert --truncate option 4
- Make it easier to insert geometries, with documentation and maybe code 4
- Advanced class-based `conversions=` mechanism 4
- query result page is using 400mb of browser memory 40x size of html page and 400x size of csv data 4
- Proposal: datasette query 4
- Writable canned queries fail with useless non-error against immutable databases 4
- Ability to merge databases and tables 4
- API to insert a single record into an existing table 4
- Exclude virtual tables from datasette inspect 4
- Call for birthday presents: if you're using Datasette, let us know how you're using it here 4
- array facet: don't materialize unnecessary columns 4
- Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File 4
- Ship a Docker image of the whole thing 3
- Support for units 3
- Don't duplicate simple primary keys in the link column 3
- Add version number support with Versioneer 3
- Integration with JupyterLab 3
- Datasette Library 3
- Exposing Datasette via Jupyter-server-proxy 3
- Don't auto-format SQL on page load 3
- Try out ExifReader 3
- Consider dropping explicit CSRF protection entirely? 3
- Handle case where subsequent records (after first batch) include extra columns 3
- For 1.0 update trove classifier in setup.py 3
- Support linking to compound foreign keys 3
- register_output_renderer() should support streaming data 3
- Feature or Documentation Request: Individual table as home page template 3
- Make row available to `render_cell` plugin hook 3
- Serve all db files in a folder 3
- Allow routes to have extra options 3
- Datasette feature for publishing snapshots of query results 3
- CLI eats my cursor 3
- don't use immutable=1, only mode=ro 3
- Datasette is not compatible with SQLite's strict quoting compilation option 3
- Plugin system 3
- De-tangling Metadata before Datasette 1.0 3
- Dockerfile should build more recent SQLite with FTS5 and spatialite support 2
- Add NHS England Hospitals example to wiki 2
- add support for ?field__isnull=1 2
- Travis should push tagged images to Docker Hub for each release 2
- Column types in inspected metadata 2
- "datasette publish cloudrun" command to publish to Google Cloud Run 2
- [WIP] Add primary key to the extra_body_script hook arguments 2
- Define mechanism for plugins to return structured data 2
- Rename metadata.json to config.json 2
- Mechanism for turning nested JSON into foreign keys / many-to-many 2
- Every datasette plugin on the ecosystem page should have a screenshot 2
- Fix static mounts using relative paths and prevent traversal exploits 2
- Handle spaces in DB names 2
- allow leading comments in SQL input field 2
- Test failures on openSUSE 15.1: AssertionError: Explicit other_table and other_column 2
- base_url doesn't entirely work for running Datasette inside Binder 2
- Option to automatically configure based on directory layout 2
- Expose scores from ZCOMPUTEDASSETATTRIBUTES 2
- Incorrect URLs when served behind a proxy with base_url set 2
- Skip counting hidden tables 2
- asgi_wrapper plugin hook is crashing at startup 2
- Improved (and better documented) support for transactions 2
- insert_all(..., alter=True) should work for new columns introduced after the first 100 records 2
- datasette.urls.static_plugins(...) method 2
- Refactor .csv to be an output renderer - and teach register_output_renderer to stream all rows 2
- Fix footer not sticking to bottom in short pages 2
- Remove unneeded exists=True for -a/--auth flag. 2
- Improve the display of facets information 2
- Archive import appears to be broken on recent exports 2
- Fix archive imports 2
- Ability for plugins to collaborate when adding extra HTML to blocks in default templates 2
- Use Data from SQLite in other commands 2
- Tests are very slow. 2
- Installing datasette via docker: Path 'fixtures.db' does not exist 2
- Async support 2
- Better default display of arrays of items 2
- Dockerfile: use Ubuntu 20.10 as base 2
- DRAFT: A new plugin hook for dynamic metadata 2
- unordered list is not rendering bullet points in description_html on database page 2
- `publish cloudrun` should deploy a more recent SQLite version 2
- Rename Datasette.__init__(config=) parameter to settings= 2
- base logo link visits `undefined` rather than href url 2
- Update pyyaml requirement from ~=5.3 to >=5.3,<7.0 2
- Add new `"sql_file"` key to Canned Queries in metadata? 2
- Writable canned queries fail to load custom templates 2
- Redesign CSV export to improve usability 2
- Allow to set `facets_array` in metadata (like current `facets`) 2
- if csv export is truncated in non streaming mode set informative response header 2
- Add SpatiaLite helpers to CLI 2
- Document how to add a primary key to a rowid table using `sqlite-utils transform --pk` 2
- Add SpatiaLite helpers to CLI 2
- `with db:` for transactions 2
- [plugins][documentation] Is it possible to serve per-plugin static folders when writing one-off (single file) plugins? 2
- ?_trace=1 fails with datasette-geojson for some reason 2
- Utilities for duplicating tables and creating a table with the results of a query 2
- feature request: pivot command 2
- google cloudrun updated their limits on maxscale based on memory and cpu count 2
- Add new entrypoint option to `--load-extension` 2
- SITE-BUSTING ERROR: "render_template() called before await ds.invoke_startup()" 2
- [insert_all, upsert_all] IntegrityError: constraint failed 2
- Clicking within the CodeMirror area below the SQL (i.e. when there's only a single line) doesn't cause the editor to get focused 2
- render_cell plugin hook's row object is not a sqlite.Row 2
- Show referring tables and rows when the referring foreign key is compound 2
- Repeated calls to `Table.convert()` fail 2
- Add paths for homebrew on Apple silicon 2
- Aliased ROWID option for tables created from alter=True commands 2
- Plugin hook for adding new output formats 2
- Bump sphinx, furo, blacken-docs dependencies 2
- Fix query for suggested facets with column named value 2
- Datasette Plugins 1
- Ability to plot a simple graph 1
- :fire: Removes DS_Store 1
- Consider data-package as a format for metadata 1
- Plot rows on a map with Leaflet and Leaflet.markercluster 1
- Ability to bundle and serve additional static files 1
- Document the querystring argument for setting a different time limit 1
- datasette skeleton command for kick-starting database and table metadata 1
- More metadata options for template authors 1
- Hide Spatialite system tables 1
- Raise 404 on nonexistent table URLs 1
- Support filtering with units and more 1
- Figure out a way to have /-/version return current git commit hash 1
- inspect should record column types 1
- Render boolean fields better by default 1
- datasette publish heroku fails without name provided 1
- Default built image size over Zeit Now 100MiB limit 1
- Interface should show same JSON shape options for custom SQL queries 1
- datasette publish digitalocean plugin 1
- Linked Data(sette) 1
- Default to opening files in mutable mode, special option for immutable files 1
- ?_where=sql-fragment parameter for table views 1
- Datasette doesn't reload when database file changes 1
- Refactor facets to a class and new plugin, refs #427 1
- Add inspect and prepare_sanic hooks 1
- Coalesce hidden table count to 0 1
- Installing installs the tests package 1
- Exporting sqlite database(s)? 1
- Get Datasette tests passing on Windows in GitHub Actions 1
- "about" parameter in metadata does not appear when alone 1
- Show total/unfiltered row count when filtering 1
- "Too many SQL variables" on large inserts 1
- First proof-of-concept of Datasette Library 1
- Escape the table name in populate_fts and search. 1
- Add triggers while enabling FTS 1
- importing CSV to SQLite as library 1
- Databases on index page should display in order they were passed to "datasette serve"? 1
- Offer to format readonly SQL 1
- `import` command fails on empty files 1
- updating metadata.json without recreating the app 1
- Provide a cookiecutter template for creating new plugins 1
- Validate metadata json on startup 1
- Display of the column definitions 1
- Use inspect-file, if possible, for total row count 1
- --reload sould reload server if code in --plugins-dir changes 1
- Import EXIF data into SQLite - lens used, ISO, aperture etc 1
- Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.12 1
- Replace "datasette publish --extra-options" with "--setting" 1
- sqlite3.OperationalError: too many SQL variables in insert_all when using rows with varying numbers of columns 1
- Import machine-learning detected labels (dog, llama etc) from Apple Photos 1
- Only install osxphotos if running on macOS 1
- Enable wildcard-searches by default 1
- Allow to specify a URL fragment for canned queries 1
- Redesign register_facet_classes plugin hook 1
- Having trouble getting writable canned queries to work 1
- sqlite-utils insert: options for column types 1
- Add pull requests 1
- Support column descriptions in metadata.json 1
- Update black requirement from ~=19.10b0 to >=19.10,<21.0 1
- Bug when first record contains fewer columns than subsequent records 1
- favorites --stop_after=N stops after min(N, 200) 1
- github-to-sqlite should handle rate limits better 1
- Wide tables should scroll horizontally within the page 1
- Update utils.py to fix sqlite3.OperationalError 1
- "Edit SQL" button on canned queries 1
- Include LICENSE in sdist 1
- Add template block prior to extra URL loaders 1
- Allow iterables other than Lists in m2m records 1
- changes to allow for compound foreign keys 1
- Accessing a database's `.json` is slow for very large SQLite files 1
- Fix --metadata doc usage 1
- --load-extension=spatialite not working with datasetteproject/datasette docker image 1
- Make it easier to theme Datasette with CSS 1
- Use YAML examples in documentation by default, not JSON 1
- Update for Big Sur 1
- Modernize code to Python 3.6+ 1
- Add Prettier to contributing documentation 1
- Mechanism for storing metadata in _metadata tables 1
- Prettier package not actually being cached 1
- Install Prettier via package.json 1
- ?_size=10 option for the arbitrary query page would be useful 1
- A lot of open(file) functions are used without a context manager thus producing ResourceWarning: unclosed file <_io.TextIOWrapper 1
- Use context manager instead of plain open 1
- photo-to-sqlite: command not found 1
- ensure immutable databses when starting in configuration directory mode with 1
- Ability to increase size of the SQL editor window 1
- Custom pages don't work with base_url setting 1
- Minor type in IP adress 1
- Allow canned query params to specify default values 1
- Plugin hook that could support 'order by random()' for table view 1
- Support for HTTP Basic Authentication 1
- Might there be some way to comment metadata.json? 1
- Ability to run CI against multiple SQLite versions 1
- improve table horizontal scroll experience 1
- Publishing to cloudrun with immutable mode? 1
- Bump black from 20.8b1 to 21.4b0 1
- Bump black from 20.8b1 to 21.4b1 1
- Bump black from 20.8b1 to 21.4b2 1
- Bump black from 21.4b2 to 21.5b0 1
- DRAFT: add test and scan for docker images 1
- Research: syntactic sugar for using --get with SQL queries, maybe "datasette query" 1
- Ensure db.path is a string before trying to insert into internal database 1
- Idea: import CSV to memory, run SQL, export in a single command 1
- Support db as first parameter before subcommand, or as environment variable 1
- Serve using UNIX domain socket 1
- "invalid reference format" publishing Docker image 1
- render_cell() hook should support returning an awaitable 1
- Bump black from 21.7b0 to 21.8b0 1
- Error: Use either --since or --since_id, not both - still broken 1
- Add scientists to target groups 1
- Test against 3.10-dev 1
- Bump black from 21.9b0 to 21.10b0 1
- Bump black from 21.9b0 to 21.11b0 1
- Deploy a live instance of demos/apache-proxy 1
- Support STRICT tables 1
- Command for creating an empty database 1
- Allow passing a file of code to "sqlite-utils convert" 1
- add hash id to "_memory" url if hashed url mode is turned on and crossdb is also turned on 1
- introduce new option for datasette package to use a slim base image 1
- when hashed urls are turned on, the _memory db has improperly long-lived cache expiry 1
- don't set far expiry if hash is '000' 1
- consider adding deletion step of cloudbuild artifacts to gcloud publish 1
- Maybe let plugins define custom serve options? 1
- Update pytest-asyncio requirement from <0.17,>=0.10 to >=0.10,<0.18 1
- Add KNN and data_licenses to hidden tables list 1
- Move canned queries closer to the SQL input area 1
- Try again with SQLite codemirror support 1
- Tweak mobile keyboard settings 1
- Support for generated columns 1
- Optional Pandas integration 1
- Mechanism for disabling faceting on large tables only 1
- Update jinja2 requirement from <3.1.0,>=2.10.3 to >=2.10.3,<3.2.0 1
- Bump black from 22.1.0 to 22.3.0 1
- Show foreign key label when filtering 1
- .extract() doesn't set foreign key when extracted columns contain NULL value 1
- Research: demonstrate if parallel SQL queries are worthwhile 1
- Bump furo from 2022.4.7 to 2022.6.4.1 1
- Reading rows from a file => AttributeError: '_io.StringIO' object has no attribute 'readinto' 1
- Mechanism for ensuring a table has all the columns 1
- Research an upgrade to CodeMirror 6 1
- search_sql add include_rank option 1
- Update aiofiles requirement from <0.9,>=0.4 to >=0.4,<22.2 1
- Featured table(s) on the homepage 1
- missing next and next_url in JSON responses from an instance deployed on Fly 1
- Expose `sql` and `params` arguments to various plugin hooks 1
- [SPIKE] Don't truncate query CSVs 1
- Tiny typographical error in install/uninstall docs 1
- fix: enable-fts permanently save triggers 1
- feat: recreate fts triggers after table transform 1
- API explorer tool 1
- conn.execute: UnicodeEncodeError: 'utf-8' codec can't encode character 1
- Allow surrogates in parameters 1
- Cannot enable FTS5 despite it being available 1
- Autocomplete text entry for filter values that correspond to facets 1
- Serve schema JSON to the SQL editor to enable autocomplete 1
- Incorrect link from the API explorer to the JSON API documentation 1
- /db/table/-/upsert 1
- Bump sphinx from 5.3.0 to 6.0.0 1
- rows_from_file() raises confusing error if file-like object is not in binary mode 1
- Bump sphinx from 5.3.0 to 6.1.0 1
- Bump sphinx from 5.3.0 to 6.1.1 1
- Document datasette.urls.row and row_blob 1
- Bump sphinx from 5.3.0 to 6.1.2 1
- Make CustomJSONEncoder a documented public API 1
- rewrite_sql hook 1
- Feature request: trim all leading and trailing white space for all columns for all tables in a database 1
- Bump black from 22.12.0 to 23.1.0 1
- Transformation type `--type DATETIME` 1
- `Table.convert()` skips falsey values 1
- Error: Invalid setting 'hash_urls' in settings.json in 0.64.1 1
- Microsoft line endings 1
- `datasette install -r requirements.txt` 1
- Bump furo from 2022.12.7 to 2023.3.23 1
- rows: --transpose or psql extended view-like functionality 1
- Bump sphinx from 6.1.3 to 6.2.0 1
- Bump sphinx from 6.1.3 to 6.2.1 1
- Bump sphinx from 6.1.3 to 7.0.0 1
- Bump sphinx from 6.1.3 to 7.0.1 1
- Bump furo from 2023.3.27 to 2023.5.20 1
- Filter table by a large bunch of ids 1
- Support storing incrementally piped values 1
- `--settings settings.json` option 1
- Bump blacken-docs from 1.14.0 to 1.15.0 1
- Tables starting with an underscore should be treated as hidden 1
- Bump sphinx from 6.1.3 to 7.1.0 1
- Bump furo from 2023.3.27 to 2023.7.26 1
- Bump sphinx from 6.1.3 to 7.1.1 1
- Bump sphinx from 6.1.3 to 7.1.2 1
- Bump the python-packages group with 1 update 1
- Bump the python-packages group with 2 updates 1
- Bump the python-packages group with 3 updates 1
- If a row has a primary key of `null` various things break 1
- Bump the python-packages group with 3 updates 1
- Fix hupper.start_reloader entry point 1
- Proposal: Make the `_internal` database persistent, customizable, and hidden 1
- Bump the python-packages group with 2 updates 1
- `datasette.yaml` plugin support 1
- Plugin Hooks for "compile to SQL" languages 1
- Raise an exception if a "plugins" block exists in metadata.json 1
- Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1
- Bump the python-packages group with 1 update 1
- Bump the python-packages group with 1 update 1
- No suggested facets when a column named 'value' is included 1
- Add more STRICT table support 1
- feature request: gzip compression of database downloads 1
user 67
- fgregg 82
- eyeseast 74
- russss 39
- dependabot[bot] 36
- abdusco 26
- asg017 25
- psychemedia 24
- bgrins 24
- mroswell 22
- chapmanjacobd 20
- cldellow 18
- brandonrobertz 15
- jacobian 14
- RhetTbull 14
- wragge 12
- rixx 11
- hydrosquall 11
- rgieseke 10
- bobwhitelock 9
- amjith 6
- jefftriplett 6
- tsibley 6
- simonwiles 6
- mcarpenter 6
- jaywgraves 6
- davidbgk 5
- dependabot-preview[bot] 5
- bollwyvl 4
- ctb 4
- r4vi 4
- jsfenfen 4
- glasnt 4
- kbaikov 4
- JBPressac 4
- benpickles 3
- ghing 3
- macropin 3
- blairdrummond 3
- kevindkeogh 3
- daniel-butler 3
- jayvdb 2
- ingenieroariel 2
- camallen 2
- gfrmin 2
- mcint 2
- frosencrantz 2
- adipasquale 2
- davidleejy 2
- raynae 2
- tkhattra 2
- MichaelTiemannOSC 2
- danp 1
- tomdyson 1
- adamwolf 1
- rubenv 1
- spookylukey 1
- aslakr 1
- meatcar 1
- mikepqr 1
- adamjonas 1
- louispotok 1
- chris48s 1
- eumiro 1
- rprimet 1
- mattiaborsoi 1
- abeyerpath 1
- b0b5h4rp13 1
reactions 7 ✖
- {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 589
- {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 20
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1} 2
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 2
- {"total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1} 1
- {"total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 1
- {"total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0} 1
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1843975536 | https://github.com/simonw/sqlite-utils/pull/604#issuecomment-1843975536 | https://api.github.com/repos/simonw/sqlite-utils/issues/604 | IC_kwDOCGYnMM5t6NVw | tkhattra 16437338 | 2023-12-07T01:17:05Z | 2023-12-07T01:17:05Z | CONTRIBUTOR | Apologies - I pushed a fix that addresses the mypy failures. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add more STRICT table support 2001006157 | |
1843072926 | https://github.com/simonw/datasette/issues/2213#issuecomment-1843072926 | https://api.github.com/repos/simonw/datasette/issues/2213 | IC_kwDOBm6k_c5t2w-e | fgregg 536941 | 2023-12-06T15:05:44Z | 2023-12-06T15:05:44Z | CONTRIBUTOR | it probably does not make sense to gzip large sqlite database files on the fly. it can take many seconds to gzip a large file and you either have to have this big thing in memory, or write it to disk, which some deployment environments will not like. i wonder if it would make sense to gzip the databases as part of the datasette publish process. it would be very cool to statically serve those as if they dynamically zipped (i.e. serve the filename example.db, not example.db.zip, and rely on the browser to expand). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feature request: gzip compression of database downloads 2028698018 | |
1815825863 | https://github.com/simonw/sqlite-utils/issues/344#issuecomment-1815825863 | https://api.github.com/repos/simonw/sqlite-utils/issues/344 | IC_kwDOCGYnMM5sO03H | tkhattra 16437338 | 2023-11-17T06:44:49Z | 2023-11-17T06:44:49Z | CONTRIBUTOR | hello Simon, I've added more STRICT table support per https://github.com/simonw/sqlite-utils/issues/344#issuecomment-982014776 in changeset https://github.com/simonw/sqlite-utils/commit/e4b9b582cdb4e48430865f8739f341bc8017c1e4. It also fixes table.transform() to preserve STRICT mode. Please pull if you deem appropriate. Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support STRICT tables 1066474200 | |
1812750369 | https://github.com/simonw/datasette/pull/2209#issuecomment-1812750369 | https://api.github.com/repos/simonw/datasette/issues/2209 | IC_kwDOBm6k_c5sDGAh | rgieseke 198537 | 2023-11-15T15:29:37Z | 2023-11-15T15:29:37Z | CONTRIBUTOR | Looks like tests are passing now but there is an issue with yaml loading and/or cog. https://github.com/simonw/datasette/actions/runs/6879299298/job/18710911166?pr=2209 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fix query for suggested facets with column named value 1994861266 | |
1812623778 | https://github.com/simonw/datasette/pull/2209#issuecomment-1812623778 | https://api.github.com/repos/simonw/datasette/issues/2209 | IC_kwDOBm6k_c5sCnGi | rgieseke 198537 | 2023-11-15T14:22:42Z | 2023-11-15T15:24:09Z | CONTRIBUTOR | Whoops, looks like I forgot to check for other places where the 'facetable' table is used in the tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fix query for suggested facets with column named value 1994861266 | |
1812617851 | https://github.com/simonw/datasette/issues/2208#issuecomment-1812617851 | https://api.github.com/repos/simonw/datasette/issues/2208 | IC_kwDOBm6k_c5sClp7 | rgieseke 198537 | 2023-11-15T14:18:58Z | 2023-11-15T14:18:58Z | CONTRIBUTOR | Without aliases: The proposed fix in #2209 also works when the 'value' column is actually facetable (just added another value in the 'value' column). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
No suggested facets when a column named 'value' is included 1994857251 | |
1801876943 | https://github.com/simonw/datasette/pull/2202#issuecomment-1801876943 | https://api.github.com/repos/simonw/datasette/issues/2202 | IC_kwDOBm6k_c5rZnXP | dependabot[bot] 49699333 | 2023-11-08T13:19:00Z | 2023-11-08T13:19:00Z | CONTRIBUTOR | Superseded by #2206. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 1 update 1959278971 | { "id": 29110, "slug": "dependabot", "node_id": "MDM6QXBwMjkxMTA=", "owner": { "login": "github", "id": 9919, "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github", "html_url": "https://github.com/github", "followers_url": "https://api.github.com/users/github/followers", "following_url": "https://api.github.com/users/github/following{/other_user}", "gists_url": "https://api.github.com/users/github/gists{/gist_id}", "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github/subscriptions", "organizations_url": "https://api.github.com/users/github/orgs", "repos_url": "https://api.github.com/users/github/repos", "events_url": "https://api.github.com/users/github/events{/privacy}", "received_events_url": "https://api.github.com/users/github/received_events", "type": "Organization", "site_admin": false }, "name": "Dependabot", "description": "", "external_url": "https://dependabot-api.githubapp.com", "html_url": "https://github.com/apps/dependabot", "created_at": "2019-04-16T22:34:25Z", "updated_at": "2023-10-12T13:35:09Z", "permissions": { "checks": "write", "contents": "write", "issues": "write", "members": "read", "metadata": "read", "pull_requests": "write", "statuses": "read", "vulnerability_alerts": "read", "workflows": "write" }, "events": [ "check_suite", "issues", "issue_comment", "label", "pull_request", "pull_request_review", "pull_request_review_comment", "repository" ] } |
1777228352 | https://github.com/simonw/datasette/pull/2200#issuecomment-1777228352 | https://api.github.com/repos/simonw/datasette/issues/2200 | IC_kwDOBm6k_c5p7lpA | dependabot[bot] 49699333 | 2023-10-24T13:40:25Z | 2023-10-24T13:40:25Z | CONTRIBUTOR | Superseded by #2202. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 1 update 1949756141 | |
1767219901 | https://github.com/simonw/datasette/issues/1655#issuecomment-1767219901 | https://api.github.com/repos/simonw/datasette/issues/1655 | IC_kwDOBm6k_c5pVaK9 | fgregg 536941 | 2023-10-17T21:29:03Z | 2023-10-17T21:29:03Z | CONTRIBUTOR | @yejiyang why don’t you move this discussion to my fork to spare simon’s notifications |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
query result page is using 400mb of browser memory 40x size of html page and 400x size of csv data 1163369515 | |
1766994810 | https://github.com/simonw/datasette/issues/1655#issuecomment-1766994810 | https://api.github.com/repos/simonw/datasette/issues/1655 | IC_kwDOBm6k_c5pUjN6 | fgregg 536941 | 2023-10-17T19:01:59Z | 2023-10-17T19:01:59Z | CONTRIBUTOR | hi @yejiyang, have your tried using my fork of datasette: https://github.com/fgregg/datasette/tree/no_limit_csv_publish |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
query result page is using 400mb of browser memory 40x size of html page and 400x size of csv data 1163369515 | |
1760401731 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760401731 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7ZlD | asg017 15178711 | 2023-10-12T21:41:42Z | 2023-10-12T21:41:42Z | CONTRIBUTOR | I dig it - I was thinking an Observable notebook where you paste your One thing to think about: If someone has comments in their original |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1747231893 | https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1747231893 | https://api.github.com/repos/simonw/sqlite-utils/issues/433 | IC_kwDOCGYnMM5oJKSV | spookylukey 62745 | 2023-10-04T16:15:09Z | 2023-10-04T16:28:21Z | CONTRIBUTOR | I confirm the bug, as above, and that @jonafato 's patch fixes it for me. However, it's not the right fix. The problem is that ProgressBar is being used in the wrong way. This also results in two lines being printed instead of one, like this:
```json { "version": "0.2.0", "configurations": [ { "name": "Python: Module", "type": "python", "request": "launch", "module": "sqlite_utils", "justMyCode": false, "args": ["insert", "test.db", "test", "--csv", "tests/sniff/example1.csv"] } ] } ``` [edit - deleted my analysis of why the current code is wrong, which was confused and confusing] |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI eats my cursor 1239034903 | |
1737363182 | https://github.com/simonw/datasette/pull/2155#issuecomment-1737363182 | https://api.github.com/repos/simonw/datasette/issues/2155 | IC_kwDOBm6k_c5njg7u | jaywgraves 418191 | 2023-09-27T13:05:41Z | 2023-09-27T13:05:41Z | CONTRIBUTOR | I'm hitting the #2123 issue and I just patched my local version with this and it seems to work fine. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fix hupper.start_reloader entry point 1865572575 | |
1729961503 | https://github.com/simonw/datasette/pull/2190#issuecomment-1729961503 | https://api.github.com/repos/simonw/datasette/issues/2190 | IC_kwDOBm6k_c5nHR4f | asg017 15178711 | 2023-09-21T16:56:57Z | 2023-09-21T16:56:57Z | CONTRIBUTOR | TODO: add similar checks for permissions/allow/canned queries |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Raise an exception if a "plugins" block exists in metadata.json 1901483874 | |
1722848454 | https://github.com/simonw/datasette/issues/2188#issuecomment-1722848454 | https://api.github.com/repos/simonw/datasette/issues/2188 | IC_kwDOBm6k_c5msJTG | asg017 15178711 | 2023-09-18T06:58:53Z | 2023-09-18T06:58:53Z | CONTRIBUTOR | Thinking about this more, here a list of things I imagine a "compile-to-sql" plugin would want to do:
1) and 2) would be difficult to do with current plugin hooks, unless we add the concept of "slots" and get the JS plugin support in. 3) could maybe be done with the So it really only sounds like extending the SQL editor will be the hard part. In #2094 I want to add JavaScript plugin hooks for extending the SQL editor, which may work here. If I get the time/motivation, I might try out a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin Hooks for "compile to SQL" languages 1900026059 | |
1722845490 | https://github.com/simonw/datasette/issues/1191#issuecomment-1722845490 | https://api.github.com/repos/simonw/datasette/issues/1191 | IC_kwDOBm6k_c5msIky | asg017 15178711 | 2023-09-18T06:55:52Z | 2023-09-18T06:55:52Z | CONTRIBUTOR | One note here: this feature could be called "slots", similar to Layout Slots in Vitepress. In Vitepress, you can add custom components/widget/gadgets into determined named "slots", like so:
Would be great to do in both Python and Javascript, with the upcoming JavaScript API #2052. In |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability for plugins to collaborate when adding extra HTML to blocks in default templates 787098345 | |
1719451803 | https://github.com/simonw/datasette/pull/2182#issuecomment-1719451803 | https://api.github.com/repos/simonw/datasette/issues/2182 | IC_kwDOBm6k_c5mfMCb | dependabot[bot] 49699333 | 2023-09-14T13:27:26Z | 2023-09-14T13:27:26Z | CONTRIBUTOR | Looks like these dependencies are updatable in another way, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 2 updates 1890593563 | |
1716801971 | https://github.com/simonw/datasette/pull/2183#issuecomment-1716801971 | https://api.github.com/repos/simonw/datasette/issues/2183 | IC_kwDOBm6k_c5mVFGz | asg017 15178711 | 2023-09-13T01:34:01Z | 2023-09-13T01:34:01Z | CONTRIBUTOR | @simonw docs are finished, this is ready for review! One thing: I added "Configuration" as a top-level item in the documentation site, at the very bottom. Not sure if this is the best, maybe it can be named "datasette.yaml Configuration" or something similar? Mostly because "Configuration" by itself can mean many things, but adding "datasette.yaml" would make it pretty clear it's about that specific file, and is easier to scan. I'd also be fine with using "datasette.yaml" instead of "datasette.json", since writing in YAML is much more forgiving (and advanced users will know JSON is also supported) Also, maybe this is a chance to consolidate the docs a bit? I think "Settings", "Configuration", "Metadata", and "Authentication and permissions" should possibly be under the same section. Maybe even consolidate the different Plugin pages that exist? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.yaml` plugin support 1891212159 | |
1700291967 | https://github.com/simonw/datasette/issues/2157#issuecomment-1700291967 | https://api.github.com/repos/simonw/datasette/issues/2157 | IC_kwDOBm6k_c5lWGV_ | asg017 15178711 | 2023-08-31T02:45:56Z | 2023-08-31T02:45:56Z | CONTRIBUTOR | @simonw what do you think about adding a My rationale: some plugins may require, or strongly encourage, a persistent internal database ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Make the `_internal` database persistent, customizable, and hidden 1865869205 | |
1696591957 | https://github.com/simonw/datasette/pull/2148#issuecomment-1696591957 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5lH_BV | dependabot[bot] 49699333 | 2023-08-29T00:15:29Z | 2023-08-29T00:15:29Z | CONTRIBUTOR | This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1695736691 | https://github.com/simonw/datasette/pull/2152#issuecomment-1695736691 | https://api.github.com/repos/simonw/datasette/issues/2152 | IC_kwDOBm6k_c5lEuNz | dependabot[bot] 49699333 | 2023-08-28T13:49:35Z | 2023-08-28T13:49:35Z | CONTRIBUTOR | Superseded by #2160. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 3 updates 1865174661 | |
1689198413 | https://github.com/simonw/datasette/pull/2148#issuecomment-1689198413 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5krx9N | dependabot[bot] 49699333 | 2023-08-23T02:57:55Z | 2023-08-23T02:57:55Z | CONTRIBUTOR | Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry! If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1688532012 | https://github.com/simonw/datasette/issues/2093#issuecomment-1688532012 | https://api.github.com/repos/simonw/datasette/issues/2093 | IC_kwDOBm6k_c5kpPQs | asg017 15178711 | 2023-08-22T16:21:40Z | 2023-08-22T16:21:40Z | CONTRIBUTOR | OK Here's the gameplan for this, which is closely tied to #2143 :
The format of Here's the current implementation plan:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File 1781530343 | |
1686745094 | https://github.com/simonw/datasette/issues/2145#issuecomment-1686745094 | https://api.github.com/repos/simonw/datasette/issues/2145 | IC_kwDOBm6k_c5kibAG | asg017 15178711 | 2023-08-21T17:30:01Z | 2023-08-21T17:30:01Z | CONTRIBUTOR | Another point: The new Datasette write API should refuse to insert a row with a NULL primary key. That will likely decrease the likelihood someone find themselves with NULLs in their primary keys, at least with Datasette users. Especially buggy code that uses the write API, like our |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
If a row has a primary key of `null` various things break 1857234285 | |
1686366557 | https://github.com/simonw/datasette/pull/2144#issuecomment-1686366557 | https://api.github.com/repos/simonw/datasette/issues/2144 | IC_kwDOBm6k_c5kg-ld | dependabot[bot] 49699333 | 2023-08-21T13:48:15Z | 2023-08-21T13:48:15Z | CONTRIBUTOR | Superseded by #2148. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 3 updates 1856760386 | |
1684496274 | https://github.com/simonw/datasette/issues/2143#issuecomment-1684496274 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kZ1-S | asg017 15178711 | 2023-08-18T22:30:45Z | 2023-08-18T22:30:45Z | CONTRIBUTOR |
Does this include things like Well it could work with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1684205563 | https://github.com/simonw/datasette/issues/2143#issuecomment-1684205563 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kYu_7 | asg017 15178711 | 2023-08-18T17:12:54Z | 2023-08-18T17:12:54Z | CONTRIBUTOR | Another option would be, instead of flat Though I imagine Python imports might make this complex to do, and json/yaml is already supported and pretty easy to write |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1684202932 | https://github.com/simonw/datasette/issues/2143#issuecomment-1684202932 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kYuW0 | asg017 15178711 | 2023-08-18T17:10:21Z | 2023-08-18T17:10:21Z | CONTRIBUTOR | I agree with all your points! I think the best solution would be having a Then optionally, you have a Everything in We could even completely remove |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1683950031 | https://github.com/simonw/datasette/pull/2142#issuecomment-1683950031 | https://api.github.com/repos/simonw/datasette/issues/2142 | IC_kwDOBm6k_c5kXwnP | dependabot[bot] 49699333 | 2023-08-18T13:49:24Z | 2023-08-18T13:49:24Z | CONTRIBUTOR | Looks like these dependencies are updatable in another way, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 2 updates 1854970601 | |
1682256251 | https://github.com/simonw/datasette/pull/2141#issuecomment-1682256251 | https://api.github.com/repos/simonw/datasette/issues/2141 | IC_kwDOBm6k_c5kRTF7 | dependabot[bot] 49699333 | 2023-08-17T13:07:43Z | 2023-08-17T13:07:43Z | CONTRIBUTOR | Looks like blacken-docs is updatable in another way, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 1 update 1853289039 | |
1668187546 | https://github.com/simonw/datasette/pull/2125#issuecomment-1668187546 | https://api.github.com/repos/simonw/datasette/issues/2125 | IC_kwDOBm6k_c5jboWa | dependabot[bot] 49699333 | 2023-08-07T16:20:26Z | 2023-08-07T16:20:26Z | CONTRIBUTOR | Looks like sphinx is up-to-date now, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 7.1.2 1833193570 | |
1668186872 | https://github.com/simonw/datasette/pull/2121#issuecomment-1668186872 | https://api.github.com/repos/simonw/datasette/issues/2121 | IC_kwDOBm6k_c5jboL4 | dependabot[bot] 49699333 | 2023-08-07T16:20:19Z | 2023-08-07T16:20:19Z | CONTRIBUTOR | Looks like furo is up-to-date now, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump furo from 2023.3.27 to 2023.7.26 1824399610 | |
1668186815 | https://github.com/simonw/datasette/pull/2098#issuecomment-1668186815 | https://api.github.com/repos/simonw/datasette/issues/2098 | IC_kwDOBm6k_c5jboK_ | dependabot[bot] 49699333 | 2023-08-07T16:20:18Z | 2023-08-07T16:20:18Z | CONTRIBUTOR | Looks like blacken-docs is up-to-date now, so this is no longer needed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump blacken-docs from 1.14.0 to 1.15.0 1796830110 | |
1668113177 | https://github.com/simonw/sqlite-utils/issues/578#issuecomment-1668113177 | https://api.github.com/repos/simonw/sqlite-utils/issues/578 | IC_kwDOCGYnMM5jbWMZ | eyeseast 25778 | 2023-08-07T15:41:49Z | 2023-08-07T15:41:49Z | CONTRIBUTOR | I wonder if this should be two hooks: input and output. The current |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for adding new output formats 1818838294 | |
1662215579 | https://github.com/simonw/datasette/pull/2124#issuecomment-1662215579 | https://api.github.com/repos/simonw/datasette/issues/2124 | IC_kwDOBm6k_c5jE2Wb | dependabot[bot] 49699333 | 2023-08-02T13:28:43Z | 2023-08-02T13:28:43Z | CONTRIBUTOR | Superseded by #2125. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 7.1.1 1826424151 | |
1655678215 | https://github.com/simonw/datasette/pull/2107#issuecomment-1655678215 | https://api.github.com/repos/simonw/datasette/issues/2107 | IC_kwDOBm6k_c5ir6UH | dependabot[bot] 49699333 | 2023-07-28T13:23:16Z | 2023-07-28T13:23:16Z | CONTRIBUTOR | Superseded by #2124. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 7.1.0 1820346348 | |
1653652665 | https://github.com/simonw/datasette/pull/2077#issuecomment-1653652665 | https://api.github.com/repos/simonw/datasette/issues/2077 | IC_kwDOBm6k_c5ikLy5 | dependabot[bot] 49699333 | 2023-07-27T13:40:52Z | 2023-07-27T13:40:52Z | CONTRIBUTOR | Superseded by #2121. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump furo from 2023.3.27 to 2023.5.20 1719759468 | |
1649849249 | https://github.com/simonw/datasette/pull/2075#issuecomment-1649849249 | https://api.github.com/repos/simonw/datasette/issues/2075 | IC_kwDOBm6k_c5iVrOh | dependabot[bot] 49699333 | 2023-07-25T13:28:35Z | 2023-07-25T13:28:35Z | CONTRIBUTOR | Superseded by #2107. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 7.0.1 1710164693 | |
1648339661 | https://github.com/simonw/sqlite-utils/issues/578#issuecomment-1648339661 | https://api.github.com/repos/simonw/sqlite-utils/issues/578 | IC_kwDOCGYnMM5iP6rN | eyeseast 25778 | 2023-07-24T17:44:30Z | 2023-07-24T17:44:30Z | CONTRIBUTOR |
This is my goal, to have one plugin that handles input and output symmetrically. I'd like to be able to do something like this: ```sh sqlite-utils insert data.db table file.geojson --format geojson ... explore and manipulate in Datasettesqlite-utils query data.db ... --format geojson > output.geojson ``` This would work especially well with datasette-query-files, since I already have the queries I need saved in standalone SQL files. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for adding new output formats 1818838294 | |
1646656283 | https://github.com/simonw/sqlite-utils/issues/567#issuecomment-1646656283 | https://api.github.com/repos/simonw/sqlite-utils/issues/567 | IC_kwDOCGYnMM5iJfsb | eyeseast 25778 | 2023-07-22T19:32:24Z | 2023-07-22T19:32:24Z | CONTRIBUTOR | Cool. I might try to add a geojson plugin that handles both input and output. That would help me out a lot. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin system 1801394744 | |
1642808866 | https://github.com/simonw/sqlite-utils/issues/567#issuecomment-1642808866 | https://api.github.com/repos/simonw/sqlite-utils/issues/567 | IC_kwDOCGYnMM5h60Yi | eyeseast 25778 | 2023-07-19T21:54:27Z | 2023-07-19T21:54:27Z | CONTRIBUTOR | Would this possibly make a bunch of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin system 1801394744 | |
1641082395 | https://github.com/simonw/datasette/issues/2104#issuecomment-1641082395 | https://api.github.com/repos/simonw/datasette/issues/2104 | IC_kwDOBm6k_c5h0O4b | asg017 15178711 | 2023-07-18T22:41:37Z | 2023-07-18T22:41:37Z | CONTRIBUTOR | For filtering virtual table's "shadow tables" (ex the FTS5 _content and most the spatialite tables), you can use |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 } |
Tables starting with an underscore should be treated as hidden 1808215339 | |
1638910473 | https://github.com/simonw/sqlite-utils/issues/567#issuecomment-1638910473 | https://api.github.com/repos/simonw/sqlite-utils/issues/567 | IC_kwDOCGYnMM5hr8oJ | asg017 15178711 | 2023-07-17T21:27:41Z | 2023-07-17T21:27:41Z | CONTRIBUTOR | Another use-case: I want to make a
This could also be a datasette plugin (ex |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin system 1801394744 | |
1630776144 | https://github.com/simonw/datasette/pull/2052#issuecomment-1630776144 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5hM6tQ | hydrosquall 9020979 | 2023-07-11T12:54:03Z | 2023-07-11T12:54:03Z | CONTRIBUTOR | Thanks for the review and the code pointers @simonw - I've made the suggested edits, fixed the renamed variable, and confirmed that the panels still render on the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1616853644 | https://github.com/simonw/datasette/issues/2087#issuecomment-1616853644 | https://api.github.com/repos/simonw/datasette/issues/2087 | IC_kwDOBm6k_c5gXzqM | asg017 15178711 | 2023-07-02T22:00:48Z | 2023-07-02T22:00:48Z | CONTRIBUTOR | I just saw in the docs that Dasette auto-detects
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`--settings settings.json` option 1765870617 | |
1616286848 | https://github.com/simonw/datasette/issues/2093#issuecomment-1616286848 | https://api.github.com/repos/simonw/datasette/issues/2093 | IC_kwDOBm6k_c5gVpSA | asg017 15178711 | 2023-07-02T02:17:46Z | 2023-07-02T02:17:46Z | CONTRIBUTOR | Storing metadata in the database won't be required. I imagine there'll be many different ways to store metadata, including any possible The next question will be how precedence should work - i'd imagine metadata.json > plugins > datasette_metadata > sqlite-docs |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File 1781530343 | |
1616095810 | https://github.com/simonw/datasette/pull/2052#issuecomment-1616095810 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5gU6pC | asg017 15178711 | 2023-07-01T20:31:31Z | 2023-07-01T20:31:31Z | CONTRIBUTOR |
I just did a github search for |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1615997736 | https://github.com/simonw/datasette/pull/2052#issuecomment-1615997736 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5gUiso | hydrosquall 9020979 | 2023-07-01T16:55:24Z | 2023-07-01T16:55:24Z | CONTRIBUTOR |
Thank you @asg017 ! I've pushed both suggested changes onto this branch.
If we are OK with having a build system, it would free me up to do do many things! We could make datasette-manager.js a server-side rendered file as a "template" instead of having it as a static JS file, but I'm not sure it's worth the extra jump in complexity / loss of syntax highlighting in the JS file. In the short-term, I could see an intermediary solution where a unit test in the preferred language was able to read both
This sounds good to me. I'm not sure how to add a settings flag, but will be interested to see the PR that adds support for it.
I'm comfortable to wait until we have a realistic usecase for this. In the short term, I think we could give plugins a way to grant access to a "public API of other plugins", and also ask to be notified when plugins with other names have loaded, but don't picture the datasette manager getting more involved than that.
Neat, thanks for compiling this list! Just curious, is there a query that can be used to compile this programmatically, or did you identify these through memory?
I look forward to trying this out 👍 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1613896210 | https://github.com/simonw/datasette/issues/2093#issuecomment-1613896210 | https://api.github.com/repos/simonw/datasette/issues/2093 | IC_kwDOBm6k_c5gMhoS | asg017 15178711 | 2023-06-29T22:53:33Z | 2023-06-29T22:53:33Z | CONTRIBUTOR | Maybe we can have a separate issue for revamping |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File 1781530343 | |
1613895188 | https://github.com/simonw/datasette/issues/2093#issuecomment-1613895188 | https://api.github.com/repos/simonw/datasette/issues/2093 | IC_kwDOBm6k_c5gMhYU | asg017 15178711 | 2023-06-29T22:51:53Z | 2023-06-29T22:51:53Z | CONTRIBUTOR | I agree with not liking Though since plugin configuration currently lives in And ya, supporting both |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File 1781530343 | |
1613778296 | https://github.com/simonw/datasette/pull/2052#issuecomment-1613778296 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5gME14 | asg017 15178711 | 2023-06-29T20:36:09Z | 2023-06-29T20:36:09Z | CONTRIBUTOR | Ok @hydrosquall a couple things before this PR should be good to go:
In terms of how to integrate this into Datasette, a few options I can see working:
I'll let @simonw decide which one to work with. I kindof like the idea of having an "unstable" opt-in process to enable JS plugins, to give us time to try it out with a wide variety of plugins until we feel its ready. I'm also curious to see how "plugins for a plugin' would work, like #1542. For example, if the leaflet plugin showed default markers, but also included its own hook for other plugins to add more markers/styling. I'm imagine that the individual plugin would re-create their own plugin system compared to this, since handling "plugins of plugins" at the top with Datasette seems really convoluted. Also for posterity, here's a list of Simon's Datasette plugins that use "extra_js_urls()", which probably means they can be ported/re-written to use this new plugin system: |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1606352600 | https://github.com/simonw/datasette/pull/2052#issuecomment-1606352600 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5fvv7Y | asg017 15178711 | 2023-06-26T00:17:04Z | 2023-06-26T00:17:04Z | CONTRIBUTOR | :wave: would love to see this get merged soon! I want to make a javascript plugin on top of the code-mirror editor to make a few things nicer (function auto-complete, table/column descriptions, etc.), and this would help out a bunch |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1592110694 | https://github.com/simonw/sqlite-utils/issues/529#issuecomment-1592110694 | https://api.github.com/repos/simonw/sqlite-utils/issues/529 | IC_kwDOCGYnMM5e5a5m | chapmanjacobd 7908073 | 2023-06-14T23:11:47Z | 2023-06-14T23:12:12Z | CONTRIBUTOR | sorry i was wrong. ``` sqlite-utils --raw-lines :memory: "SELECT * FROM (VALUES ('test'), ('line2'))" | cat -A test$ line2$ sqlite-utils --csv --no-headers :memory: "SELECT * FROM (VALUES ('test'), ('line2'))" | cat -A test$ line2$ ``` I think this was fixed somewhat recently |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Microsoft line endings 1581090327 | |
1264218914 | https://github.com/simonw/sqlite-utils/issues/491#issuecomment-1264218914 | https://api.github.com/repos/simonw/sqlite-utils/issues/491 | IC_kwDOCGYnMM5LWnMi | chapmanjacobd 7908073 | 2022-10-01T03:18:36Z | 2023-06-14T22:14:24Z | CONTRIBUTOR |
I actually found myself wanting something like this the past couple days. The use-case was databases with slightly different schema but same table names. here is a full script: ``` import argparse from pathlib import Path from sqlite_utils import Database def connect(args, conn=None, kwargs) -> Database: db = Database(conn or args.database, kwargs) with db.conn: db.conn.execute("PRAGMA main.cache_size = 8000") return db def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("database") parser.add_argument("dbs_folder") parser.add_argument("--db", "-db", help=argparse.SUPPRESS) parser.add_argument("--verbose", "-v", action="count", default=0) args = parser.parse_args()
def merge_db(args, source_db): source_db = str(Path(source_db).resolve())
def merge_directory(): args = parse_args() source_dbs = list(Path(args.dbs_folder).glob('*.db')) for s_db in source_dbs: merge_db(args, s_db) if name == 'main': merge_directory() ``` edit: I've made some improvements to this and put it on PyPI: ``` $ pip install xklb $ lb merge-db -h usage: library merge-dbs DEST_DB SOURCE_DB ... [--only-target-columns] [--only-new-rows] [--upsert] [--pk PK ...] [--table TABLE ...]
positional arguments: database source_dbs ``` Also if you want to dedupe a table based on a "business key" which isn't explicitly your primary key(s) you can run this: ``` $ lb dedupe-db -h usage: library dedupe-dbs DATABASE TABLE --bk BUSINESS_KEYS [--pk PRIMARY_KEYS] [--only-columns COLUMNS]
positional arguments: database table options: -h, --help show this help message and exit --skip-0 --only-columns ONLY_COLUMNS Comma separated column names to upsert --primary-keys PRIMARY_KEYS, --pk PRIMARY_KEYS Comma separated primary keys --business-keys BUSINESS_KEYS, --bk BUSINESS_KEYS Comma separated business keys ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to merge databases and tables 1383646615 | |
1592052320 | https://github.com/simonw/sqlite-utils/issues/535#issuecomment-1592052320 | https://api.github.com/repos/simonw/sqlite-utils/issues/535 | IC_kwDOCGYnMM5e5Mpg | chapmanjacobd 7908073 | 2023-06-14T22:05:28Z | 2023-06-14T22:05:28Z | CONTRIBUTOR | piping to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
rows: --transpose or psql extended view-like functionality 1655860104 | |
1592047502 | https://github.com/simonw/sqlite-utils/issues/555#issuecomment-1592047502 | https://api.github.com/repos/simonw/sqlite-utils/issues/555 | IC_kwDOCGYnMM5e5LeO | chapmanjacobd 7908073 | 2023-06-14T22:00:10Z | 2023-06-14T22:01:57Z | CONTRIBUTOR | You may want to try doing a performance comparison between this and just selecting all the ids with few constraints and then doing the filtering within python. That might seem like a lazy-programmer, inefficient way but queries with large resultsets are a different profile than what databases like SQLITE are designed for. That is not to say that SQLITE is slow or that python is always faster but when you start reading >20% of an index there is an equilibrium that is reached. Especially when adding in writing extra temp tables and stuff to memory/disk. And especially given the You may also try chunking like this: ```py def chunks(lst, n) -> Generator: for i in range(0, len(lst), n): yield lst[i : i + n] SQLITE_PARAM_LIMIT = 32765 data = [] chunked = chunks(video_ids, consts.SQLITE_PARAM_LIMIT) for ids in chunked: data.expand( list( db.query( f"""SELECT * from videos WHERE id in (""" + ",".join(["?"] * len(ids)) + ")", (*ids,), ) ) ) ``` but that actually won't work with your Since you are doing stuff with files/videos in SQLITE you might be interested in my side project: https://github.com/chapmanjacobd/library |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Filter table by a large bunch of ids 1733198948 | |
1590531892 | https://github.com/simonw/sqlite-utils/issues/557#issuecomment-1590531892 | https://api.github.com/repos/simonw/sqlite-utils/issues/557 | IC_kwDOCGYnMM5ezZc0 | chapmanjacobd 7908073 | 2023-06-14T06:09:21Z | 2023-06-14T06:09:21Z | CONTRIBUTOR | I put together a simple script to upsert and remove duplicate rows based on business keys. If anyone has similar problems with above this might help ``` CREATE TABLE my_table ( id INTEGER PRIMARY KEY, column1 TEXT, column2 TEXT, column3 TEXT ); INSERT INTO my_table (column1, column2, column3) VALUES ('Value 1', 'Duplicate 1', 'Duplicate A'), ('Value 2', 'Duplicate 2', 'Duplicate B'), ('Value 3', 'Duplicate 2', 'Duplicate C'), ('Value 4', 'Duplicate 3', 'Duplicate D'), ('Value 5', 'Duplicate 3', 'Duplicate E'), ('Value 6', 'Duplicate 3', 'Duplicate F'); ```
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Aliased ROWID option for tables created from alter=True commands 1740150327 | |
1585149909 | https://github.com/simonw/datasette/pull/2052#issuecomment-1585149909 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5ee3fV | hydrosquall 9020979 | 2023-06-09T21:35:00Z | 2023-06-09T21:35:00Z | CONTRIBUTOR | Thanks @cldellow for the thoughtful comments! These are all things that I'll keep in mind as we figure out how/if this API is actually used by plugin authors once it's actually out in the world.
Ah, I understand now! Thanks for explaining. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1577355134 | https://github.com/simonw/sqlite-utils/issues/557#issuecomment-1577355134 | https://api.github.com/repos/simonw/sqlite-utils/issues/557 | IC_kwDOCGYnMM5eBId- | chapmanjacobd 7908073 | 2023-06-05T19:26:26Z | 2023-06-05T19:26:26Z | CONTRIBUTOR | this isn't really actionable... I'm just being a whiny baby. I have tasted the milk of being able to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Aliased ROWID option for tables created from alter=True commands 1740150327 | |
1575310378 | https://github.com/simonw/sqlite-utils/issues/556#issuecomment-1575310378 | https://api.github.com/repos/simonw/sqlite-utils/issues/556 | IC_kwDOCGYnMM5d5VQq | mcint 601708 | 2023-06-04T01:21:15Z | 2023-06-04T01:21:15Z | CONTRIBUTOR | I've resolved my use, with the line-buffered output and while read loop for line buffered input, but I leave this here so the incremental saving or line-buffered use-case can be explicitly handled or rejected (or deferred). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support storing incrementally piped values 1740026046 | |
1548617257 | https://github.com/simonw/datasette/pull/2052#issuecomment-1548617257 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5cTgYp | cldellow 193185 | 2023-05-15T21:32:20Z | 2023-05-15T21:32:20Z | CONTRIBUTOR |
The latter - that you could return a promise of arrays, so it parallels the "await me maybe" pattern in Datasette, where you can return either a value, a callable or an awaitable.
Oops, I did a poor job explaining. Yes, this would work - but it requires me to continue to communicate the column names out of band (in order to fetch the facet data per-column before registering my plugin), vs being able to re-use them from the plugin implementation. This isn't that big of a deal - it'd be a nice ergonomic improvement, but nowhere near as a big of an improvement as having an officially sanctioned way to add stuff to the column menus in the first place. This could also be layered on in a future commit without breaking v1 users, too, so it's not at all urgent.
Ah, this is maybe the the key point. Since it's all hosted inside Datasette, Datasette can provide some arbitrary sugar to make it easier to work with. My experience with async scripts in JS is that people sometimes don't understand the race conditions inherent to them. If they copy/paste from a tutorial, it does just work. But then they'll delete half the code, and by chance it still works on their machine/Datasette templates, and now someone's headed for an annoying debugging session -- maybe them, maybe someone else who tries to re-use their plugin. Again, a fairly minor thing, though. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1547911570 | https://github.com/simonw/datasette/pull/2068#issuecomment-1547911570 | https://api.github.com/repos/simonw/datasette/issues/2068 | IC_kwDOBm6k_c5cQ0GS | dependabot[bot] 49699333 | 2023-05-15T13:59:35Z | 2023-05-15T13:59:35Z | CONTRIBUTOR | Superseded by #2075. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 7.0.0 1690842199 | |
1546362374 | https://github.com/simonw/datasette/pull/2052#issuecomment-1546362374 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5cK54G | hydrosquall 9020979 | 2023-05-12T22:09:03Z | 2023-05-12T22:09:03Z | CONTRIBUTOR | Hey @cldellow , thanks for the thoughtful feedback and describing the "lazy facets" feature! It sounds like the postTask API might be relevant for the types of network request scheduling you have in mind. Addressing your points inline below:
Were you picturing that the whole plugin config object could be returned as a promise, or that the individual hooks (like I think what you're describing can be achievable, but I want to make sure I do so in a way that addresses your need / keeps the complexity of the plugin core system at a level this is approachable . I have a hunch that what you're describing might be achievable without adding Promises to the API with something like
but I'd like to confirm if that's the case before investigating adding support.
Yes, I think what you wrote looks right to me! While it looks a little bit verbose compared to the second example, I'm hoping we can mitigate the cost of that during this API incubation phase by making it an easy-to-copy paste code snippet. I haven't heard of the GA queing pattern before, thanks for the example. I won't have time to implement of proof of concept in the next few weeks, but I took some time to think through the pros/cons to decide whether we may want to add this in a future release: I can see that this approach brings advantages
It also has some minor costs
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1540900733 | https://github.com/simonw/sqlite-utils/issues/527#issuecomment-1540900733 | https://api.github.com/repos/simonw/sqlite-utils/issues/527 | IC_kwDOCGYnMM5b2Ed9 | mcarpenter 167893 | 2023-05-09T21:15:05Z | 2023-05-09T21:15:05Z | CONTRIBUTOR | Sorry, I completely missed your first comment whilst on Easter break. This looks like a good practical compromise before v4. Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`Table.convert()` skips falsey values 1578790070 | |
1530822437 | https://github.com/simonw/datasette/pull/2052#issuecomment-1530822437 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5bPn8l | cldellow 193185 | 2023-05-02T03:35:30Z | 2023-05-02T16:02:38Z | CONTRIBUTOR | Also, just checking - is this how I'd write bulletproof plugin registration code that is robust against the order in which the script tags load (eg if both my code and the Datasette code are loaded via a ```js if (window.DATASETTE) go(window.DATASETTE); else document.addEventListener("datasette_init", (evt) => go(evt.detail)); function go(manager) { manager.registerPlugin(...) } ``` I don't know if it'd make sense, but you could also consider the asynchronous queuing pattern that Google Analytics uses (see this Stack Overflow post for more details): ```js DATASETTE = DATASETTE || []; DATASETTE.push(go); function go(manager) { manager.registerPlugin(...); } ``` |
{ "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1530817667 | https://github.com/simonw/datasette/pull/2052#issuecomment-1530817667 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5bPmyD | cldellow 193185 | 2023-05-02T03:24:53Z | 2023-05-02T03:24:53Z | CONTRIBUTOR | Thanks for putting this together! I've been slammed with work/personal stuff so haven't been able to actually prototype anything with this. :( tl;dr: I think this would be useful immediately as is. It might also be nice if the plugins could return The long version: I read the design notes and example plugin. I think I'd be able to use this in datasette-ui-extras for my lazy-facets feature. The lazy-facets feature tries to provide a snappier user experience. It does this by altering how suggested facets work. First, at page render time: (A) it lies to Datasette and claims that no columns support facets, this avoids the lengthy delays/timeouts that can happen if the dataset is large. (B) there's a python plugin that implements the extra_body_script hook, to write out the list of column names for future use by JavaScript Second, at page load time: there is some JavaScript that: (C) makes AJAX requests to suggest facets for each column - it makes 1 request per column, using the data from (B) (D) wires up the column menus to add Facet-by-this options for each facet With the currently proposed plugin scheme, I think (D) could be moved into the plugin. I'd do the ajax requests, then register the plugin. If the plugin scheme also supported promises, I think (B) and (C) could also be moved into the plugin. Does that make sense? Sorry for the wall of text! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1529737426 | https://github.com/simonw/datasette/pull/2064#issuecomment-1529737426 | https://api.github.com/repos/simonw/datasette/issues/2064 | IC_kwDOBm6k_c5bLfDS | dependabot[bot] 49699333 | 2023-05-01T13:58:50Z | 2023-05-01T13:58:50Z | CONTRIBUTOR | Superseded by #2068. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 6.2.1 1683229834 | |
1521837780 | https://github.com/simonw/datasette/pull/2063#issuecomment-1521837780 | https://api.github.com/repos/simonw/datasette/issues/2063 | IC_kwDOBm6k_c5atWbU | dependabot[bot] 49699333 | 2023-04-25T13:57:52Z | 2023-04-25T13:57:52Z | CONTRIBUTOR | Superseded by #2064. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx from 6.1.3 to 6.2.0 1681339696 | |
1510423051 | https://github.com/simonw/datasette/pull/2052#issuecomment-1510423051 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5aBzoL | hydrosquall 9020979 | 2023-04-16T16:12:14Z | 2023-04-20T05:14:39Z | CONTRIBUTOR | Javascript Plugin Docs (alpha)MotivationThe Datasette JS Plugin API allows developers to add interactive features to the UI, without having to modify the Python source code. SetupNo external/NPM dependencies are needed. Plugin behavior is coordinated by the Datasette There are 2 ways to add your plugin to the
```js document.addEventListener("datasette_init", function (evt) { const { detail: manager } = evt; // register plugin here }); ```
There are 2 plugin hooks available to
While there are additional properties on the
I welcome ideas for more hooks, or feedback on the current design! ExamplesSee the example plugins file for additional examples. Hooks API Guide
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1515694393 | https://github.com/simonw/datasette/pull/2052#issuecomment-1515694393 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5aV6k5 | hydrosquall 9020979 | 2023-04-20T04:25:55Z | 2023-04-20T04:25:55Z | CONTRIBUTOR | Thanks for the thoughtful review and generous examples @asg017 ! I'll make the changes you suggested soon. Bonus thoughts inlined below.
These were very much appreciated, it's important to a plugin system that details like this feel right! I'll address them in batch later in the week.
FWIW I am in favor of doing Typescript - I just wanted to keep the initial set of files in this PR as simple as possible to review. Really appreciate you scaffolding this initial set of types + I think it would be a welcome addition to maintain a set of types.d.ts files. I'm entertaining the idea of writing the actual source code in Typescript as long as the compiled output is readable b/c it can be tricky to keep the types and plain JS files in sync. Curious if you have encountered projects that are good at preventing drift.
This is a great observation. I'm inclined towards something like
I really like this idea! It'll be easier to get contributors if they don't have to touch the python side at all.
One cost of doing this is that pages that won't use the JS would still have to load the unused code (given that I'm not sending up anything complex like lazy loading). But hopefully the manager core size is close to negligible, and it won't be a big deal. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1510423215 | https://github.com/simonw/datasette/pull/2052#issuecomment-1510423215 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5aBzqv | hydrosquall 9020979 | 2023-04-16T16:12:59Z | 2023-04-16T16:12:59Z | CONTRIBUTOR | Research notes
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1509461324 | https://github.com/simonw/datasette/pull/2052#issuecomment-1509461324 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5Z-I1M | hydrosquall 9020979 | 2023-04-15T01:57:06Z | 2023-04-15T01:57:06Z | CONTRIBUTOR | Notes from 1:1 - it is possible to pass in URL params into a ObservableHQ notebook: https://observablehq.com/@bherbertlc/pass-values-as-url-parameters |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1501017004 | https://github.com/simonw/sqlite-utils/pull/531#issuecomment-1501017004 | https://api.github.com/repos/simonw/sqlite-utils/issues/531 | IC_kwDOCGYnMM5Zd7Os | eyeseast 25778 | 2023-04-09T01:49:43Z | 2023-04-09T01:49:43Z | CONTRIBUTOR | I'm going to close this in favor of #536. Will try a cleaner approach to custom paths once that one is merge. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add paths for homebrew on Apple silicon 1620164673 | |
1487999503 | https://github.com/simonw/datasette/pull/2014#issuecomment-1487999503 | https://api.github.com/repos/simonw/datasette/issues/2014 | IC_kwDOBm6k_c5YsRIP | dependabot[bot] 49699333 | 2023-03-29T06:09:11Z | 2023-03-29T06:09:11Z | CONTRIBUTOR | Superseded by #2047. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump black from 22.12.0 to 23.1.0 1566081801 | |
1486944644 | https://github.com/simonw/datasette/pull/2043#issuecomment-1486944644 | https://api.github.com/repos/simonw/datasette/issues/2043 | IC_kwDOBm6k_c5YoPmE | dependabot[bot] 49699333 | 2023-03-28T13:58:20Z | 2023-03-28T13:58:20Z | CONTRIBUTOR | Superseded by #2046. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump furo from 2022.12.7 to 2023.3.23 1639446870 | |
1465315726 | https://github.com/simonw/sqlite-utils/pull/531#issuecomment-1465315726 | https://api.github.com/repos/simonw/sqlite-utils/issues/531 | IC_kwDOCGYnMM5XVvGO | eyeseast 25778 | 2023-03-12T22:21:56Z | 2023-03-12T22:21:56Z | CONTRIBUTOR | Exactly, that's what I was running into. On my M2 MacBook, SpatiaLite ends up in what is -- for the moment -- a non-standard location, so even when I passed in the location with What I learned doing this originally is that SQLite needs to load the extension for each connection, even if all the SpatiaLite stuff is already in the database. So that's why Here's the code where I hit the error: https://github.com/eyeseast/boston-parcels/blob/main/Makefile#L30 It works using this branch. I'm not attached to this solution if you can think of something better. And I'm not sure, TBH, my test would actually catch what I'm after here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add paths for homebrew on Apple silicon 1620164673 | |
1457172180 | https://github.com/simonw/datasette/issues/2033#issuecomment-1457172180 | https://api.github.com/repos/simonw/datasette/issues/2033 | IC_kwDOBm6k_c5W2q7U | eyeseast 25778 | 2023-03-06T22:54:52Z | 2023-03-06T22:54:52Z | CONTRIBUTOR | This would be a nice feature to have with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette install -r requirements.txt` 1612296210 | |
1444474487 | https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1444474487 | https://api.github.com/repos/simonw/sqlite-utils/issues/433 | IC_kwDOCGYnMM5WGO53 | mcarpenter 167893 | 2023-02-24T20:57:43Z | 2023-02-24T22:22:18Z | CONTRIBUTOR | I think I see what is happening here, although I haven't quite work out a fix yet. Usually:
(See terminal escape sequences However the sqlite-utils
The yielded |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI eats my cursor 1239034903 | |
1437671409 | https://github.com/simonw/datasette/issues/1258#issuecomment-1437671409 | https://api.github.com/repos/simonw/datasette/issues/1258 | IC_kwDOBm6k_c5VsR_x | brandonrobertz 2670795 | 2023-02-20T23:39:58Z | 2023-02-20T23:39:58Z | CONTRIBUTOR | This is pretty annoying for FTS because sqlite throws an error instead of just doing something like returning all or no results. This makes users who are unfamiliar with SQL and Datasette think the canned query page is broken and is a frequent source of confusion. To anyone dealing with this: My solution is to modify the canned query so that it returns no results which cues people to fill in the blank parameters. So instead of My canned queries now look like this:
There are no asterisks in my data so the result is always blank. Ultimately it would be nice to be able to handle this in the metadata. Either making some named parameters required or setting some default values. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow canned query params to specify default values 828858421 | |
1435318713 | https://github.com/simonw/sqlite-utils/issues/525#issuecomment-1435318713 | https://api.github.com/repos/simonw/sqlite-utils/issues/525 | IC_kwDOCGYnMM5VjTm5 | mcarpenter 167893 | 2023-02-17T21:55:01Z | 2023-02-17T21:55:01Z | CONTRIBUTOR | Meanwhile, a cheap workaround is to invalidate the registered function cache:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Repeated calls to `Table.convert()` fail 1575131737 | |
1425974877 | https://github.com/simonw/datasette/issues/2023#issuecomment-1425974877 | https://api.github.com/repos/simonw/datasette/issues/2023 | IC_kwDOBm6k_c5U_qZd | cldellow 193185 | 2023-02-10T15:32:41Z | 2023-02-10T15:32:41Z | CONTRIBUTOR | I think this feature was removed in Datasette 0.61 and moved to a plugin. People who want hashed URLs can use the datasette-hashed-urls plugin to achieve the same affect. It looks like you're trying to disable hashed urls, so I think you can just remove that config setting and things will work. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Error: Invalid setting 'hash_urls' in settings.json in 0.64.1 1579695809 | |
1423387341 | https://github.com/simonw/sqlite-utils/issues/525#issuecomment-1423387341 | https://api.github.com/repos/simonw/sqlite-utils/issues/525 | IC_kwDOCGYnMM5U1yrN | mcarpenter 167893 | 2023-02-08T23:48:52Z | 2023-02-09T00:17:30Z | CONTRIBUTOR | PR below |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Repeated calls to `Table.convert()` fail 1575131737 | |
1421571810 | https://github.com/simonw/sqlite-utils/issues/520#issuecomment-1421571810 | https://api.github.com/repos/simonw/sqlite-utils/issues/520 | IC_kwDOCGYnMM5Uu3bi | mcarpenter 167893 | 2023-02-07T22:43:09Z | 2023-02-07T22:43:09Z | CONTRIBUTOR | Hey, isn't this essentially the same issue as #448 ? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
rows_from_file() raises confusing error if file-like object is not in binary mode 1516644980 | |
1420941334 | https://github.com/simonw/datasette/pull/564#issuecomment-1420941334 | https://api.github.com/repos/simonw/datasette/issues/564 | IC_kwDOBm6k_c5UsdgW | psychemedia 82988 | 2023-02-07T15:14:10Z | 2023-02-07T15:14:10Z | CONTRIBUTOR | Is this feature covered by any more recent updates to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First proof-of-concept of Datasette Library 473288428 | |
1419357290 | https://github.com/simonw/sqlite-utils/issues/524#issuecomment-1419357290 | https://api.github.com/repos/simonw/sqlite-utils/issues/524 | IC_kwDOCGYnMM5Umaxq | eyeseast 25778 | 2023-02-06T16:21:44Z | 2023-02-06T16:21:44Z | CONTRIBUTOR | SQLite doesn't have a native |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Transformation type `--type DATETIME` 1572766460 | |
1407767434 | https://github.com/simonw/datasette/issues/1696#issuecomment-1407767434 | https://api.github.com/repos/simonw/datasette/issues/1696 | IC_kwDOBm6k_c5T6NOK | cldellow 193185 | 2023-01-29T20:56:20Z | 2023-01-29T20:56:20Z | CONTRIBUTOR | I did some horrible things in https://github.com/cldellow/datasette-ui-extras/issues/2 to enable this in my plugin -- example here: https://dux-demo.fly.dev/cooking/posts?_facet=owner_user_id&owner_user_id=67 The implementation relies on two things:
This got me thinking: it'd be neat if the list of operators that the filters UI supported wasn't a closed set. A motivating example: adding a geospatial |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Show foreign key label when filtering 1186696202 | |
1407716963 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407716963 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T6A5j | cldellow 193185 | 2023-01-29T17:04:03Z | 2023-01-29T17:04:03Z | CONTRIBUTOR | Performance tests - I think most places don't have them as a formal gate enforced by CI. TypeScript and scalac seem to have tests that run to capture timings. The timings are included by a bot as a comment or build check, and also stored in a database so you can graph changes over time to spot regressions. Probably overkill for Datasette! Window functions - oh, good point. Looks like Ubuntu shipped JSON1 support as far back as sqlite 3.11. I'll let this PR linger until there's a way to run against different SQLite versions. For now, I'm shipping this with Tests - there actually did end up being test changes to capture the undercount bug of the current implementation, so the current implementation would fail against the new tests. Perhaps a non-window function version could be written that uses |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407561308 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407561308 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T5a5c | cldellow 193185 | 2023-01-29T04:50:50Z | 2023-01-29T04:50:50Z | CONTRIBUTOR | I pushed a revised version which ends up being faster -- the example which currently takes 4 seconds now runs in 500ms. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407558284 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407558284 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T5aKM | cldellow 193185 | 2023-01-29T04:23:58Z | 2023-01-29T04:24:27Z | CONTRIBUTOR | Ack, this PR is broken. I see now that the That fixes the overcounting, but I think can undercount when the rows have the same data, eg a view like:
will produce a count of If I guess a general solution would be to compute a window function so we have a distinct ID for each row. Will fiddle to see if I can get that working. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407523547 | https://github.com/simonw/datasette/issues/1973#issuecomment-1407523547 | https://api.github.com/repos/simonw/datasette/issues/1973 | IC_kwDOBm6k_c5T5Rrb | cldellow 193185 | 2023-01-29T00:40:31Z | 2023-01-29T00:40:31Z | CONTRIBUTOR | A +1 for switching to Otherwise you get vanilla |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
render_cell plugin hook's row object is not a sqlite.Row 1515815014 | |
1407470429 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407470429 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T5Etd | cldellow 193185 | 2023-01-28T19:34:29Z | 2023-01-28T19:34:29Z | CONTRIBUTOR | I don't know how/if you do automated tests for performance, so I haven't changed any of the tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407264466 | https://github.com/simonw/sqlite-utils/issues/523#issuecomment-1407264466 | https://api.github.com/repos/simonw/sqlite-utils/issues/523 | IC_kwDOCGYnMM5T4SbS | fgregg 536941 | 2023-01-28T02:41:14Z | 2023-01-28T02:41:14Z | CONTRIBUTOR | I also often then run another little script to cast all empty strings to null, but i save that for another issue if this gets accepted. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Feature request: trim all leading and trailing white space for all columns for all tables in a database 1560651350 | |
1404070841 | https://github.com/simonw/sqlite-utils/pull/203#issuecomment-1404070841 | https://api.github.com/repos/simonw/sqlite-utils/issues/203 | IC_kwDOCGYnMM5TsGu5 | fgregg 536941 | 2023-01-25T18:47:18Z | 2023-01-25T18:47:18Z | CONTRIBUTOR | i'll adopt this PR to make the changes @simonw suggested https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567932 |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
changes to allow for compound foreign keys 743384829 | |
1404065571 | https://github.com/simonw/datasette/pull/2003#issuecomment-1404065571 | https://api.github.com/repos/simonw/datasette/issues/2003 | IC_kwDOBm6k_c5TsFcj | fgregg 536941 | 2023-01-25T18:44:42Z | 2023-01-25T18:44:42Z | CONTRIBUTOR | see this related discussion to a change in API in sqlite-utils https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567932 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Show referring tables and rows when the referring foreign key is compound 1555701851 | |
1403084856 | https://github.com/simonw/datasette/issues/2001#issuecomment-1403084856 | https://api.github.com/repos/simonw/datasette/issues/2001 | IC_kwDOBm6k_c5ToWA4 | cldellow 193185 | 2023-01-25T04:31:02Z | 2023-01-25T04:31:02Z | CONTRIBUTOR | Aha, it's user error on my part. Adding
makes it work reliably both on the CLI and from datasette, and now I can reproduce the errors you mentioned in the issue description. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette is not compatible with SQLite's strict quoting compilation option 1553615704 | |
1403078134 | https://github.com/simonw/datasette/issues/2001#issuecomment-1403078134 | https://api.github.com/repos/simonw/datasette/issues/2001 | IC_kwDOBm6k_c5ToUX2 | cldellow 193185 | 2023-01-25T04:20:43Z | 2023-01-25T04:22:28Z | CONTRIBUTOR | I'm on Ubuntu, unfortunately. :( Would it still be relevant? I think I've narrowed things down a bit more. Even |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette is not compatible with SQLite's strict quoting compilation option 1553615704 | |
1403053144 | https://github.com/simonw/datasette/issues/2001#issuecomment-1403053144 | https://api.github.com/repos/simonw/datasette/issues/2001 | IC_kwDOBm6k_c5ToORY | cldellow 193185 | 2023-01-25T03:34:53Z | 2023-01-25T03:34:53Z | CONTRIBUTOR | Your comment introduced me to this issue in sqlite and to the
I'm not a Datasette developer, but I am curious to learn more about getting unholy access to the sqlite C APIs inside of Datasette. (Such access could also help #1293, and if done without grovelling inside of pysqlite's Connection object for the db handle, could even be relatively safe.) I experimented a bit. I came up with https://gist.github.com/cldellow/85bba507c314b127f85563869cd94820 If you run But if you put it in a I am... confused. I'm pretty sure I'm using the same python and the same libsqlite3 in both scenarios, so I would expect it to work. @gwk do you know anything that might help me debug the segfault? I gather that my approach of going grovelling inside of a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette is not compatible with SQLite's strict quoting compilation option 1553615704 | |
1402900354 | https://github.com/simonw/datasette/issues/1099#issuecomment-1402900354 | https://api.github.com/repos/simonw/datasette/issues/1099 | IC_kwDOBm6k_c5Tno-C | fgregg 536941 | 2023-01-25T00:58:26Z | 2023-01-25T00:58:26Z | CONTRIBUTOR |
it's pretty hard to know what the right thing to do is if a field is part of multiple foreign keys. but, if that's not the case, what about making each of the columns a link. seems like an improvement over the status quo. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support linking to compound foreign keys 743371103 | |
1402898291 | https://github.com/simonw/datasette/issues/1099#issuecomment-1402898291 | https://api.github.com/repos/simonw/datasette/issues/1099 | IC_kwDOBm6k_c5Tnodz | fgregg 536941 | 2023-01-25T00:55:06Z | 2023-01-25T00:55:06Z | CONTRIBUTOR | I went ahead and spiked something together, in #2003 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support linking to compound foreign keys 743371103 | |
1402898033 | https://github.com/simonw/datasette/pull/2003#issuecomment-1402898033 | https://api.github.com/repos/simonw/datasette/issues/2003 | IC_kwDOBm6k_c5TnoZx | fgregg 536941 | 2023-01-25T00:54:41Z | 2023-01-25T00:54:41Z | CONTRIBUTOR | @simonw, let me know what you think about this approach! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Show referring tables and rows when the referring foreign key is compound 1555701851 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
issue_url 330 ✖