home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

12 rows where issue = 1109884720 sorted by updated_at descending

✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

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

user 1

  • simonw 12

issue 1

  • Ensure "pip install datasette" still works with Python 3.6 · 12 ✖

author_association 1

  • OWNER 12
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
1020456608 https://github.com/simonw/datasette/issues/1609#issuecomment-1020456608 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c480u6g simonw 9599 2022-01-24T19:20:09Z 2022-01-24T19:20:09Z OWNER

Uvicorn have a release out now that would have fixed this issue if I hadn't shipped my own fix: https://github.com/encode/uvicorn/releases/tag/0.17.0.post1

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018104868 https://github.com/simonw/datasette/issues/1609#issuecomment-1018104868 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rwwk simonw 9599 2022-01-21T02:24:13Z 2022-01-21T02:24:13Z OWNER

Just shipped 0.60.1 with the fix - and tested that pip install datasette does indeed work correctly on Python 3.6.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018094767 https://github.com/simonw/datasette/issues/1609#issuecomment-1018094767 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48ruSv simonw 9599 2022-01-21T02:04:14Z 2022-01-21T02:04:14Z OWNER

So I don't need to release 0.60.1 AND 0.60.2 after all - I can just release 0.60.1 with a bug fix that it no longer breaks installation for Python 3.6.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018092984 https://github.com/simonw/datasette/issues/1609#issuecomment-1018092984 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rt24 simonw 9599 2022-01-21T02:00:38Z 2022-01-21T02:00:38Z OWNER

Out of curiosity, I installed this latest setup.py file using both Python 3.6 and Python 3.10, ran pip freeze on both of them and created a Gist to compare the difference. The result is here: https://gist.github.com/simonw/2e7d5b1beba675ef9a5bcd310cadc372/revisions

From that, it looks like the Python packages in my dependencies which have released new versions that don't work with Python 3.6 are:

  • https://pypi.org/project/janus/#history
  • https://pypi.org/project/Pint/#history
  • https://pypi.org/project/platformdirs/#history
  • https://pypi.org/project/uvicorn/#history (already discussed)

Sure enough, for the first three of those browsing through their recent versions on PyPI confirms that they switched from e.g. "Requires: Python >=3.6" on https://pypi.org/project/janus/0.7.0/ to "Requires: Python >=3.7" on https://pypi.org/project/janus/1.0.0/

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018091322 https://github.com/simonw/datasette/issues/1609#issuecomment-1018091322 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rtc6 simonw 9599 2022-01-21T01:56:42Z 2022-01-21T01:56:42Z OWNER

OK, the environment markers approach seems to work!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018086697 https://github.com/simonw/datasette/issues/1609#issuecomment-1018086697 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rsUp simonw 9599 2022-01-21T01:46:43Z 2022-01-21T01:46:43Z OWNER

https://github.com/simonw/datasette/runs/4890775227?check_suite_focus=true - the tests passed on Python 3.6 for this commit with the pinned dependencies: https://github.com/simonw/datasette/commit/41060e7e7cb838328c879de6a98ae794dc1886d0

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018086273 https://github.com/simonw/datasette/issues/1609#issuecomment-1018086273 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rsOB simonw 9599 2022-01-21T01:45:46Z 2022-01-21T01:45:46Z OWNER

This whole thing reminds me of my ongoing internal debate about version pinning: should the Datasette package released to PyPI pin to the exact versions of the dependencies that are known to work, or should it allow a range of dependencies so users can pick other versions of the dependencies to use in their environment?

As I understand it, the general rule is to use exact pinning for applications but use ranges for libraries.

Datasette is almost entirely an application... but it can also be used as a library - and in fact I'm hoping to encourage that usage more in the future, see: - #1398

I'd also like to release a packaged version of Datasette that doesn't require Uvicorn, for running on AWS Lambda and other function-as-a-service platforms. Those platforms have their own HTTP layer and hence don't need the Uvicorn dependency.

Maybe the answer is to have a datasette-core package which provides the core of Datasette with unpinned dependencies and no Uvicorn, and then have the existing datasette package provide the Datasette CLI tool with Uvicorn and pinned dependencies?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018082792 https://github.com/simonw/datasette/issues/1609#issuecomment-1018082792 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rrXo simonw 9599 2022-01-21T01:37:11Z 2022-01-21T01:37:11Z OWNER

