Skip to content

Extract chart studio functionality, optimized imports #1476

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 89 commits into from
Apr 12, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
54c96fa
Initial plotly.io.renderers implementation
jonmmease Mar 16, 2019
8342680
rename 'default' to 'plotly_mimetype'
jonmmease Mar 16, 2019
2cc4f89
Added _repr_mimebundle_
jonmmease Mar 16, 2019
28a669c
Add initial browser renderer to show figure in browser tab
jonmmease Mar 16, 2019
8bf793f
Expose renderer base classes
jonmmease Mar 17, 2019
3dfb24a
Documentation / cleanup of _renderers
jonmmease Mar 17, 2019
2dd92c0
Auto-detect VSCode environment and default to renderer combination of
jonmmease Mar 18, 2019
953bae8
Documentation / cleanup of _base_renderers
jonmmease Mar 18, 2019
da39c34
Update default renderers explanation
jonmmease Mar 18, 2019
c2a6471
Add renderer docstring to repr for easy discoverability
jonmmease Mar 18, 2019
e6b9e45
Make ipython an optional dependency
jonmmease Mar 18, 2019
54ac011
Python 2.7 support
jonmmease Mar 18, 2019
7dc1029
Add parent <html></html. tags for HtmlRenderer with fullhtml=True
jonmmease Mar 18, 2019
c23f76e
Added initial renderers test suite
jonmmease Mar 18, 2019
a1d9d9e
Added IFrameRenderer
jonmmease Mar 19, 2019
9d082f0
Proper HTML tags for fullhtml
jonmmease Mar 19, 2019
b499b35
Added initial to_html functions to plotly.io
jonmmease Mar 19, 2019
63424a5
Reimplement plotly.offline.plot using plotly.io.write_html/to_div.
jonmmease Mar 19, 2019
28463c2
Reimplement plotly.offline.iplot and init_notebook_mode pio.show
jonmmease Mar 19, 2019
e4421bb
Add responsive=True config when figure width/height aren't set
jonmmease Mar 19, 2019
3b11783
Add MathJax configuration when initializing HTML renderer in notebook
jonmmease Mar 19, 2019
2580797
Reimplement HTML Renderers using the plotly.io html functions
jonmmease Mar 19, 2019
8a787fd
Restore plot/iplot image export by adding support for custom JS snippets
jonmmease Mar 20, 2019
c4cb4a7
Remove default renderer and make rendering figure on display an option
jonmmease Mar 20, 2019
a109f86
Update renderer tests with plotly.io.renderers.render_on_display
jonmmease Mar 20, 2019
f7f7cb7
Add download image plotly.offline.plot test
jonmmease Mar 20, 2019
f073a14
add set_v3_defaults and set_v4_defaults renderer methods to make
jonmmease Mar 20, 2019
1058683
Added future flag system under _plotly_future_ to control
jonmmease Mar 20, 2019
df3515e
Roll to_div function into to_html with full_html argument
jonmmease Mar 20, 2019
86eb69a
Rename SideEffectRenderer -> ExternalRenderer
jonmmease Mar 21, 2019
049e304
WIP delaying import in io module.
jonmmease Mar 21, 2019
1d3ac88
Initial chart_studio refactor
jonmmease Mar 21, 2019
2649557
Fix up chart_studio imports. Everything import cleanly now
jonmmease Mar 21, 2019
562a60a
Mapping to deprecated modules
jonmmease Mar 21, 2019
81221de
Per function deprecation of chart_studio tools functions
jonmmease Mar 22, 2019
a51730b
Add extract_chart_studio to v4 future group
jonmmease Mar 22, 2019
b2542c1
whitespace
jonmmease Mar 22, 2019
75562fa
WIP checkpoint on import optimization
jonmmease Mar 22, 2019
7765578
Optimize import time a bit by reducing the number of files create
jonmmease Mar 23, 2019
68f039f
Delay optional imports of pandas/numpy/matplotlib
jonmmease Mar 23, 2019
9aae2c7
Restore proper versioneer _version.py file
jonmmease Mar 23, 2019
c209a18
Fix optional test suite
jonmmease Mar 23, 2019
084ac36
offline fixes
jonmmease Mar 23, 2019
19de7b9
Use correct config property to grab platform url from saved config
jonmmease Mar 23, 2019
ecf4867
Remove legacy unused _plot_html function
jonmmease Mar 23, 2019
b87ebed
Move static image renderer tests to orca test suite
jonmmease Mar 23, 2019
3907d61
Merge enh_renderers
jonmmease Mar 23, 2019
81c4ced
Move optional_imports to plotly_utils so that it can be used in
jonmmease Mar 23, 2019
e11d74f
Move combination renderers test to orca test suite
jonmmease Mar 23, 2019
e8d2f1b
Remove remaining image renderer references from test_io
jonmmease Mar 23, 2019
de80ffc
Add ipython to orca environment for renderer tests
jonmmease Mar 23, 2019
7cba367
Remove pdf image from renderer tests since it seems to be non-determi…
jonmmease Mar 23, 2019
3451340
Merge branch 'enh_renderers' into imports_v4
jonmmease Mar 23, 2019
f19f150
Added get_config_plotly_server_url to retrieve `plotly_domain`
jonmmease Mar 23, 2019
b24bc7e
Fix jupyter connected test
jonmmease Mar 23, 2019
cb699f4
delete tmp files
jonmmease Mar 23, 2019
a58d68c
Fixed optional tests
jonmmease Mar 23, 2019
fc2a716
chart_studio test fixes for new import structure
jonmmease Mar 23, 2019
73752d7
Added chromium browser renderer
jonmmease Mar 26, 2019
8a0f6cc
Fix plotly mimetype renderer when used with numpy arrays/pandas Series
jonmmease Mar 26, 2019
504e342
Lazily initialize default renderers.
jonmmease Mar 26, 2019
1115608
Use 'browser' default renderer if ipython isn't available
jonmmease Mar 26, 2019
1bbbe83
Merge branch 'enh_renderers' into imports_v4
jonmmease Mar 26, 2019
6071473
Remove non_recursive_imports flag for this PR
jonmmease Mar 26, 2019
d8fb7c8
Update setup.py `packages`
jonmmease Mar 26, 2019
3af116a
Add plotly.widgets deprecation package
jonmmease Mar 26, 2019
0b8cfb6
Remove moved packages from setup.py
jonmmease Mar 26, 2019
a49c937
Update tox to run tests from chart_studio package
jonmmease Mar 26, 2019
ea74d44
Add the chart_studio package itself to setup.py
jonmmease Mar 26, 2019
43c99ce
Test fixes
jonmmease Mar 27, 2019
9e5504a
Test fixes
jonmmease Mar 27, 2019
12c58bb
Reorganize exceptions to work around circular import errors
jonmmease Mar 27, 2019
49ecfbf
Move plotly.file to _plotly_utils to avoid circular import errors
jonmmease Mar 27, 2019
574b1b9
Update version constraints on pandas/numpy
jonmmease Mar 27, 2019
db01dd4
Move PlotlyJSONEncoder ot _plotly_utils
jonmmease Mar 27, 2019
6921bf1
Python 2 absolute import
jonmmease Mar 27, 2019
f7456d2
plotly.api -> chart_studio.api within chart_studio package
jonmmease Mar 27, 2019
1945368
Merge branch 'master'
jonmmease Apr 10, 2019
b1c3f34
Fix plotly.tools import
jonmmease Apr 10, 2019
ef9ac99
chart_studio recursive imports
jonmmease Apr 10, 2019
cdf2c40
plotly -> chart_studio import
jonmmease Apr 11, 2019
0b4cd7a
chart_studio -> plotly in templategen
jonmmease Apr 11, 2019
5e4aca9
typo
jonmmease Apr 11, 2019
609d1f7
typo
jonmmease Apr 11, 2019
fe64acf
Code review updates
jonmmease Apr 11, 2019
922458d
Restore all of the original tests to test our backward compatibility
jonmmease Apr 12, 2019
860e078
test fixes
jonmmease Apr 12, 2019
54c33f2
Fix mock modules
jonmmease Apr 12, 2019
4b69d6a
session test fix
jonmmease Apr 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
plotly.api -> chart_studio.api within chart_studio package
  • Loading branch information
