371 rows where author_association = "NONE" sorted by updated_at descending

View and edit SQL

Suggested facets: reactions, created_at (date), updated_at (date)

issue

author_association

  • NONE · 371
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
765678057 https://github.com/simonw/sqlite-utils/pull/224#issuecomment-765678057 https://api.github.com/repos/simonw/sqlite-utils/issues/224 MDEyOklzc3VlQ29tbWVudDc2NTY3ODA1Nw== polyrand 37962604 2021-01-22T20:53:06Z 2021-01-23T20:13:27Z NONE

I'm using the FTS methods in sqlite-utils for this website: drwn.io. I wanted to get pagination to have some kind of infinite scrolling in the landing page, and I ended up using that.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Add fts offset docs. 792297010  
765639968 https://github.com/simonw/datasette/issues/1196#issuecomment-765639968 https://api.github.com/repos/simonw/datasette/issues/1196 MDEyOklzc3VlQ29tbWVudDc2NTYzOTk2OA== QAInsights 2826376 2021-01-22T19:37:15Z 2021-01-22T19:37:15Z NONE

I tried deployment in WSL. It is working fine https://jmeter.vercel.app/

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Access Denied Error in Windows 791237799  
765525338 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765525338 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTUyNTMzOA== cobiadigital 25372415 2021-01-22T16:22:44Z 2021-01-22T16:22:44Z NONE

rs1333049 associated with coronary artery disease
https://www.snpedia.com/index.php/Rs1333049

select rsid, genotype, case genotype
  when 'CC' then '1.9x increased risk for coronary artery disease'
  when 'CG' then '1.5x increased risk for CAD'
  when 'GG' then 'normal'
end as interpretation from genome where rsid = 'rs1333049'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
765523517 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765523517 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTUyMzUxNw== cobiadigital 25372415 2021-01-22T16:20:25Z 2021-01-22T16:20:25Z NONE

rs53576: the oxytocin receptor (OXTR) gene

select rsid, genotype, case genotype
  when 'AA' then 'Lack of empathy?'
  when 'AG' then 'Lack of empathy?'
  when 'GG' then 'Optimistic and empathetic; handle stress well'
end as interpretation from genome where rsid = 'rs53576'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
765506901 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765506901 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTUwNjkwMQ== cobiadigital 25372415 2021-01-22T15:58:41Z 2021-01-22T15:58:58Z NONE

Both rs10757274 and rs2383206 can both indicate higher risks of heart disease
https://www.snpedia.com/index.php/Rs2383206

select rsid, genotype, case genotype
  when 'AA' then 'Normal'
  when 'AG' then '~1.2x increased risk for heart disease'
  when 'GG' then '~1.3x increased risk for heart disease'
end as interpretation from genome where rsid = 'rs10757274'
select rsid, genotype, case genotype
  when 'AA' then 'Normal'
  when 'AG' then '1.4x increased risk for heart disease'
  when 'GG' then '1.7x increased risk for heart disease'
end as interpretation from genome where rsid = 'rs2383206'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
765502845 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765502845 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTUwMjg0NQ== cobiadigital 25372415 2021-01-22T15:53:19Z 2021-01-22T15:53:19Z NONE

rs7903146 Influences risk of Type-2 diabetes
https://www.snpedia.com/index.php/Rs7903146

select rsid, genotype, case genotype
  when 'CC' then 'Normal (lower) risk of Type 2 Diabetes and Gestational Diabetes.'
  when 'CT' then '1.4x increased risk for diabetes (and perhaps colon cancer).'
  when 'TT' then '2x increased risk for Type-2 diabetes'
end as interpretation from genome where rsid = 'rs7903146'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
765498984 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765498984 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTQ5ODk4NA== cobiadigital 25372415 2021-01-22T15:48:25Z 2021-01-22T15:49:33Z NONE

The "Warrior Gene" https://www.snpedia.com/index.php/Rs4680

select rsid, genotype, case genotype
  when 'AA' then '(worrier) advantage in memory and attention tasks'
  when 'AG' then 'Intermediate dopamine levels, other effects'
  when 'GG' then '(warrior) multiple associations, see details'
end as interpretation from genome where rsid = 'rs4680'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
765495861 https://github.com/dogsheep/genome-to-sqlite/issues/1#issuecomment-765495861 https://api.github.com/repos/dogsheep/genome-to-sqlite/issues/1 MDEyOklzc3VlQ29tbWVudDc2NTQ5NTg2MQ== cobiadigital 25372415 2021-01-22T15:44:00Z 2021-01-22T15:44:00Z NONE

Risk of autoimmune disorders: https://www.snpedia.com/index.php/Genotype

select rsid, genotype, case genotype
  when 'AA' then '2x risk of rheumatoid arthritis and other autoimmune diseases'
  when 'GG' then 'Normal risk for autoimmune disorders'
end as interpretation from genome where rsid = 'rs2476601'
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Figure out some interesting example SQL queries 496415321  
762488336 https://github.com/simonw/datasette/issues/1175#issuecomment-762488336 https://api.github.com/repos/simonw/datasette/issues/1175 MDEyOklzc3VlQ29tbWVudDc2MjQ4ODMzNg== hannseman 758858 2021-01-18T21:59:28Z 2021-01-18T22:00:31Z NONE

I encountered your issue when trying to find a solution and came up with the following, maybe it can help.

import logging.config
from typing import Tuple

import structlog
import uvicorn

from example.config import settings

shared_processors: Tuple[structlog.types.Processor, ...] = (
    structlog.contextvars.merge_contextvars,
    structlog.stdlib.add_logger_name,
    structlog.stdlib.add_log_level,
    structlog.processors.TimeStamper(fmt="iso"),
)

logging_config = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "json": {
            "()": structlog.stdlib.ProcessorFormatter,
            "processor": structlog.processors.JSONRenderer(),
            "foreign_pre_chain": shared_processors,
        },
        "console": {
            "()": structlog.stdlib.ProcessorFormatter,
            "processor": structlog.dev.ConsoleRenderer(),
            "foreign_pre_chain": shared_processors,
        },
        **uvicorn.config.LOGGING_CONFIG["formatters"],
    },
    "handlers": {
        "default": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "formatter": "json" if not settings.debug else "console",
        },
        "uvicorn.access": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "access",
        },
        "uvicorn.default": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "default",
        },
    },
    "loggers": {
        "": {"handlers": ["default"], "level": "INFO"},
        "uvicorn.error": {
            "handlers": ["default" if not settings.debug else "uvicorn.default"],
            "level": "INFO",
            "propagate": False,
        },
        "uvicorn.access": {
            "handlers": ["default" if not settings.debug else "uvicorn.access"],
            "level": "INFO",
            "propagate": False,
        },
    },
}


def setup_logging() -> None:
    structlog.configure(
        processors=[
            structlog.stdlib.filter_by_level,
            *shared_processors,
            structlog.stdlib.PositionalArgumentsFormatter(),
            structlog.processors.StackInfoRenderer(),
            structlog.processors.format_exc_info,
            structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
        ],
        context_class=dict,
        logger_factory=structlog.stdlib.LoggerFactory(),
        wrapper_class=structlog.stdlib.AsyncBoundLogger,
        cache_logger_on_first_use=True,
    )
    logging.config.dictConfig(logging_config)

And then it'll be run on the startup event:

@app.on_event("startup")
async def startup_event() -> None:
    setup_logging()

It depends on a setting called debug which controls if it should output the regular uvicorn logging or json.

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Use structlog for logging 779156520  
762391426 https://github.com/simonw/datasette/issues/1036#issuecomment-762391426 https://api.github.com/repos/simonw/datasette/issues/1036 MDEyOklzc3VlQ29tbWVudDc2MjM5MTQyNg== philshem 4997607 2021-01-18T17:45:00Z 2021-01-18T17:45:00Z NONE

It might be possible with this library: https://docs.python.org/3/library/imghdr.html

quick test of the downloaded blob:

>>> import imghdr
>>> imghdr.what('material_culture-1-image.blob')
'jpeg'

The output plugin would be cool. I'll look into making my first datasette plugin. I'm also imagining displaying the image in the browser -- but that would be a step 2.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make it possible to download BLOB data from the Datasette UI 725996507  
762385981 https://github.com/simonw/datasette/issues/1036#issuecomment-762385981 https://api.github.com/repos/simonw/datasette/issues/1036 MDEyOklzc3VlQ29tbWVudDc2MjM4NTk4MQ== philshem 4997607 2021-01-18T17:32:13Z 2021-01-18T17:34:50Z NONE

Hi Simon

Just finding this old issue regarding downloading blobs. Nice work!

https://user-images.githubusercontent.com/4997607/104946741-df4bad80-59ba-11eb-96e3-727c85cc4dc6.png">

As a feature request, maybe it would be possible to assign a blob column as a certain data type (e.g. .jpg) and then each blob could be downloaded as that type of file (perhaps if the file types were constrained to normal blobs that people store in sqlite databases, this could avoid the execution stuff mentioned above).

I guess the column blob-type definition could fit into this dropdown selection:

https://user-images.githubusercontent.com/4997607/104947000-479a8f00-59bb-11eb-87d9-1644e5940894.png">

Let me know if I should open a new issue with a feature request. (This could slowly go in the direction of displaying image blob-types in the browser.)

