html_url,issue_url,id,node_id,user,user_label,created_at,updated_at,author_association,body,reactions,issue,issue_label,performed_via_github_app https://github.com/simonw/datasette/issues/514#issuecomment-509480062,https://api.github.com/repos/simonw/datasette/issues/514,509480062,MDEyOklzc3VlQ29tbWVudDUwOTQ4MDA2Mg==,9599,simonw,2019-07-09T04:15:11Z,2019-07-09T04:15:11Z,OWNER,"Running as root isn't ideal because it means that if there are any security vulnerabilities in Datasette an attacker could use them to execute any command they like as root on your machine. I'm moderately confident there aren't any vulnerabilities like that, but I'm definite not 100% certain! My recommendation is to run Datasette on 127.0.0.1 port 8001 and then have nginx proxy port 80 to it. See https://github.com/simonw/datasette/issues/514#issuecomment-504663201 for suggested nginx configuration.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",459397625,Documentation with recommendations on running Datasette in production without using Docker, https://github.com/simonw/datasette/pull/554#issuecomment-509618339,https://api.github.com/repos/simonw/datasette/issues/554,509618339,MDEyOklzc3VlQ29tbWVudDUwOTYxODMzOQ==,3243482,abdusco,2019-07-09T12:16:32Z,2019-07-09T12:16:32Z,CONTRIBUTOR,I've also added another fix for using static mounts with absolute paths on Windows. ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits, https://github.com/simonw/datasette/pull/554#issuecomment-509629331,https://api.github.com/repos/simonw/datasette/issues/554,509629331,MDEyOklzc3VlQ29tbWVudDUwOTYyOTMzMQ==,3243482,abdusco,2019-07-09T12:51:35Z,2019-07-09T12:51:35Z,CONTRIBUTOR,"I wanted to add a test for it too, but I've realized it's impossible to test a server process as we cannot get its exit code. ```python # tests/test_cli.py def test_static_mounts_on_windows(): if sys.platform != ""win32"": return runner = CliRunner() result = runner.invoke( cli, [""serve"", ""--static"", r""s:C:\\""] ) assert result.exit_code == 0 ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits, https://github.com/simonw/sqlite-utils/issues/37#issuecomment-509685610,https://api.github.com/repos/simonw/sqlite-utils/issues/37,509685610,MDEyOklzc3VlQ29tbWVudDUwOTY4NTYxMA==,9599,simonw,2019-07-09T15:16:52Z,2019-07-09T15:16:52Z,OWNER,"Also interesting: ``` pip install pytest-mypy pytest --mypy ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465815372,Experiment with type hints, https://github.com/simonw/sqlite-utils/issues/37#issuecomment-509686432,https://api.github.com/repos/simonw/sqlite-utils/issues/37,509686432,MDEyOklzc3VlQ29tbWVudDUwOTY4NjQzMg==,9599,simonw,2019-07-09T15:18:49Z,2019-07-09T15:18:49Z,OWNER,"Interestingly if I run that against my `monkeytype` branch I get the following errors (subset): ``` _______________________________________________________________________________________ mypy db.py ________________________________________________________________________________________ sqlite_utils/db.py:15: error: No library stub file for module 'numpy' sqlite_utils/db.py:15: note: (Stub files are from https://github.com/python/typeshed) sqlite_utils/db.py:197: error: Incompatible types in assignment (expression has type ""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], Dict[, ]]"", variable has type ""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], None]"") sqlite_utils/db.py:204: error: Item ""None"" of ""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], None]"" has no attribute ""__iter__"" (not iterable) sqlite_utils/db.py:206: error: Argument 1 to ""set"" has incompatible type ""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], None]""; expected ""Iterable[str]"" sqlite_utils/db.py:211: error: Item ""None"" of ""Optional[Tuple[str, str, str]]"" has no attribute ""index"" sqlite_utils/db.py:211: error: Unsupported right operand type for in (""Optional[Tuple[str, str, str]]"") sqlite_utils/db.py:232: error: Unsupported right operand type for in (""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], None]"") sqlite_utils/db.py:234: error: Value of type ""Union[Dict[str, int], Dict[str, Union[int, str]], Dict[str, str], None]"" is not indexable sqlite_utils/db.py:307: error: Need type annotation for 'table_sql' (hint: ""table_sql: Dict[, ] = ..."") sqlite_utils/db.py:427: error: Item ""int"" of ""Union[int, None, str]"" has no attribute ""startswith"" sqlite_utils/db.py:427: error: Item ""None"" of ""Union[int, None, str]"" has no attribute ""startswith"" sqlite_utils/db.py:434: error: Incompatible types in assignment (expression has type ""List[Any]"", target has type ""int"") sqlite_utils/db.py:438: error: Incompatible types in assignment (expression has type ""object"", target has type ""int"") sqlite_utils/db.py:670: error: Need type annotation for 'all_column_types' (hint: ""all_column_types: Dict[, ] = ..."") sqlite_utils/db.py:757: error: Incompatible types in assignment (expression has type ""List[Any]"", variable has type ""chain[Any]"") sqlite_utils/db.py:761: error: Argument 1 to ""create"" of ""Table"" has incompatible type ""Dict[str, Union[Type[str], Type[int], Type[bool], Type[time], Type[float]]]""; expected ""Dict[str, Union[Type[str], Type[int], Type[bool], Type[time]]]"" sqlite_utils/db.py:770: error: Need type annotation for 'all_columns' (hint: ""all_columns: Set[] = ..."") sqlite_utils/db.py:773: error: Incompatible types in assignment (expression has type ""List[Any]"", variable has type ""Set[Any]"") sqlite_utils/db.py:775: error: ""Set[Any]"" has no attribute ""insert"" sqlite_utils/db.py:797: error: Need type annotation for 'values' (hint: ""values: List[] = ..."") sqlite_utils/db.py:811: error: Argument 1 to ""add_missing_columns"" of ""Table"" has incompatible type ""chain[Any]""; expected ""Union[List[Union[Dict[str, Union[int, str]], Dict[str, Union[int, str, List[str]]]]], List[Dict[str, Union[str, int, float]]], List[Dict[str, Union[int, str]]]]"" ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465815372,Experiment with type hints,