jonmmease committed Mar 27, 2019
commit f7456d2efee2bc86b877b50e7dc924f8c6c2c0c1
2 changes: 1 addition & 1 deletion chart_studio/api/v1/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def request(method, url, **kwargs):

"""
if kwargs.get('json', None) is not None:
# See plotly.api.v2.utils.request for examples on how to do this.
# See chart_studio.api.v2.utils.request for examples on how to do this.
raise _plotly_utils.exceptions.PlotlyError(
'V1 API does not handle arbitrary json.')
kwargs['headers'] = dict(kwargs.get('headers', {}), **get_headers())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import absolute_import

from plotly import version
from plotly.api.v1 import clientresp
from chart_studio.api.v1 import clientresp
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -16,11 +16,11 @@ def setUp(self):
super(ClientrespTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v1.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v1.utils.requests.request')
self.request_mock.return_value = self.get_response(b'{}', 200)

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v1.utils.validate_response')
self.mock('chart_studio.api.v1.utils.validate_response')

def test_data_only(self):
data = [{'y': [3, 5], 'name': Duck()}]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,13 @@ def setUp(self):
proxy_password='hydrated', plotly_proxy_authorization=False)

# Mock the actual api call, we don't want to do network tests here.
patcher = patch('plotly.api.v1.utils.requests.request')
patcher = patch('chart_studio.api.v1.utils.requests.request')
self.request_mock = patcher.start()
self.addCleanup(patcher.stop)
self.request_mock.return_value = MagicMock(Response)

# Mock the validation function since we test that elsewhere.
patcher = patch('plotly.api.v1.utils.validate_response')
patcher = patch('chart_studio.api.v1.utils.validate_response')
self.validate_response_mock = patcher.start()
self.addCleanup(patcher.stop)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import

from plotly.api.v2 import files
from chart_studio.api.v2 import files
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -10,11 +10,11 @@ def setUp(self):
super(FilesTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_retrieve(self):
files.retrieve('hodor:88')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import

from plotly.api.v2 import folders
from chart_studio.api.v2 import folders
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -10,11 +10,11 @@ def setUp(self):
super(FoldersTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_create(self):
path = '/foo/man/bar/'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ def setUp(self):
super(GridsTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_create(self):
filename = 'a grid'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from requests.compat import json as _json

from plotly.api.v2 import images
from chart_studio.api.v2 import images
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -12,11 +12,11 @@ def setUp(self):
super(ImagesTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_create(self):

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import

from plotly.api.v2 import plot_schema
from chart_studio.api.v2 import plot_schema
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -10,11 +10,11 @@ def setUp(self):
super(PlotSchemaTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_retrieve(self):

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import

from plotly.api.v2 import plots
from chart_studio.api.v2 import plots
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -10,11 +10,11 @@ def setUp(self):
super(PlotsTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_create(self):
filename = 'a plot'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import

from plotly.api.v2 import users
from chart_studio.api.v2 import users
from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase


Expand All @@ -10,11 +10,11 @@ def setUp(self):
super(UsersTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.mock('plotly.api.v2.utils.validate_response')
self.mock('chart_studio.api.v2.utils.validate_response')

def test_current(self):
users.current()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,12 @@ def setUp(self):
super(RequestTest, self).setUp()

# Mock the actual api call, we don't want to do network tests here.
self.request_mock = self.mock('plotly.api.v2.utils.requests.request')
self.request_mock = self.mock('chart_studio.api.v2.utils.requests.request')
self.request_mock.return_value = self.get_response()

# Mock the validation function since we can test that elsewhere.
self.validate_response_mock = self.mock(
'plotly.api.v2.utils.validate_response')
'chart_studio.api.v2.utils.validate_response')

self.method = 'get'
self.url = 'https://foo.bar.does.not.exist.anywhere'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class TestSignIn(PlotlyTestCase):

def setUp(self):
super(TestSignIn, self).setUp()
patcher = patch('plotly.api.v2.users.current')
patcher = patch('chart_studio.api.v2.users.current')
self.users_current_mock = patcher.start()
self.addCleanup(patcher.stop)

Expand Down
2 changes: 1 addition & 1 deletion chart_studio/tests/test_plot_ly/test_plotly/test_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ def setUp(self):
super(TestPlotOptionLogic, self).setUp()

# Make sure we don't hit sign-in validation failures.
patcher = patch('plotly.api.v2.users.current')
patcher = patch('chart_studio.api.v2.users.current')
self.users_current_mock = patcher.start()
self.addCleanup(patcher.stop)

Expand Down