Thanks for the great tool!


edit: just reading the rest of the twitter thread: https://twitter.com/simonw/status/1318685933256855552

perhaps this is already possible in some form with the plugin datasette-media: https://github.com/simonw/datasette-media

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make it possible to download BLOB data from the Datasette UI 725996507  
761015218 https://github.com/simonw/sqlite-utils/issues/220#issuecomment-761015218 https://api.github.com/repos/simonw/sqlite-utils/issues/220 MDEyOklzc3VlQ29tbWVudDc2MTAxNTIxOA== mhalle 649467 2021-01-15T15:40:08Z 2021-01-15T15:40:08Z NONE

Make sense. If you're coming from the sqlite3 side of things, rather than the datasette side, wanting the fts methods to work for views makes more sense. sqlite3 allows fts5 tables on views, so I was looking for CLI functionality to build the fts virtual tables. Ultimately, though, sharing fts virtual tables across tables and derivative views is likely more efficient.

Maybe an explicit error message like, "fts is not supported for views" rather than just throwing an exception that the method doesn't exist" might be helpful. Not critical though.

Thanks.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
*_fts methods don't work on views, only tables 783778672  
760950128 https://github.com/dogsheep/twitter-to-sqlite/pull/55#issuecomment-760950128 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/55 MDEyOklzc3VlQ29tbWVudDc2MDk1MDEyOA== jacobian 21148 2021-01-15T13:44:52Z 2021-01-15T13:44:52Z NONE

I found and fixed another bug, this one around importing the tweets table. @simonw let me know if you'd prefer this broken out into multiple PRs, happy to do that if it makes review/merging easier.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix archive imports 779211940  
759306228 https://github.com/simonw/datasette/pull/1159#issuecomment-759306228 https://api.github.com/repos/simonw/datasette/issues/1159 MDEyOklzc3VlQ29tbWVudDc1OTMwNjIyOA== lovasoa 552629 2021-01-13T08:59:31Z 2021-01-13T08:59:31Z NONE

@simonw : Did you have the time to take a look at this ?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Improve the display of facets information 774332247  
758668359 https://github.com/simonw/datasette/issues/1091#issuecomment-758668359 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc1ODY2ODM1OQ== tballison 6739646 2021-01-12T13:52:29Z 2021-01-12T13:52:29Z NONE

Y, thank you to both of you!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
758448525 https://github.com/simonw/datasette/issues/1091#issuecomment-758448525 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc1ODQ0ODUyNQ== henry501 19328961 2021-01-12T06:55:08Z 2021-01-12T06:55:08Z NONE

Great, really happy I could help! Reverse proxies get tricky.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
758280611 https://github.com/simonw/datasette/issues/1091#issuecomment-758280611 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc1ODI4MDYxMQ== tballison 6739646 2021-01-11T23:06:10Z 2021-01-11T23:06:10Z NONE

+1

Yep! Fixes it. If I navigate to https://corpora.tika.apache.org/datasette, I get a 404 (database not found: datasette), but if I navigate to https://corpora.tika.apache.org/datasette/file_profiles/, everything WORKS!

Thank you!