Another option from https://twitter.com/samuel_hames/status/1484327636860293121 - environment markers, described in https://www.python.org/dev/peps/pep-0508/#environment-markers

Found some examples of those in use using GitHub code search: https://cs.github.com/?scopeName=All+repos&scope=&q=%22%3Bpython_version%22+path%3Asetup.py - in particular https://github.com/xmendez/wfuzz/blob/1b695ee9a87d66a7d7bf6cae70d60a33fae51541/setup.py#L31-L38

python install_requires = [ 'pycurl', 'pyparsing<2.4.2;python_version<="3.4"', 'pyparsing>=2.4*;python_version>="3.5"', 'six', 'configparser;python_version<"3.5"', 'chardet', ] So maybe I can ship 0.60.1 with loose dependencies except for the uvicorn one on Python 3.6, using an environment marker.

Here's my setup.py at the moment: https://github.com/simonw/datasette/blob/ffca55dfd7cc9b53522c2e5a2fa1ff67c9beadf2/setup.py#L44-L61

One other problem: there might be packages in that list right now which don't specify their 3.6 Python version but which will, at some point in the future, release a new version that doesn't work with 3.6 (like Uvicorn did) - in which case Python 3.6 installs would break in the future.

I think what I'll do then is ship the 0.60.1 Python 3.6 version with strict upper limits on each version which are the current, tested-with-Datasette-on-Python3.6 versions.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018077009 https://github.com/simonw/datasette/issues/1609#issuecomment-1018077009 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rp9R simonw 9599 2022-01-21T01:24:15Z 2022-01-21T01:24:43Z OWNER

Problem: if I ship this, it will be the most recent release of Datasette - but unlike other previous releases it has exactly pinned versions of all of the dependencies. Which is bad for people who run pip install datasette but want to not be stuck to those exact library versions.

So maybe I ship this as 0.60.1, then ship a 0.60.2 release directly afterwards which unpins the dependencies again and requires Python 3.7?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018075357 https://github.com/simonw/datasette/issues/1609#issuecomment-1018075357 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rpjd simonw 9599 2022-01-21T01:20:56Z 2022-01-21T01:20:56Z OWNER

I used the combo of pyenv and pipenv to run tests and figure out what the most recent versions of each dependency were that worked on Python 3.6. I also clicked around in the latest releases on pages such as https://pypi.org/project/aiofiles

cd /tmp git clone git@github.com:simonw/datasette cd /tmp/datasette pipenv shell --python 3.6.10 pip install -e '.[test]' pytest I also used pip freeze | grep black to see which version was installed, since packages with python_requires= in them would automatically install the highest compatible version.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018064620 https://github.com/simonw/datasette/issues/1609#issuecomment-1018064620 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rm7s simonw 9599 2022-01-21T01:00:12Z 2022-01-21T01:00:12Z OWNER

I think there are two possible solutions then:

  1. Convince Uvicorn to publish one last 0.16.1 version which includes that python_requires= line, such that there's a version of Uvicorn on PyPI that Python 3.6 can still install.
  2. Release a 0.60.1 version of Datasette which pins that Uvicorn version, and hence can be installed.

I've made the request for 1) in Uvicorn Gitter here: https://gitter.im/encode/community?at=61ea044a6d9ba23328d0fa28

I'm going to investigate option 2) myself now.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  
1018063681 https://github.com/simonw/datasette/issues/1609#issuecomment-1018063681 https://api.github.com/repos/simonw/datasette/issues/1609 IC_kwDOBm6k_c48rmtB simonw 9599 2022-01-21T00:58:25Z 2022-01-21T00:58:32Z OWNER

On Twitter: https://twitter.com/simonw/status/1484317711672877065

Here's the problem: Uvicorn only added python_requires to their setup.py a few days ago, which means the releases they have out on PyPI at the moment don't specify the Python version they need, which is why this mechanism doesn't work as expected: - https://github.com/encode/uvicorn/pull/1328

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ensure "pip install datasette" still works with Python 3.6 1109884720  

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]);
Powered by Datasette · Queries took 22.217ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows