Skip to content

Conversation

@tvst
Copy link
Contributor

@tvst tvst commented Nov 11, 2019

Note: this is not exactly the same as the tag 0.50.2. The difference is that the version in the tag removes the changes from #497 "Don't resize vega chart on update"

Other than that, what's included here beyond what's on develop is:

  • Some doc updates
  • Better stException traceback CSS

tvst and others added 29 commits November 9, 2019 21:13
* Adding key parameter to number_input

* Test

* linter
The Makefile uses bash-isms like `[[ $(PY_VERSION) == "3.6.0" || $(PY_VERSION) > "3.6.0" ]]`
that don't work in POSIX sh.  So let's be explicit.

This fixes a problem with the build in Ubuntu, where you currently get `[[: not found`.
…command (streamlit#527)

* add parameter config options to "streamlit hello"

* added param config keys to "config show" command

* fix lint

* add custom env var names for streamlit cmd options

* cleanup commit
* update disconnected snapshot

* update empty_datafrasmes snapshots

* fix pyplot_kwargs cypress test

* fix Cypress tests: return all promises based image comparisons so IO does not conflict

* fix typo on vega_lite_chart.spec.ts

* remove ribbon decoration from the top during e2e tests

* restore load check to pyplot cypress test

* remove ribbon from add_rows and pyplot
- Defines a new exception class, `StreamlitAPIException`, that's used for exceptions resulting from improper usage of the streamlit API. (That is, `StreamlitAPIException` is meant for "user errors", like calling a DeltaGenerator function with bad inputs.)
- `Exception.proto` has a new field, `message_is_markdown`, which is True when the exception being sent is a `StreamlitAPIException` instance. Markdown formatting in the exception message will be nicely rendered on the frontend.
- `StreamlitAPIException` stack traces get all Streamlit entries pruned before being marshalled into the exception proto. This means that when a user misuses a Streamlit API, they no longer see a bunch of ScriptRunner and DeltaGenerator lines in the stack trace we show them.
- I updated most (all?) user-facing errors to use StreamlitAPIException, for the nicer formatting.
- Non-API-related errors, originating from the bowels of Streamlit, will _not_ be specially pruned/formatted, so this shouldn't hinder us when debugging Streamlit itself.

Fixes streamlit#438
python3 -c "Exception"  # No problems
python3 -c "NotImplementedError"  # No problems
python3 -c "Error"  # NameError: name 'Error' is not defined

[flake8](http://flake8.pycqa.org) testing of https://github.com/streamlit/streamlit on Python 3.8.0

$ __flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics__
```
./lib/tests/streamlit/scriptrunner/test_data/compile_error.py:22:9: E999 SyntaxError: invalid syntax
because i am a compile error!
        ^
./lib/streamlit/hashing.py:118:32: F821 undefined name 'string_types'
            or isinstance(obj, string_types)
                               ^
./lib/streamlit/hashing.py:255:34: F821 undefined name 'string_types'
            elif isinstance(obj, string_types):
                                 ^
./lib/streamlit/hashing.py:306:42: F821 undefined name 'string_types'
                or (isinstance(obj.name, string_types) and os.path.exists(obj.name))
                                         ^
./lib/streamlit/hashing.py:394:34: F821 undefined name 'string_types'
            if not isinstance(n, string_types) or not n.endswith(".<lambda>")
                                 ^
./lib/streamlit/__init__.py:547:14: F821 undefined name 'source_util'
        with source_util.open_python_file(filename) as source_file:
             ^
./lib/streamlit/caching.py:81:18: F821 undefined name 'Dict'
_mem_cache = {}  # type: Dict[string, CacheEntry]
                 ^
./lib/streamlit/caching.py:81:18: F821 undefined name 'string'
_mem_cache = {}  # type: Dict[string, CacheEntry]
                 ^
./lib/streamlit/hello/demos.py:213:9: F821 undefined name 'reload'
        reload(sys)
        ^
./lib/streamlit/elements/vega_lite.py:41:22: F821 undefined name 'dict_types'
    if type(data) in dict_types and spec is None:
                     ^
./lib/streamlit/elements/vega_lite.py:89:31: F821 undefined name 'dict_types'
        if type(data_spec) in dict_types:
                              ^
./lib/streamlit/elements/media_proto.py:76:22: F821 undefined name 'string_types'
    if type(data) in string_types:
                     ^
./lib/streamlit/elements/media_proto.py:122:25: F821 undefined name 'string_types'
    if isinstance(data, string_types) and url(data):
                        ^
./lib/streamlit/elements/media_proto.py:154:25: F821 undefined name 'string_types'
    if isinstance(data, string_types) and url(data):
                        ^
./lib/streamlit/elements/lib/dicttools.py:125:30: F821 undefined name 'native_dict'
        if type(v) in (dict, native_dict):
                             ^
./lib/streamlit/elements/lib/dicttools.py:129:42: F821 undefined name 'native_dict'
                if type(child) in (dict, native_dict):
                                         ^
./docs/conf.py:206:41: F821 undefined name 'github_doc_root'
            "url_resolver": lambda url: github_doc_root + url,
                                        ^
./docs/api-examples-source/widget.time_input.py:3:39: F821 undefined name 'datetime'
t = st.time_input("Set an alarm for", datetime.time(8, 45))
                                      ^
./examples/run_on_save.py:68:11: F821 undefined name 'Error'
    raise Error("Windows not supported")
          ^
./examples/run_on_save.py:71:11: F821 undefined name 'Error'
    raise Error("Unknown platform")
          ^
1     E999 SyntaxError: invalid syntax
19    F821 undefined name 'datetime'
20
```
__E901,E999,F821,F822,F823__ are the "_showstopper_" [flake8](http://flake8.pycqa.org) issues that can halt the runtime with a SyntaxError, NameError, etc. These 5 are different from most other flake8 issues which are merely "style violations" -- useful for readability but they do not effect runtime safety.
* F821: undefined name `name`
* F822: undefined name `name` in `__all__`
* F823: local variable name referenced before assignment
* E901: SyntaxError or IndentationError
* E999: SyntaxError -- failed to compile a file into an Abstract Syntax Tree
[flake8](http://flake8.pycqa.org) testing of https://github.com/streamlit/streamlit on Python 3.8.0

$ __flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics__
```
./lib/tests/streamlit/scriptrunner/test_data/compile_error.py:22:9: E999 SyntaxError: invalid syntax
because i am a compile error!
        ^
./lib/streamlit/hashing.py:118:32: F821 undefined name 'string_types'
            or isinstance(obj, string_types)
                               ^
./lib/streamlit/hashing.py:255:34: F821 undefined name 'string_types'
            elif isinstance(obj, string_types):
                                 ^
./lib/streamlit/hashing.py:306:42: F821 undefined name 'string_types'
                or (isinstance(obj.name, string_types) and os.path.exists(obj.name))
                                         ^
./lib/streamlit/hashing.py:394:34: F821 undefined name 'string_types'
            if not isinstance(n, string_types) or not n.endswith(".<lambda>")
                                 ^
./lib/streamlit/__init__.py:547:14: F821 undefined name 'source_util'
        with source_util.open_python_file(filename) as source_file:
             ^
./lib/streamlit/caching.py:81:18: F821 undefined name 'Dict'
_mem_cache = {}  # type: Dict[string, CacheEntry]
                 ^
./lib/streamlit/caching.py:81:18: F821 undefined name 'string'
_mem_cache = {}  # type: Dict[string, CacheEntry]
                 ^
./lib/streamlit/hello/demos.py:213:9: F821 undefined name 'reload'
        reload(sys)
        ^
./lib/streamlit/elements/vega_lite.py:41:22: F821 undefined name 'dict_types'
    if type(data) in dict_types and spec is None:
                     ^
./lib/streamlit/elements/vega_lite.py:89:31: F821 undefined name 'dict_types'
        if type(data_spec) in dict_types:
                              ^
./lib/streamlit/elements/media_proto.py:76:22: F821 undefined name 'string_types'
    if type(data) in string_types:
                     ^
./lib/streamlit/elements/media_proto.py:122:25: F821 undefined name 'string_types'
    if isinstance(data, string_types) and url(data):
                        ^
./lib/streamlit/elements/media_proto.py:154:25: F821 undefined name 'string_types'
    if isinstance(data, string_types) and url(data):
                        ^
./lib/streamlit/elements/lib/dicttools.py:125:30: F821 undefined name 'native_dict'
        if type(v) in (dict, native_dict):
                             ^
./lib/streamlit/elements/lib/dicttools.py:129:42: F821 undefined name 'native_dict'
                if type(child) in (dict, native_dict):
                                         ^
./docs/conf.py:206:41: F821 undefined name 'github_doc_root'
            "url_resolver": lambda url: github_doc_root + url,
                                        ^
./docs/api-examples-source/widget.time_input.py:3:39: F821 undefined name 'datetime'
t = st.time_input("Set an alarm for", datetime.time(8, 45))
                                      ^
./examples/run_on_save.py:68:11: F821 undefined name 'Error'
    raise Error("Windows not supported")
          ^
./examples/run_on_save.py:71:11: F821 undefined name 'Error'
    raise Error("Unknown platform")
          ^
1     E999 SyntaxError: invalid syntax
19    F821 undefined name 'datetime'
20
```
__E901,E999,F821,F822,F823__ are the "_showstopper_" [flake8](http://flake8.pycqa.org) issues that can halt the runtime with a SyntaxError, NameError, etc. These 5 are different from most other flake8 issues which are merely "style violations" -- useful for readability but they do not effect runtime safety.
* F821: undefined name `name`
* F822: undefined name `name` in `__all__`
* F823: local variable name referenced before assignment
* E901: SyntaxError or IndentationError
* E999: SyntaxError -- failed to compile a file into an Abstract Syntax Tree
Plotly charts are not always re-rendering properly. 

This seems to be a react-plotly bug; I made a standalone repro case and submitted it to them here plotly/react-plotly.js#167.

Fixes streamlit#512
* Using Axios

* Checking timeout

* lock file
* Cleaning stale elements when the reportHash changes

* Cleaning

* Fixing Metrics

* Removing reportName and some cleaning
* Fixing print as pdf

* Fixing firefox print

* Fixing double font for firefox
…treamlit#645)

* starting conditions from @aritropaul's PR

* added test scaffolding

* snakecase and mild refactor of function

* refactor into util.py

* added fixture structure

* Update bug_report.md

* Update feature_request.md

* rebasing cli.py to streamlit/develop to fix missing commits

* linting

* fleshed out the tests. should collect more fixtures.

* working regular expression and tests. needs confirmation.

* copied in yarn.lock from streamlit/streamlit/develop

* make sure not to spuriously replace "blob", eg. username "theblob"

* mild function reorg and comment style change
* Undefined names: missing imports

* noqa: F821 because linters don't like magic
* check if gcc is working before making watchdog a dependency

* black

* Pull these conditions into their own boolean constants, for readability:

* only check for xcode if we're on darwin
* Adding sidebar to main concepts.

* Draft of sidebar content.

* Addressing Thiago's comments.

* report -> app.

* Addressing Thiago's comment in PR507.
@tvst tvst requested a review from a team as a code owner November 11, 2019 04:11
@tvst tvst changed the title Merge changes for release 0.50.0 Doc updates for release 0.50.0 Nov 11, 2019
@tvst tvst self-assigned this Nov 11, 2019
@tvst tvst changed the title Doc updates for release 0.50.0 Doc updates for release 0.50.1 Nov 11, 2019
@tvst tvst changed the title Doc updates for release 0.50.1 Doc updates for release 0.50.2 Nov 11, 2019
@tvst tvst changed the title Doc updates for release 0.50.2 Release 0.50.2 Nov 11, 2019
@tvst tvst merged commit 43b3e86 into streamlit:develop Nov 11, 2019
@tvst tvst deleted the release-0.50.0 branch November 11, 2019 21:39
tconkling added a commit to tconkling/streamlit that referenced this pull request Nov 19, 2019
* develop: (31 commits)
  fixed misspell (streamlit#712)
  Add ConfigOption attribute "scriptable" w/ only some options scriptable=True (streamlit#702)
  Fixing Tornado on Windows + Python 3.8 (streamlit#682)
  Moving reportId and metadata from Element to ReportElement (streamlit#529)
  Fall back on webbrowser if xdg-open is not installed on Linux (streamlit#701)
  Dockerfile: ensure we install the NODE_VERSION we reference elsewhere (streamlit#639)
  Datepicker pop-up aligned on left (streamlit#676)
  Fixing number input spin buttons for Firefox (streamlit#683)
  Fixing makeElementWithInfoText (streamlit#692)
  Fixing CTRL+ENTER on Windows (streamlit#699)
  Add option to use PollingFileWatcher, even if watchdog is available (streamlit#626)
  Break util.py into several util files (streamlit#703)
  Do not automatically create credential file when in headless mode (streamlit#467) (streamlit#603)
  make __future__ import be the first line (streamlit#687)
  Split text protos (streamlit#506)
  pandas.isna was introduced in version 0.21.0 (streamlit#679)
  Prefix get_report_ctx with underscore in __init__ and import it correctly in (streamlit#669)
  Fix single word in changelog (streamlit#672)
  Move some functions from util.py into type_util.py (streamlit#670)
  Release 0.50.2 (streamlit#666)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.