{
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 1,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
756425587 https://github.com/simonw/datasette/issues/1091#issuecomment-756425587 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc1NjQyNTU4Nw== henry501 19328961 2021-01-07T22:27:19Z 2021-01-07T22:27:19Z NONE

I found this issue while troubleshooting the same behavior with an nginx reverse proxy. The solution was to make sure I set:

proxy_pass http://server:8001/baseurl/
instead of just:

proxy_pass http://server:8001
The custom SQL query and header links are now correct.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
754911290 https://github.com/simonw/datasette/issues/1171#issuecomment-754911290 https://api.github.com/repos/simonw/datasette/issues/1171 MDEyOklzc3VlQ29tbWVudDc1NDkxMTI5MA== rcoup 59874 2021-01-05T21:31:15Z 2021-01-05T21:31:15Z NONE

We did this for Sno under macOS — it's a PyInstaller binary/setup which uses Packages for packaging.

FYI (if you ever get to it) for Windows you need to get a code signing certificate. And if you want automated CI, you'll want to get an "EV CodeSigning for HSM" certificate from GlobalSign, which then lets you put the certificate into Azure Key Vault. Which you can use with azuresigntool to sign your code & installer. (Non-EV certificates are a waste of time, the user still gets big warnings at install time).

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
GitHub Actions workflow to build and sign macOS binary executables 778450486  
754729035 https://github.com/dogsheep/twitter-to-sqlite/issues/54#issuecomment-754729035 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/54 MDEyOklzc3VlQ29tbWVudDc1NDcyOTAzNQ== jacobian 21148 2021-01-05T16:03:29Z 2021-01-05T16:03:29Z NONE

I was able to fix this, at least enough to get my archive to import. Not sure if there's more work to be done here or not.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Archive import appears to be broken on recent exports 779088071  
754728696 https://github.com/dogsheep/twitter-to-sqlite/pull/55#issuecomment-754728696 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/55 MDEyOklzc3VlQ29tbWVudDc1NDcyODY5Ng== jacobian 21148 2021-01-05T16:02:55Z 2021-01-05T16:02:55Z NONE

This now works for me, though I'm entirely ensure if it's a just-my-export thing or a wider issue. Also, this doesn't contain any tests. So I'm not sure if there's more work to be done here, or if this is good enough.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix archive imports 779211940  
754721153 https://github.com/dogsheep/twitter-to-sqlite/issues/54#issuecomment-754721153 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/54 MDEyOklzc3VlQ29tbWVudDc1NDcyMTE1Mw== jacobian 21148 2021-01-05T15:51:09Z 2021-01-05T15:51:09Z NONE

Correction: the failure is on lists-member.js (I was thrown by the block variable name, but that's just a coincidence)

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Archive import appears to be broken on recent exports 779088071  
754210356 https://github.com/simonw/datasette/issues/983#issuecomment-754210356 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1NDIxMDM1Ng== carlmjohnson 222245 2021-01-04T20:49:05Z 2021-01-04T20:49:05Z NONE

For reasons I've written about elsewhere, I'm in favor of modules. It has several beneficial effects. One, old browsers just ignore it all together. Two, if you include the same plain script on the page more than once, it will be executed twice, but if you include the same module script on a page twice, it will only execute once. Three, you get a module local namespace, instead of having to use the global window namespace or a function private namespace.

OTOH, if you are going to use an old style script, the code from before isn't ideal, because you wipe out your registry if the script it included more than once. Also you may as well use object methods and splat arguments.

The event based architecture probably makes more sense though. Just make up some event names prefixed with datasette: and listen for them on the root. The only concern with that approach is it can sometimes be tricky to make sure your plugins are run after datasette has run. Maybe

function mycallback(){
  // whatever
}

if (window.datasette) {
  window.datasette.init(mycallback);
} else {
  document.addEventListener('datasette:init', mycallback);
}
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
754181647 https://github.com/simonw/datasette/issues/983#issuecomment-754181647 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1NDE4MTY0Nw== jussiarpalahti 11941245 2021-01-04T19:52:40Z 2021-01-04T19:52:40Z NONE

I was thinking JavaScript plugins going with server side template extensions custom HTML. Attach my own widgets on there and listen for Datasette events to refresh when user interacts with main UI. Like a map view or table that updates according to selected column. There's certainly other ways to look at this. Perhaps you could list possible hooks or high level design doc on what would be possible with the plugin system?

Re: modules. I would like to see modules supported at least in development. The developer experience is so much better than what JavaScript coding has been in the past. With large parts of NPM at your disposal I’d imagine even less experienced coder can whisk a custom plugin in no time. Proper production build system (like one you get with Pika or Parcel) could package everything up into bundles that older browsers can understand. Though that does come with performance and size penalties alongside the added complexity.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
754002859 https://github.com/simonw/datasette/pull/1170#issuecomment-754002859 https://api.github.com/repos/simonw/datasette/issues/1170 MDEyOklzc3VlQ29tbWVudDc1NDAwMjg1OQ== codecov[bot] 22429695 2021-01-04T14:22:52Z 2021-01-04T14:22:52Z NONE

Codecov Report

Merging #1170 (a5761cc) into main (1e8fa3a) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1170   +/-   ##
=======================================
  Coverage   91.55%   91.55%           
=======================================
  Files          32       32           
  Lines        3932     3932           
=======================================
  Hits         3600     3600           
  Misses        332      332           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1e8fa3a...a5761cc. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Install Prettier via package.json 778126516  
753600999 https://github.com/simonw/datasette/issues/983#issuecomment-753600999 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1MzYwMDk5OQ== MarkusH 475613 2021-01-03T11:11:21Z 2021-01-03T11:11:21Z NONE

With regards to JS/Browser events, given your example of menu items that plugins could add, I could imagine this code to work:

// as part of datasette
datasette.events.AddMenuItem = 'DatasetteAddMenuItemEvent';
document.addEventListener(datasette.events.AddMenuItem, (e) => {
  // do whatever is needed to add the menu item. Data comes from `e`
  alert(e.title + ' ' + e.link);
});

// as part of a plugin
const event = new Event(datasette.events.AddMenuItem, {link: '/foo/bar', title: 'Go somewhere'});
Document.dispatchEvent(event)
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
753587963 https://github.com/simonw/datasette/issues/983#issuecomment-753587963 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1MzU4Nzk2Mw== dracos 154364 2021-01-03T09:02:50Z 2021-01-03T10:00:05Z NONE

but I'm already commited to requiring support for () => {} arrow functions

Don't think you are :) (e.g. gzipped, using arrow functions in my example saves 2 bytes over spelling out function). On FMS, past month, looking at popular browsers, looks like we'd have 95.41% arrow support, 94.19% module support, and 4.58% (mostly IE9/IE11/Safari 9) supporting neither.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
753224999 https://github.com/simonw/datasette/issues/983#issuecomment-753224999 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1MzIyNDk5OQ== jussiarpalahti 11941245 2020-12-31T23:29:36Z 2020-12-31T23:29:36Z NONE

I have yet to build Datasette plugin and am unfamiliar with Pluggy. Since browsers have event handling builtin Datasette could communicate with plugins through it. Handlers register as listeners for custom Datasette events and Datasette's JS can then trigger said events.

I was also wondering if you had looked at Javascript Modules for JS plugins? With services like Skypack (https://www.skypack.dev) NPM libraries can be loaded directly into browser, no build step needed. Same goes for local JS if you adhere to ES Module spec.

If minification is required then tools such as Snowpack (https://www.snowpack.dev) could fit better. It uses https://github.com/evanw/esbuild for bundling and minification.

On plugins you'd simply:

import {register} from '/assets/js/datasette'
register.on({'click' : my_func})

In Datasette HTML pages' head you'd merely import these files as modules one by one.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
753218817 https://github.com/simonw/datasette/issues/983#issuecomment-753218817 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1MzIxODgxNw== yozlet 173848 2020-12-31T22:32:25Z 2020-12-31T22:32:25Z NONE

Amazing work! And you've put in far more work than I'd expect to reduce the payload (which is admirable).

So, to add a plugin with the current design, it goes in (a) the template or (b) a bookmarklet, right?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
753033121 https://github.com/simonw/datasette/issues/1165#issuecomment-753033121 https://api.github.com/repos/simonw/datasette/issues/1165 MDEyOklzc3VlQ29tbWVudDc1MzAzMzEyMQ== dracos 154364 2020-12-31T19:33:47Z 2020-12-31T19:33:47Z NONE

Sorry to go on about it, but it's my only example ;) And thought it might be of interest/use. Here is FixMyStreet's Cypress workflow https://github.com/mysociety/fixmystreet/blob/master/.github/workflows/cypress.yml with the master script that sets up server etc at https://github.com/mysociety/fixmystreet/blob/master/bin/browser-tests (that has features such as working inside/outside Vagrant, and can do JS code coverage) and then the tests are at https://github.com/mysociety/fixmystreet/tree/master/.cypress/cypress/integration

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Mechanism for executing JavaScript unit tests 776635426  
752882797 https://github.com/simonw/datasette/issues/983#issuecomment-752882797 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1Mjg4Mjc5Nw== dracos 154364 2020-12-31T08:07:59Z 2020-12-31T15:04:32Z NONE

If you're using arrow functions, you can presumably use default parameters, not much difference in support. That would save you 9 bytes. But OTOH you need "use strict"; to use arrow functions etc, and that's 13 bytes.

Your latest 250-byte one, with use strict, gzips to 199 bytes. The following might be 292 bytes, but compresses to 204, basically the same, and works in any browser (well, IE9+) at all:

var datasette=datasette||{};datasette.plugins=function(){var d={};return{register:function(b,c,e){d[b]||(d[b]=[]);d[b].push([c,e])},call:function(b,c){c=c||{};var e=[];(d[b]||[]).forEach(function(a){a=a[0].apply(a[0],a[1].map(function(a){return c[a]}));void 0!==a&&e.push(a)});return e}}}();

Source for that is below; I replaced the [fn,parameters] because closure-compiler includes a polyfill for that, and I ran closure-compiler --language_out ECMASCRIPT3:

var datasette = datasette || {};
datasette.plugins = (() => {
    var registry = {};
    return {
        register: (hook, fn, parameters) => {
            if (!registry[hook]) {
                registry[hook] = [];
            }
            registry[hook].push([fn, parameters]);
        },
        call: (hook, args) => {
            args = args || {};
            var results = [];
            (registry[hook] || []).forEach((data) => {
                /* Call with the correct arguments */
                var result = data[0].apply(data[0], data[1].map(parameter => args[parameter]));
                if (result !== undefined) {
                    results.push(result);
                }
            });
            return results;
        }
    };
})();
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
752888552 https://github.com/simonw/datasette/issues/983#issuecomment-752888552 https://api.github.com/repos/simonw/datasette/issues/983 MDEyOklzc3VlQ29tbWVudDc1Mjg4ODU1Mg== dracos 154364 2020-12-31T08:33:11Z 2020-12-31T08:34:27Z NONE

If you could say that all hook functions had to accept one options parameter (and could use object destructuring if they wished to only see a subset), you could have this, which minifies (to all-browser-JS) to 200 bytes, gzips to 146, and works practically the same:

var datasette = datasette || {};
datasette.plugins = (() => {
    var registry = {};
    return {
        register: (hook, fn) => {
            registry[hook] = registry[hook] || [];
            registry[hook].push(fn);
        },
        call: (hook, args) => {
            var results = (registry[hook] || []).map(fn => fn(args||{}));
            return results;
        }
    };
})();

var datasette=datasette||{};datasette.plugins=function(){var b={};return{register:function(a,c){b[a]=b[a]||[];b[a].push(c)},call:function(a,c){return(b[a]||[]).map(function(a){return a(c||{})})}}}();

Called the same, definitions tiny bit different:

datasette.plugins.register('numbers', ({a, b}) => a + b)
datasette.plugins.register('numbers', o => o.a * o.b)
datasette.plugins.call('numbers', {a: 4, b: 6})
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript plugin hooks mechanism similar to pluggy 712260429  
751504136 https://github.com/simonw/datasette/issues/417#issuecomment-751504136 https://api.github.com/repos/simonw/datasette/issues/417 MDEyOklzc3VlQ29tbWVudDc1MTUwNDEzNg== drewda 212369 2020-12-27T19:02:06Z 2020-12-27T19:02:06Z NONE

Very much looking forward to seeing this functionality come together. This is probably out-of-scope for an initial release, but in the future it could be useful to also think of how to run this is a container'ized context. For example, an immutable datasette container that points to an S3 bucket of SQLite DBs or CSVs. Or an immutable datasette container pointing to a NFS volume elsewhere on a Kubernetes cluster.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Datasette Library 421546944  
751476406 https://github.com/simonw/datasette/issues/1150#issuecomment-751476406 https://api.github.com/repos/simonw/datasette/issues/1150 MDEyOklzc3VlQ29tbWVudDc1MTQ3NjQwNg== noklam 18221871 2020-12-27T14:51:39Z 2020-12-27T14:51:39Z NONE

I like the idea of _internal, it's a nice way to get a data catalog quickly. I wonder if this trick applies to db other than SQLite.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Maintain an in-memory SQLite table of connected databases and their tables 770436876  
751375487 https://github.com/dogsheep/github-to-sqlite/pull/59#issuecomment-751375487 https://api.github.com/repos/dogsheep/github-to-sqlite/issues/59 MDEyOklzc3VlQ29tbWVudDc1MTM3NTQ4Nw== frosencrantz 631242 2020-12-26T17:08:44Z 2020-12-26T17:08:44Z NONE

Hi @simonw, do I need to do anything else for this PR to be considered to be included? I've tried using this project and it is quite nice to be able to explore a repository, but noticed that a couple commands don't allow you to use authorization from the environment variable.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Remove unneeded exists=True for -a/--auth flag. 771872303  
751127384 https://github.com/simonw/datasette/issues/417#issuecomment-751127384 https://api.github.com/repos/simonw/datasette/issues/417 MDEyOklzc3VlQ29tbWVudDc1MTEyNzM4NA== dyllan-to-yu 1279360 2020-12-24T22:56:48Z 2020-12-24T22:56:48Z NONE

Instead of scanning the directory every 10s, have you considered listening for the native system events to notify you of updates?

I think python has a nice module to do this for you called watchdog

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Datasette Library 421546944  
751125270 https://github.com/dogsheep/dogsheep-photos/issues/28#issuecomment-751125270 https://api.github.com/repos/dogsheep/dogsheep-photos/issues/28 MDEyOklzc3VlQ29tbWVudDc1MTEyNTI3MA== jmelloy 129786 2020-12-24T22:26:22Z 2020-12-24T22:26:22Z NONE

This comes around if you’ve run the photo export without running an s3 upload.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Invalid SQL no such table: main.uploads 624490929  
750849460 https://github.com/simonw/datasette/pull/1159#issuecomment-750849460 https://api.github.com/repos/simonw/datasette/issues/1159 MDEyOklzc3VlQ29tbWVudDc1MDg0OTQ2MA== codecov[bot] 22429695 2020-12-24T11:07:35Z 2020-12-24T11:29:21Z NONE

Codecov Report

Merging #1159 (c820abd) into main (a882d67) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1159   +/-   ##
=======================================
  Coverage   91.55%   91.55%           
=======================================
  Files          32       32           
  Lines        3930     3930           
=======================================
  Hits         3598     3598           
  Misses        332      332           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a882d67...c820abd. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Improve the display of facets information 774332247  
750373496 https://github.com/simonw/datasette/pull/1158#issuecomment-750373496 https://api.github.com/repos/simonw/datasette/issues/1158 MDEyOklzc3VlQ29tbWVudDc1MDM3MzQ5Ng== codecov[bot] 22429695 2020-12-23T16:26:06Z 2020-12-23T16:26:06Z NONE

Codecov Report

Merging #1158 (37ce72f) into main (90eba4c) will not change coverage.
The diff coverage is 87.50%.

@@           Coverage Diff           @@
##             main    #1158   +/-   ##
=======================================
  Coverage   91.55%   91.55%           
=======================================
  Files          32       32           
  Lines        3930     3930           
=======================================
  Hits         3598     3598           
  Misses        332      332           
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/cli.py</td> <td>77.41% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/facets.py</td> <td>89.04% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/filters.py</td> <td>94.35% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/hookspecs.py</td> <td>100.00% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/inspect.py</td> <td>36.11% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/renderer.py</td> <td>94.02% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/views/base.py</td> <td>95.01% <50.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/app.py</td> <td>95.85% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/__init__.py</td> <td>94.11% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/asgi.py</td> <td>92.13% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>... and 1 more</td> <td></td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 90eba4c...37ce72f. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Modernize code to Python 3.6+ 773913793  
748436115 https://github.com/dogsheep/dogsheep-photos/issues/15#issuecomment-748436115 https://api.github.com/repos/dogsheep/dogsheep-photos/issues/15 MDEyOklzc3VlQ29tbWVudDc0ODQzNjExNQ== nickvazz 8573886 2020-12-19T07:43:38Z 2020-12-19T07:47:36Z NONE

Hey Simon! I really enjoy datasette so far, just started trying it out today following your iPhone photos example.

I am not sure if you had run into this or not, but it seems like they might have changed one of the column names from
ZGENERICASSET to ZASSET. Should I open a PR?

Would change:
- here
- here
- here

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Expose scores from ZCOMPUTEDASSETATTRIBUTES 612151767  
748436453 https://github.com/dogsheep/twitter-to-sqlite/issues/53#issuecomment-748436453 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/53 MDEyOklzc3VlQ29tbWVudDc0ODQzNjQ1Mw== anotherjesse 27 2020-12-19T07:47:01Z 2020-12-19T07:47:01Z NONE

I think this should probably be closed as won't fix.

Attempting to make a patch for this I realized that the since_id would limit to tweets posted since that since_id, not when it was favorited. So favoriting something in the older would be missed if you used --since with a cron script

Better to just use --stop_after set to a couple hundred

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
--since support for favorites 771324837  
748436195 https://github.com/dogsheep/dogsheep-photos/issues/21#issuecomment-748436195 https://api.github.com/repos/dogsheep/dogsheep-photos/issues/21 MDEyOklzc3VlQ29tbWVudDc0ODQzNjE5NQ== nickvazz 8573886 2020-12-19T07:44:32Z 2020-12-19T07:44:49Z NONE

I have also run into this a bit, would it be possible to post your requirements.txt so I can try and reproduce your blog post?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
bpylist.archiver.CircularReference: archive has a cycle with uid(13) 615474990  
747130908 https://github.com/dogsheep/google-takeout-to-sqlite/issues/2#issuecomment-747130908 https://api.github.com/repos/dogsheep/google-takeout-to-sqlite/issues/2 MDEyOklzc3VlQ29tbWVudDc0NzEzMDkwOA== khimaros 231498 2020-12-17T00:47:04Z 2020-12-17T00:47:43Z NONE

it looks like almost all of the memory consumption is coming from json.load().

another direction here may be to use the new "Semantic Location History" data which is already broken down by year and month.

it also provides much more interesting data, such as estimated address, form of travel, etc.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
killed by oomkiller on large location-history 769376447  
745162571 https://github.com/simonw/datasette/issues/1142#issuecomment-745162571 https://api.github.com/repos/simonw/datasette/issues/1142 MDEyOklzc3VlQ29tbWVudDc0NTE2MjU3MQ== nitinpaul 6622733 2020-12-15T09:22:58Z 2020-12-15T09:22:58Z NONE

You're right, probably more straightforward to have the links for JSON. I was imagining to toggle the href for the 'Export JSON' link (button) to the selected shape, but it'll probably be needlessly complex in the end.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
"Stream all rows" is not at all obvious 763361458  
744618787 https://github.com/simonw/datasette/issues/1143#issuecomment-744618787 https://api.github.com/repos/simonw/datasette/issues/1143 MDEyOklzc3VlQ29tbWVudDc0NDYxODc4Nw== yurivish 114388 2020-12-14T18:15:00Z 2020-12-15T02:21:53Z NONE

From a quick look at the README, it does seem to do everything I need, thanks!

I think the argument for inclusion in core is to lower the chances of unwanted data access. A local server can be accessed by anybody who can make an HTTP request to your computer regardless of CORS rules, but the default * rule additionally opens up access to the local instance to any website you visit while it is running.

That's probably not what people typically intend, particularly when the data is of a sensitive nature. A default of requiring the user to specify the origin (allowing * but encouraging a narrower scope) would solve this problem entirely, I think.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
More flexible CORS support in core, to encourage good security practices 764059235  
744522099 https://github.com/simonw/datasette/issues/1142#issuecomment-744522099 https://api.github.com/repos/simonw/datasette/issues/1142 MDEyOklzc3VlQ29tbWVudDc0NDUyMjA5OQ== nitinpaul 6622733 2020-12-14T15:37:47Z 2020-12-14T15:37:47Z NONE

Alright I could give it a try! This might be a stupid question, can you tell me how to run the server from my fork? So that I can test the changes?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
"Stream all rows" is not at all obvious 763361458  
744489028 https://github.com/simonw/datasette/issues/1144#issuecomment-744489028 https://api.github.com/repos/simonw/datasette/issues/1144 MDEyOklzc3VlQ29tbWVudDc0NDQ4OTAyOA== MarkusH 475613 2020-12-14T14:47:11Z 2020-12-14T14:47:11Z NONE

Thanks for opening the issue, @simonw. Let me elaborate on my Tweets.

datasette-chartjs provides drop down lists to pick the chart visualization (e.g. bar, line, doughnut, pie, ...) as well as the column used for the "x axis" (e.g. time).

A user can change the values on-demand. The chart will be redrawn w/o querying the database again.

However, if a user wants to change the underlying query, they will use the SQL field provided by datasette or any of the other datasette built-in features to amend a query. In order to maintain a user's selections for the plugin, datasette-chartjs copies some parts of datasette-vega which persist the chosen visualization and column in the hash part of a URL (the stuff behind the #). The plugin load the config from the hash upon initialization on the next page and use it accordingly.

Additionally, datasette-vega and datasette-chartjs need to make sure to include the hash in all links and forms that cause a reload of the page. This is, such that the config persists between clicks.

This ticket is about moving thes parts into datasette that provide the functionality to do so. This includes:

  1. a way to load config options with a given prefix from the current URL hash
  2. a way to update the current URL hash with a new config value or a bunch of config options
  3. updating all necessary links and forms on the current page to include the URL hash whenever its updated
  4. to prevent leaking config options to external pages, only "internal" links should be updated

There's another, optional, feature that we might want to think about during the design phase: the scope of the config. Links within a datasette instance have 1 of 3 scopes:

  1. global, for the whole datasette project
  2. database, for all tables in a database
  3. table, only for a table within a database

When updating the links and forms as pointed out in 3. above, it might be worth considering which links need to be updated. I could imagine a plugin that wants to persist some setting across all tables within a database but another setting only within a table.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
JavaScript to help plugins interact with the fragment part of the URL 765637324  
744475543 https://github.com/simonw/datasette/pull/1145#issuecomment-744475543 https://api.github.com/repos/simonw/datasette/issues/1145 MDEyOklzc3VlQ29tbWVudDc0NDQ3NTU0Mw== codecov[bot] 22429695 2020-12-14T14:26:25Z 2020-12-14T14:26:25Z NONE

Codecov Report

Merging #1145 (a8588f9) into main (0c616f7) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1145   +/-   ##
=======================================
  Coverage   91.41%   91.41%           
=======================================
  Files          31       31           
  Lines        3881     3881           
=======================================
  Hits         3548     3548           
  Misses        333      333           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0c616f7...a8588f9. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Update pytest requirement from <6.2.0,>=5.2.2 to >=5.2.2,<6.3.0 766494367  
744461856 https://github.com/simonw/datasette/issues/276#issuecomment-744461856 https://api.github.com/repos/simonw/datasette/issues/276 MDEyOklzc3VlQ29tbWVudDc0NDQ2MTg1Ng== robintw 296686 2020-12-14T14:04:57Z 2020-12-14T14:04:57Z NONE

I'm looking into using datasette with a database with spatialite geometry columns, and came across this issue. Has there been any progress on this since 2018?

In one of my tables I'm just storing lat/lon points in a spatialite point geometry, and I've managed to make datasette-cluster-map display the points by extracting the lat and lon in SQL - using something like select ... ST_X(location) as longitude, ST_Y(location) as latitude from Blah. Something more 'built-in' would be great though - particularly for the tables I have that store more complex geometries.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Handle spatialite geometry columns better 324835838  
744003454 https://github.com/simonw/datasette/pull/1031#issuecomment-744003454 https://api.github.com/repos/simonw/datasette/issues/1031 MDEyOklzc3VlQ29tbWVudDc0NDAwMzQ1NA== frankier 299380 2020-12-13T12:52:56Z 2020-12-13T12:52:56Z NONE

Please let me know if there's anything I can do to help get this merged.

This is causing problems for me because it means when I build my Docker image my databases aren't considered immutable, which I would like them to be so that a download link is produced.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fallback to databases in inspect-data.json when no -i options are passed 724369025  
743998792 https://github.com/simonw/datasette/issues/1142#issuecomment-743998792 https://api.github.com/repos/simonw/datasette/issues/1142 MDEyOklzc3VlQ29tbWVudDc0Mzk5ODc5Mg== nitinpaul 6622733 2020-12-13T12:14:06Z 2020-12-13T12:14:06Z NONE

Agreed, it would definitely provide better controls. However, I do feel it makes for a bit of inconsistent UX for the 'Advanced export' section, with links to download for JSON, checkboxes and radio buttons + button to download for CSV. Do you think this example makes the UX a bit nicer/consistent?

I could give it a try if you'd like but I've never contributed to an actual project!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
"Stream all rows" is not at all obvious 763361458  
743732440 https://github.com/simonw/datasette/issues/1142#issuecomment-743732440 https://api.github.com/repos/simonw/datasette/issues/1142 MDEyOklzc3VlQ29tbWVudDc0MzczMjQ0MA== nitinpaul 6622733 2020-12-12T09:56:40Z 2020-12-12T09:56:40Z NONE

'Include all rows' seem like a fairly obvious alternative

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
"Stream all rows" is not at all obvious 763361458  
743080047 https://github.com/simonw/datasette/issues/998#issuecomment-743080047 https://api.github.com/repos/simonw/datasette/issues/998 MDEyOklzc3VlQ29tbWVudDc0MzA4MDA0Nw== JBPressac 6371750 2020-12-11T09:25:09Z 2020-12-11T09:25:09Z NONE

Hello Simon,
I have a similar problem with horizontal scrollbar display with Datasette version 0.51 and superior for a table with more than 30 rows. With Datasette 0.50, the horizontal scrollbar is displayed, if I upgrade Datasette to 0.51 and superior, the horizontal scrollbar disappears.

Datasette 0.50: horizontal scrollbar

Datasette 0.51 and superior: no horizontal scrollbar

Thanks,

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Wide tables should scroll horizontally within the page 717699884  
742299584 https://github.com/simonw/sqlite-utils/issues/205#issuecomment-742299584 https://api.github.com/repos/simonw/sqlite-utils/issues/205 MDEyOklzc3VlQ29tbWVudDc0MjI5OTU4NA== kaihendry 765871 2020-12-10T07:24:22Z 2020-12-10T07:24:22Z NONE

Bumping to ubuntu-20.04 appears to have solved my syntax error. 🤷

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
sqlite3.OperationalError: near "(": syntax error 760960559  
742260116 https://github.com/simonw/datasette/issues/1134#issuecomment-742260116 https://api.github.com/repos/simonw/datasette/issues/1134 MDEyOklzc3VlQ29tbWVudDc0MjI2MDExNg== clausjuhl 2181410 2020-12-10T05:57:17Z 2020-12-10T05:57:17Z NONE

Hi Simon

Thank you for the quick fix! And glad you like our use of Datasette (launches 1. january 2021). It's a site that currently (more to come) makes all minutes and their annexes from Aarhus City Council and the major committees (1997-2019) available to the public. So we're putting Datasette to good use :)

{
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 1,
    "rocket": 0,
    "eyes": 0
}
"_searchmode=raw" throws an index out of range error when combined with "_search_COLUMN" 760312579  
742010306 https://github.com/simonw/datasette/issues/1091#issuecomment-742010306 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc0MjAxMDMwNg== tballison 6739646 2020-12-09T19:53:18Z 2020-12-09T19:59:52Z NONE

I can't imagine this helps (esp. given your point about potential rewrites), but you can see that /datasette/ was correctly added to the sql form, but not to the "export-links"

https://user-images.githubusercontent.com/6739646/101680055-234baa00-3a2e-11eb-8650-2b369bc6f031.png">

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
742001510 https://github.com/simonw/datasette/issues/1091#issuecomment-742001510 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc0MjAwMTUxMA== tballison 6739646 2020-12-09T19:36:42Z 2020-12-09T19:38:04Z NONE

I don't think this fixes it:

grep -R datasette .
./sites-available/000-default.conf:        ProxyPass /datasette http://127.0.0.1:8001/
./sites-available/000-default.conf:        #ProxyPassReverse /datasette http://127.0.0.1:8001/
./sites-available/corpora-le-ssl.conf:  ProxyPass /datasette http://0.0.0.0:8001
./sites-available/corpora-le-ssl.conf:  #ProxyPassReverse /datasette http://0.0.0.0:8001
./sites-enabled/corpora-le-ssl.conf:  ProxyPass /datasette http://0.0.0.0:8001
./sites-enabled/corpora-le-ssl.conf:  #ProxyPassReverse /datasette http://0.0.0.0:8001

And I confirmed that I actually restarted the server. :rofl:

https://corpora.tika.apache.org/datasette/file_profiles

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
741804334 https://github.com/simonw/datasette/issues/1091#issuecomment-741804334 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDc0MTgwNDMzNA== tballison 6739646 2020-12-09T14:26:05Z 2020-12-09T14:26:05Z NONE

Anything we can do to help debug this? Thank you, again!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
741665253 https://github.com/simonw/datasette/issues/766#issuecomment-741665253 https://api.github.com/repos/simonw/datasette/issues/766 MDEyOklzc3VlQ29tbWVudDc0MTY2NTI1Mw== clausjuhl 2181410 2020-12-09T09:59:05Z 2020-12-09T09:59:05Z NONE

Hi Simon. Any news on using wildcard-searches with datasette? Thanks!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Enable wildcard-searches by default 617323873  
740383884 https://github.com/simonw/datasette/issues/815#issuecomment-740383884 https://api.github.com/repos/simonw/datasette/issues/815 MDEyOklzc3VlQ29tbWVudDc0MDM4Mzg4NA== sturzl 11761973 2020-12-08T05:23:18Z 2020-12-08T05:23:18Z NONE

hey! I'd like to take a look at this if you're open to a PR for it

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Group permission checks by request on /-/permissions debug page 634663505  
738620153 https://github.com/simonw/datasette/pull/1130#issuecomment-738620153 https://api.github.com/repos/simonw/datasette/issues/1130 MDEyOklzc3VlQ29tbWVudDczODYyMDE1Mw== codecov[bot] 22429695 2020-12-04T07:34:48Z 2020-12-04T07:34:48Z NONE

Codecov Report

Merging #1130 (8d4c69c) into main (49d8fc0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1130   +/-   ##
=======================================
  Coverage   91.42%   91.42%           
=======================================
  Files          31       31           
  Lines        3873     3873           
=======================================
  Hits         3541     3541           
  Misses        332      332           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 49d8fc0...8d4c69c. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix footer not sticking to bottom in short pages 756876238  
738613497 https://github.com/simonw/datasette/pull/1128#issuecomment-738613497 https://api.github.com/repos/simonw/datasette/issues/1128 MDEyOklzc3VlQ29tbWVudDczODYxMzQ5Nw== codecov[bot] 22429695 2020-12-04T07:17:12Z 2020-12-04T07:17:12Z NONE

Codecov Report

Merging #1128 (7004c3b) into main (49d8fc0) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #1128      +/-   ##
==========================================
- Coverage   91.42%   91.42%   -0.01%     
==========================================
  Files          31       31              
  Lines        3873     3872       -1     
==========================================
- Hits         3541     3540       -1     
  Misses        332      332              
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/utils/asgi.py</td> <td>92.13% <ø> (-0.04%)</td> <td>:arrow_down:</td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 49d8fc0...7004c3b. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix startup error on windows 756867924  
737428262 https://github.com/simonw/datasette/issues/942#issuecomment-737428262 https://api.github.com/repos/simonw/datasette/issues/942 MDEyOklzc3VlQ29tbWVudDczNzQyODI2Mg== zaneselvans 596279 2020-12-02T18:55:21Z 2020-12-02T18:55:21Z NONE

Are you thinking that those metadata tables would be added to the SQLite DB by Datasette, when you tell it to wrap up the database, with the metadata coming from the metadata.json? Would it be easy to allow the prepopulation of those tables in the database itself? We've been struggling with the best way to make sure that the data is always accompanied by metadata, and baking it all into the database itself would be nice, since then we wouldn't need to worry about separately distributing different files in different contexts.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Support column descriptions in metadata.json 681334912  
736318377 https://github.com/simonw/datasette/pull/1122#issuecomment-736318377 https://api.github.com/repos/simonw/datasette/issues/1122 MDEyOklzc3VlQ29tbWVudDczNjMxODM3Nw== codecov[bot] 22429695 2020-12-01T08:47:33Z 2020-12-01T08:47:33Z NONE

Codecov Report

Merging #1122 (94ea22f) into main (a970276) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1122   +/-   ##
=======================================
  Coverage   91.49%   91.49%           
=======================================
  Files          31       31           
  Lines        3856     3856           
=======================================
  Hits         3528     3528           
  Misses        328      328           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a970276...94ea22f. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix misaligned table actions cog 754179035  
736173084 https://github.com/simonw/datasette/issues/942#issuecomment-736173084 https://api.github.com/repos/simonw/datasette/issues/942 MDEyOklzc3VlQ29tbWVudDczNjE3MzA4NA== zaneselvans 596279 2020-12-01T02:20:58Z 2020-12-01T02:20:58Z NONE

Are there common patterns for storing column-based metadata inside SQLite itself? I know Postgres allows "comment" fields, which this is kind of trying to replicate. Should the units and description and possibly other per-column metadata fields be combined into a single (tabular?) structure, that would be displayed above the data on the table / query results page?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Support column descriptions in metadata.json 681334912  
736135125 https://github.com/simonw/datasette/pull/1120#issuecomment-736135125 https://api.github.com/repos/simonw/datasette/issues/1120 MDEyOklzc3VlQ29tbWVudDczNjEzNTEyNQ== codecov[bot] 22429695 2020-12-01T00:22:36Z 2020-12-01T00:22:36Z NONE

Codecov Report

Merging #1120 (ddad8db) into main (461670a) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main    #1120   +/-   ##
=======================================
  Coverage   91.48%   91.49%           
=======================================
  Files          31       31           
  Lines        3852     3856    +4     
=======================================
+ Hits         3524     3528    +4     
  Misses        328      328           
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/utils/__init__.py</td> <td>94.10% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/sqlite.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 461670a...ddad8db. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
generated_columns table in fixtures.py 753898359  
736088949 https://github.com/simonw/datasette/pull/1117#issuecomment-736088949 https://api.github.com/repos/simonw/datasette/issues/1117 MDEyOklzc3VlQ29tbWVudDczNjA4ODk0OQ== nattaylor 2789593 2020-11-30T22:15:58Z 2020-11-30T22:23:19Z NONE

I just deployed this and its working great.

~In a very unscientific benchmark my response times went from around 22-25ms to 33-36ms, but I didn't even dig enough to confirm the latency is related to the change. It's on a VPS, so maybe the load changed.~ I don't see any difference in performance.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Support for generated columns 753767911  
736067475 https://github.com/simonw/datasette/pull/1117#issuecomment-736067475 https://api.github.com/repos/simonw/datasette/issues/1117 MDEyOklzc3VlQ29tbWVudDczNjA2NzQ3NQ== codecov[bot] 22429695 2020-11-30T21:28:22Z 2020-11-30T21:28:22Z NONE

Codecov Report

Merging #1117 (ccdf2c6) into main (dea3c50) will decrease coverage by 0.00%.
The diff coverage is 95.23%.

@@            Coverage Diff             @@
##             main    #1117      +/-   ##
==========================================
- Coverage   91.48%   91.48%   -0.01%     
==========================================
  Files          30       31       +1     
  Lines        3841     3852      +11     
==========================================
+ Hits         3514     3524      +10     
- Misses        327      328       +1     
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/utils/__init__.py</td> <td>94.10% <87.50%> (-0.20%)</td> <td>:arrow_down:</td> </tr> <tr> <td>datasette/utils/sqlite.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dea3c50...ccdf2c6. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Support for generated columns 753767911  
736005833 https://github.com/simonw/datasette/issues/1116#issuecomment-736005833 https://api.github.com/repos/simonw/datasette/issues/1116 MDEyOklzc3VlQ29tbWVudDczNjAwNTgzMw== nattaylor 2789593 2020-11-30T19:54:39Z 2020-11-30T19:54:39Z NONE

@simonw thanks for investigating so quickly. If it is undesirable to change that hidden behavior, maybe something like this is a suitable workaround:

SELECT * FROM pragma_table_xinfo('deeds') where hidden in (0,2);
0|body|TEXT|0||0|0
1|id|INT GENERATED ALWAYS|0||0|2
2|consideration|INT GENERATED ALWAYS|0||0|2
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
GENERATED column support 753668177  
735440555 https://github.com/simonw/datasette/issues/123#issuecomment-735440555 https://api.github.com/repos/simonw/datasette/issues/123 MDEyOklzc3VlQ29tbWVudDczNTQ0MDU1NQ== jsancho-gpl 11912854 2020-11-29T19:12:30Z 2020-11-29T19:12:30Z NONE

datasette-connectors provides an API for making connectors for any file based database. For example, datasette-pytables is a connector for HDF5 files, so now is possible to use this type of files with Datasette.

It'd be nice if Datasette coud provide that API directly, for other file formats and for urls too.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Datasette serve should accept paths/URLs to CSVs and other file formats 275125561  
735436014 https://github.com/simonw/datasette/issues/1114#issuecomment-735436014 https://api.github.com/repos/simonw/datasette/issues/1114 MDEyOklzc3VlQ29tbWVudDczNTQzNjAxNA== danp 2182 2020-11-29T18:33:30Z 2020-11-29T18:33:30Z NONE

Thank you!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
--load-extension=spatialite not working with datasetteproject/datasette docker image 752966476  
735279733 https://github.com/simonw/datasette/pull/1112#issuecomment-735279733 https://api.github.com/repos/simonw/datasette/issues/1112 MDEyOklzc3VlQ29tbWVudDczNTI3OTczMw== codecov[bot] 22429695 2020-11-28T19:24:28Z 2020-11-28T19:24:28Z NONE

Codecov Report

Merging #1112 (1a30fc2) into main (37d18a5) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1112   +/-   ##
=======================================
  Coverage   91.44%   91.44%           
=======================================
  Files          30       30           
  Lines        3833     3833           
=======================================
  Hits         3505     3505           
  Misses        328      328           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 37d18a5...1a30fc2. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fix --metadata doc usage 752749485  
731260091 https://github.com/simonw/datasette/issues/1094#issuecomment-731260091 https://api.github.com/repos/simonw/datasette/issues/1094 MDEyOklzc3VlQ29tbWVudDczMTI2MDA5MQ== bapowell 4808085 2020-11-20T16:11:29Z 2020-11-20T16:11:29Z NONE

I can confirm this issue, running version 0.51.1 under Windows.

Fixed by commenting out the following line near the top of datasette\utils\asgi.py :

#from os import EX_CANTCREAT

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
import EX_CANTCREAT means datasette fails to work on Windows 743011397  
730893729 https://github.com/simonw/datasette/issues/511#issuecomment-730893729 https://api.github.com/repos/simonw/datasette/issues/511 MDEyOklzc3VlQ29tbWVudDczMDg5MzcyOQ== Carib0u 4060506 2020-11-20T06:35:13Z 2020-11-20T06:35:13Z NONE

Trying to run on Windows today, I get an error from the utils/asgi.py module.

It's trying from os import EX_CANTCREAT which is Unix-only. I commented this line out, and (so far) it's working.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get Datasette working on Windows, including CI 456578474  
729484478 https://github.com/dogsheep/twitter-to-sqlite/issues/52#issuecomment-729484478 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/52 MDEyOklzc3VlQ29tbWVudDcyOTQ4NDQ3OA== fatihky 4169772 2020-11-18T07:12:45Z 2020-11-18T07:12:45Z NONE

I'm so sorry that you already have --since_id option and that's enough for the case I've mentioned. Thank you for this excellent tool!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Discussion: Adding support for fetching only fresh tweets 745393298  
729045320 https://github.com/simonw/datasette/issues/1091#issuecomment-729045320 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDcyOTA0NTMyMA== tballison 6739646 2020-11-17T16:31:00Z 2020-11-17T16:31:00Z NONE

We're using mod_proxy.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
729018386 https://github.com/simonw/datasette/issues/1091#issuecomment-729018386 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDcyOTAxODM4Ng== tballison 6739646 2020-11-17T15:48:58Z 2020-11-17T15:48:58Z NONE

I don't think we are, but I'll check with Maruan.

I think this is the relevant part of our config?

  Alias "/base/" "/usr/share/corpora/"
  <Directory "/usr/share/corpora/">
    Options +Indexes -Multiviews
    AllowOverride None
  </Directory>

  ProxyPreserveHost On

  ProxyPass /datasette http://0.0.0.0:8001
  ProxyPassReverse /datasette http://0.0.0.0:8001

</VirtualHost>
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
727655018 https://github.com/simonw/datasette/pull/1097#issuecomment-727655018 https://api.github.com/repos/simonw/datasette/issues/1097 MDEyOklzc3VlQ29tbWVudDcyNzY1NTAxOA== codecov[bot] 22429695 2020-11-15T23:18:18Z 2020-11-15T23:18:18Z NONE

Codecov Report

Merging #1097 (e89211d) into main (5eb8e9b) will not change coverage.
The diff coverage is 84.61%.

@@           Coverage Diff           @@
##             main    #1097   +/-   ##
=======================================
  Coverage   91.38%   91.38%           
=======================================
  Files          30       30           
  Lines        3785     3785           
=======================================
  Hits         3459     3459           
  Misses        326      326           
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/cli.py</td> <td>73.63% <0.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/inspect.py</td> <td>36.11% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/publish/common.py</td> <td>94.73% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/tracer.py</td> <td>81.60% <0.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/testing.py</td> <td>95.16% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/publish/heroku.py</td> <td>87.12% <50.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/app.py</td> <td>96.46% <66.66%> (ø)</td> <td></td> </tr> <tr> <td>datasette/filters.py</td> <td>94.35% <77.77%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/__init__.py</td> <td>94.01% <86.20%> (ø)</td> <td></td> </tr> <tr> <td>datasette/views/table.py</td> <td>95.92% <92.30%> (ø)</td> <td></td> </tr> <tr> <td>... and 9 more</td> <td></td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5eb8e9b...e89211d. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Use f-strings 743369188  
726801731 https://github.com/simonw/datasette/issues/1091#issuecomment-726801731 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDcyNjgwMTczMQ== tballison 6739646 2020-11-13T14:40:56Z 2020-11-13T14:40:56Z NONE

My headers aren't clickable/sortable with custom sql, but I think that's by design.

In the default view, https://corpora.tika.apache.org/datasette/file_profiles/file_profiles, ah, y, now I see that the headers should be sortable, but you're right the base_url is not applied.

base_url works with "View and Edit SQL" and with "(advanced)"

As you point out, does not work with the export csv, json, other or with the "Next page" navigational button at the bottom.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
726798745 https://github.com/simonw/datasette/issues/1091#issuecomment-726798745 https://api.github.com/repos/simonw/datasette/issues/1091 MDEyOklzc3VlQ29tbWVudDcyNjc5ODc0NQ== tballison 6739646 2020-11-13T14:35:22Z 2020-11-13T14:35:22Z NONE

I'm starting this with docker like so:

docker run --name datasette -d -p 8001:8001 -vpwd:/mnt datasetteproject/datasette datasette -p 8001 -h 0.0.0.0 /mnt/file_profiles.db --config sql_time_limit_ms:120000 --config max_returned_rows:100000 --config base_url:/datasette/ --config cache_size_kb:50000

I'm not doing any templating or anything else custom.

Apropos of nothing, I swapped out a simpler db, so this query should now work:

https://corpora.tika.apache.org/datasette/file_profiles?sql=select%0D%0A++*%0D%0Afrom%0D%0A++file_profiles+fp%0D%0Alimit%0D%0A++10

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.json and .csv exports fail to apply base_url 742011049  
726385782 https://github.com/simonw/datasette/issues/865#issuecomment-726385782 https://api.github.com/repos/simonw/datasette/issues/865 MDEyOklzc3VlQ29tbWVudDcyNjM4NTc4Mg== tballison 6739646 2020-11-12T22:41:06Z 2020-11-12T22:41:06Z NONE

The same is true if I select advanced export and hit the 'export csv' at the bottom of the page.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921  
726385422 https://github.com/simonw/datasette/issues/865#issuecomment-726385422 https://api.github.com/repos/simonw/datasette/issues/865 MDEyOklzc3VlQ29tbWVudDcyNjM4NTQyMg== tballison 6739646 2020-11-12T22:40:14Z 2020-11-12T22:40:14Z NONE

Just tested with the latest Docker image, and it works pretty much everywhere! THANK YOU!

I did notice that if I try to export json or csv, the base is not applied. Not sure if I should reopen this issue or open a new one.

To see this, go here: https://corpora.tika.apache.org/datasette/corpora-metadata/REF_PARSE_EXCEPTION_TYPES

Click/hover over json or CSV and you'll see that the 'datasette' base is not included.

Again, many thanks!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921  
725731685 https://github.com/simonw/datasette/pull/1085#issuecomment-725731685 https://api.github.com/repos/simonw/datasette/issues/1085 MDEyOklzc3VlQ29tbWVudDcyNTczMTY4NQ== codecov[bot] 22429695 2020-11-12T00:01:18Z 2020-11-12T00:01:18Z NONE

Codecov Report

Merging #1085 (51e7651) into main (2a981e2) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1085   +/-   ##
=======================================
  Coverage   91.38%   91.38%           
=======================================
  Files          30       30           
  Lines        3785     3785           
=======================================
  Hits         3459     3459           
  Misses        326      326           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2a981e2...51e7651. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Use FTS4 in fixtures 740512882  
721547177 https://github.com/simonw/datasette/issues/1082#issuecomment-721547177 https://api.github.com/repos/simonw/datasette/issues/1082 MDEyOklzc3VlQ29tbWVudDcyMTU0NzE3Nw== justmars 39538958 2020-11-04T06:52:30Z 2020-11-04T06:53:16Z NONE

I think I tried the same db size on the following scenarios in Digital Ocean:
1. Basic ($5/month) with 512MB RAM
2. Basic ($10/month) with 1GB RAM
3. Pro ($12/month) with 1GB RAM

All such attempts conked out with "out of memory" errors

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
DigitalOcean buildpack memory errors for large sqlite db? 735852274  
720741903 https://github.com/simonw/datasette/issues/596#issuecomment-720741903 https://api.github.com/repos/simonw/datasette/issues/596 MDEyOklzc3VlQ29tbWVudDcyMDc0MTkwMw== terrycojones 132978 2020-11-02T21:44:45Z 2020-11-02T21:44:45Z NONE

Hi & thanks for the note @simonw! I wish I had more time to play with (and contribute to) datasette. I know you don't need me to tell you that it's super cool :-)

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Handle really wide tables better 507454958  
719657478 https://github.com/simonw/datasette/pull/1069#issuecomment-719657478 https://api.github.com/repos/simonw/datasette/issues/1069 MDEyOklzc3VlQ29tbWVudDcxOTY1NzQ3OA== codecov[bot] 22429695 2020-10-30T16:31:21Z 2020-10-30T17:46:36Z NONE

Codecov Report

Merging #1069 into main will increase coverage by 0.01%.
The diff coverage is 95.83%.

@@            Coverage Diff             @@
##             main    #1069      +/-   ##
==========================================
+ Coverage   91.30%   91.32%   +0.01%     
==========================================
  Files          29       29              
  Lines        3736     3756      +20     
==========================================
+ Hits         3411     3430      +19     
- Misses        325      326       +1     
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/views/base.py</td> <td>93.94% <ø> (-0.04%)</td> <td>:arrow_down:</td> </tr> <tr> <td>datasette/app.py</td> <td>96.38% <95.45%> (-0.05%)</td> <td>:arrow_down:</td> </tr> <tr> <td>datasette/hookspecs.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 222f79b...92f3840. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
load_template() plugin hook 733303548  
719153773 https://github.com/simonw/datasette/pull/1065#issuecomment-719153773 https://api.github.com/repos/simonw/datasette/issues/1065 MDEyOklzc3VlQ29tbWVudDcxOTE1Mzc3Mw== codecov[bot] 22429695 2020-10-30T03:44:57Z 2020-10-30T03:44:57Z NONE

Codecov Report

Merging #1065 into main will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1065      +/-   ##
==========================================
+ Coverage   91.23%   91.27%   +0.03%     
==========================================
  Files          28       29       +1     
  Lines        3710     3724      +14     
==========================================
+ Hits         3385     3399      +14     
  Misses        325      325              
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/plugins.py</td> <td>82.35% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/app.py</td> <td>96.42% <100.00%> (+0.03%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/default_menu_links.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/hookspecs.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1a861be...5f118b5. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Nav menu plus menu_links() hook 732856937  
719049115 https://github.com/simonw/datasette/pull/1061#issuecomment-719049115 https://api.github.com/repos/simonw/datasette/issues/1061 MDEyOklzc3VlQ29tbWVudDcxOTA0OTExNQ== codecov[bot] 22429695 2020-10-29T22:00:57Z 2020-10-29T22:00:57Z NONE

Codecov Report

Merging #1061 into main will increase coverage by 0.07%.
The diff coverage is 96.87%.

@@            Coverage Diff             @@
##             main    #1061      +/-   ##
==========================================
+ Coverage   91.13%   91.20%   +0.07%     
==========================================
  Files          27       28       +1     
  Lines        3677     3697      +20     
==========================================
+ Hits         3351     3372      +21     
+ Misses        326      325       -1     
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/plugins.py</td> <td>82.35% <ø> (ø)</td> <td></td> </tr> <tr> <td>datasette/views/base.py</td> <td>93.77% <0.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/app.py</td> <td>96.38% <100.00%> (+0.15%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/blob_renderer.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/utils/asgi.py</td> <td>92.13% <100.00%> (+0.17%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/views/database.py</td> <td>97.04% <100.00%> (+0.07%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/views/table.py</td> <td>95.86% <100.00%> (-0.22%)</td> <td>:arrow_down:</td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d6f9ff7...1196d08. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
.blob output renderer 732634375  
718317997 https://github.com/simonw/datasette/issues/1050#issuecomment-718317997 https://api.github.com/repos/simonw/datasette/issues/1050 MDEyOklzc3VlQ29tbWVudDcxODMxNzk5Nw== thadk 283343 2020-10-29T02:24:50Z 2020-10-29T02:29:24Z NONE

Unsolicited feedback for an unreleased feature of the current unreleased GitHub version (I casually wanted to access a blob row) – the existing #1036 route doesn't support special characters in database or table names (e.g. @() ). Maybe this is motivation for your new idea here.

Also I got this error/crash with my blob and wasn't able to get the file: https://gist.github.com/thadk/28ac32af0e88747ce9056c90b0b19d34

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Switch to .blob render extension for BLOB downloads 729057388  
718243062 https://github.com/simonw/datasette/pull/1060#issuecomment-718243062 https://api.github.com/repos/simonw/datasette/issues/1060 MDEyOklzc3VlQ29tbWVudDcxODI0MzA2Mg== codecov[bot] 22429695 2020-10-28T22:23:33Z 2020-10-28T22:23:33Z NONE

Codecov Report

Merging #1060 into main will increase coverage by 6.42%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1060      +/-   ##
==========================================
+ Coverage   84.71%   91.13%   +6.42%     
==========================================
  Files          28       27       -1     
  Lines        3957     3677     -280     
==========================================
- Hits         3352     3351       -1     
+ Misses        605      326     -279     
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/cli.py</td> <td>73.63% <100.00%> (+0.13%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/version.py</td> <td>100.00% <100.00%> (ø)</td> <td></td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update abcf022...4725d46. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
New explicit versioning mechanism 731827081  
717938992 https://github.com/simonw/datasette/pull/1059#issuecomment-717938992 https://api.github.com/repos/simonw/datasette/issues/1059 MDEyOklzc3VlQ29tbWVudDcxNzkzODk5Mg== codecov[bot] 22429695 2020-10-28T13:38:46Z 2020-10-28T13:38:46Z NONE

Codecov Report

Merging #1059 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1059   +/-   ##
=======================================
  Coverage   84.71%   84.71%           
=======================================
  Files          28       28           
  Lines        3957     3957           
=======================================
  Hits         3352     3352           
  Misses        605      605           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7d9fedc...e46327a. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Update aiofiles requirement from <0.6,>=0.4 to >=0.4,<0.7 731445447  
717489501 https://github.com/simonw/datasette/pull/1056#issuecomment-717489501 https://api.github.com/repos/simonw/datasette/issues/1056 MDEyOklzc3VlQ29tbWVudDcxNzQ4OTUwMQ== codecov[bot] 22429695 2020-10-27T19:39:41Z 2020-10-27T19:39:41Z NONE

Codecov Report

Merging #1056 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1056   +/-   ##
=======================================
  Coverage   84.70%   84.70%           
=======================================
  Files          28       28           
  Lines        3955     3955           
=======================================
  Hits         3350     3350           
  Misses        605      605           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 26bb4a2...a7b2aab. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Radical new colour scheme and base styles, courtesy of @natbat 730752399  
716146238 https://github.com/simonw/datasette/pull/1049#issuecomment-716146238 https://api.github.com/repos/simonw/datasette/issues/1049 MDEyOklzc3VlQ29tbWVudDcxNjE0NjIzOA== codecov[bot] 22429695 2020-10-25T13:13:32Z 2020-10-25T13:13:32Z NONE

Codecov Report

Merging #1049 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1049   +/-   ##
=======================================
  Coverage   84.72%   84.72%           
=======================================
  Files          28       28           
  Lines        3942     3942           
=======================================
  Hits         3340     3340           
  Misses        602      602           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 42f4851...50a743a. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Add template block prior to extra URL loaders 729017519  
713920562 https://github.com/simonw/datasette/pull/1040#issuecomment-713920562 https://api.github.com/repos/simonw/datasette/issues/1040 MDEyOklzc3VlQ29tbWVudDcxMzkyMDU2Mg== codecov[bot] 22429695 2020-10-21T22:44:12Z 2020-10-24T23:08:14Z NONE

Codecov Report

Merging #1040 into main will increase coverage by 0.10%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1040      +/-   ##
==========================================
+ Coverage   84.65%   84.76%   +0.10%     
==========================================
  Files          28       28              
  Lines        3924     3938      +14     
==========================================
+ Hits         3322     3338      +16     
+ Misses        602      600       -2     
<table> <thead> <tr> <th>Impacted Files</th> <th>Coverage Δ</th> <th></th> </tr> </thead> <tbody> <tr> <td>datasette/views/index.py</td> <td>98.18% <ø> (+1.69%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/views/special.py</td> <td>92.70% <ø> (-0.82%)</td> <td>:arrow_down:</td> </tr> <tr> <td>datasette/app.py</td> <td>96.37% <100.00%> (+0.17%)</td> <td>:arrow_up:</td> </tr> <tr> <td>datasette/views/base.py</td> <td>93.77% <100.00%> (ø)</td> <td></td> </tr> <tr> <td>datasette/views/table.py</td> <td>96.07% <100.00%> (+0.22%)</td> <td>:arrow_up:</td> </tr> </tbody> </table>

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bf82b3d...4f3165f. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
/db/table/-/blob/pk/column.blob download URL 726910999  
714916127 https://github.com/simonw/datasette/pull/1044#issuecomment-714916127 https://api.github.com/repos/simonw/datasette/issues/1044 MDEyOklzc3VlQ29tbWVudDcxNDkxNjEyNw== codecov[bot] 22429695 2020-10-23T05:12:52Z 2020-10-23T05:12:52Z NONE

Codecov Report

Merging #1044 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1044   +/-   ##
=======================================
  Coverage   84.65%   84.65%           
=======================================
  Files          28       28           
  Lines        3924     3924           
=======================================
  Hits         3322     3322           
  Misses        602      602           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d0cc6f4...6453ab1. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Add minimum supported python 727916744  
714915025 https://github.com/simonw/datasette/pull/1043#issuecomment-714915025 https://api.github.com/repos/simonw/datasette/issues/1043 MDEyOklzc3VlQ29tbWVudDcxNDkxNTAyNQ== codecov[bot] 22429695 2020-10-23T05:09:09Z 2020-10-23T05:09:09Z NONE

Codecov Report

Merging #1043 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1043   +/-   ##
=======================================
  Coverage   84.65%   84.65%           
=======================================
  Files          28       28           
  Lines        3924     3924           
=======================================
  Hits         3322     3322           
  Misses        602      602           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d0cc6f4...dc4129c. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Include LICENSE in sdist 727915394  
714289680 https://github.com/simonw/datasette/pull/1031#issuecomment-714289680 https://api.github.com/repos/simonw/datasette/issues/1031 MDEyOklzc3VlQ29tbWVudDcxNDI4OTY4MA== frankier 299380 2020-10-22T07:23:52Z 2020-10-22T07:23:52Z NONE

The bug is that currently when there are databases passed in, but no -i flag, e.g. in configuration directory mode, inclusion in inspect-data.json does not automatically cause databases to be considered immutable, as described in the documentation.

The reason is that the -i flag is specified multiple=True, which means when it is not passed in we will get an empty list [], rather than None. So the current code decides that no databases are immutable rather than falling back to inspect-data.json -- as is presumably intended.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Fallback to databases in inspect-data.json when no -i options are passed 724369025  
714219725 https://github.com/simonw/sqlite-utils/issues/171#issuecomment-714219725 https://api.github.com/repos/simonw/sqlite-utils/issues/171 MDEyOklzc3VlQ29tbWVudDcxNDIxOTcyNQ== mhalle 649467 2020-10-22T04:38:35Z 2020-10-22T04:38:35Z NONE

Thanks. As I said, I think the result (being able to query tree structures like ancestors and descendants) is more important than the implementation, and I agree that this particular sqlite extension is too obscure. Just providing an sqlite utility to build or rebuild a transitive closure table might be more generically useful. I find that hierarchical data shows up pretty frequently in some data science problems.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Idea: transitive closure tables for tree structures 707407567  
713320666 https://github.com/simonw/datasette/pull/1038#issuecomment-713320666 https://api.github.com/repos/simonw/datasette/issues/1038 MDEyOklzc3VlQ29tbWVudDcxMzMyMDY2Ng== codecov[bot] 22429695 2020-10-21T05:50:38Z 2020-10-21T05:50:38Z NONE

Codecov Report

Merging #1038 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1038   +/-   ##
=======================================
  Coverage   84.65%   84.65%           
=======================================
  Files          28       28           
  Lines        3924     3924           
=======================================
  Hits         3322     3322           
  Misses        602      602           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 66120a7...7fc0cce. Read the comment docs.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
DOC: Fix syntax error 726154220  
712855389 https://github.com/simonw/datasette/issues/991#issuecomment-712855389 https://api.github.com/repos/simonw/datasette/issues/991 MDEyOklzc3VlQ29tbWVudDcxMjg1NTM4OQ== furilo 24740 2020-10-20T13:36:41Z 2020-10-20T13:36:41Z NONE

Here is one quick sketch (done in Figma :P) for an idea: a possible filter to switch between showing all tables from all databases, or grouping tables by database.

(the switch is interactive)

All tables: https://www.figma.com/proto/BjFrMroEtmVx6EeRjvSrox/Datasette-test?node-id=1%3A2&viewport=536%2C348%2C0.5&scaling=min-zoom

Grouped: https://www.figma.com/proto/BjFrMroEtmVx6EeRjvSrox/Datasette-test?node-id=3%3A974&viewport=536%2C348%2C0.5&scaling=min-zoom

When only 1 database: https://www.figma.com/proto/BjFrMroEtmVx6EeRjvSrox/Datasette-test?node-id=1%3A162&viewport=536%2C348%2C0.5&scaling=min-zoom

Is this is useful, I can send some more suggestions/sketches.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Redesign application homepage 714377268  

Next page

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

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]);