1.0.4¶
Bokeh Version 1.0.4
(January 2019) primarily addresses a security issue
regarding yaml.load
(#8541).
For full details see the CHANGELOG.
1.0.3¶
Bokeh Version 1.0.3
(December 2018) is a micro bugfix and feature release.
Some of the highlights include:
For full details see the CHANGELOG.
1.0.2¶
Bokeh Version 1.0.2
(November 2018) is a micro bugfix and feature release.
Some of the highlights include:
- Expose configurable
DataTable
row height (#8411) - Fix issue with legends and empty scatter glyphs (#8395)
For full details see the CHANGELOG.
1.0.1¶
Bokeh Version 1.0.1
(October 2018) is a micro bugfix release.
Some of the highlights include:
- Small fixes for
export_png
(#8362, #8374) - Better cleanup for
DocumentLifeCycleHandler
(#8367) - Fix issue with oval, ellipse legends (#8375)
- Recognized CSS rgb(a) strings for colors (#4096)
For full details see the CHANGELOG.
1.0.0¶
Bokeh Version 1.0.0
(October 2018) is a major milestone of the Bokeh project.
Some of the highlights include:
- Support for
MultiPolygons
with holes (#2321) - Fixes and improvements to DataTable (#6454, #7116, #7417, #8021, #8040, #8050, #8201)
CustomAction
for user-defined Toolbar buttons (#8099)- Plain JSON export/embed functions (#5231)
- Toolbar
autohide
property to hide toolbars when not in us(#8284) - Callback to allow
AjaxDataSource
to adapt JSON responses (#8321) Scatter
glyph for parameterizable marker type (#5884)- Reuse webdrivers for faster PNG/SVG export by default (#8329)
- Improved testing capabilities (#2596, #8078, #8139, #8146, #8217, #8225)
- Faster import times (#8309)
And several other bug fixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
Handling of Selections¶
Previous versions of Bokeh mistakenly had code paths that could replace data
source Selection
objects with entirely new instances. This was a mistake,
and resulted in several regressions and other problems. Unfortunately, the
problem persisted for a few releases, and now that the situation has been fixed,
it will require some code changes for some users to adapt to correct usage.
In general, you should NOT ever listen for a change of selections objects themselves, i.e. do not do this (anymore):
source.on_change('selected', callback) # BAD, DON'T DO THIS
Instead, you should listen for changes to the individual properties that are on
Selection
objects. For instance, to execute a callback when the indices
on a selection change, (e.g. when a selection is made on a scatter plot), do
this:
source.selected.on_change('indices', callback) # GOOD
Any code that looks like the first version above should be updated to use the second version. This applies to both Python or JavaScript callbacks for selections.
While this breaking incompatibility is regretable, there are now much more extensive integration tests in place to maintain that the second version will always function as expected from now on.
New Dependencies¶
“Pillow>=4.0” has been added to the list of Bokeh runtime dependencies.
Examples¶
The following examples have been removed or updated:
- app/pivot: This large example was unfocused and unmaintained and has been removed
- embed/simple: Old example removed
- howto/us_marriages_divorces: Redundant notebook removed, script moved to plotting/file/us_marriages_divorces_hover.py
- models/file/colorspec.py Old example removed
- models/file/external_resources.py Moved to latex_extension.py
- models/file/glyph1.py Moved to basic_plot.py
- models/file/grid.py Old example removed
- models/file/line.py Old example removed
- models/file/transform_jitter_coffee.py Discouraged coffeescript example removed
- plotting/file/bar_chart.py Removed old/duplicative example
- plotting/file/brewer.py: Moved to stacked_area.py
- plotting/file/bollinger.py Old example removed
- plotting/file/joyplot.py Moved to ridgeplot.py
Pretty printing functions¶
The pprint
and pretty
methods depended on IPython pretty-printing
in order to function. Recent changes to IPython pretty-printing machinery
made it impossible to use unless the “pretty” repr was also enabled. This
caused ipython console to be spammed with very large amounts of output,
making it unusable. As a result, both pprint
and pretty
methods have
been removed. A “pretty” HTML repr still functions in Jupyter notebooks. This
change is not expected to affect any normal usage.
Bokeh Object IDs¶
Previously Bokeh generated unique UUIDs for every Bokeh object. Starting with
this release, Bokeh generates simple increasing integer IDs by default. You can
set the environment variable BOKEH_SIMPLE_IDS=no
to restore the previous
behavior. The generation of simple IDs is faster than UUIDs, otherwise this
change is not expected to affect any normal usage. However, if you are creating
Bokeh objects for a single Document in separate processes, i.e. by using the
multiprocessing
module, then you will want to turn off simple IDs. (This
is expected to be a rare and unusual usage.)
bokeh.util.plot_utils
¶
The bokeh.util.plot_utils
module has been removed. This module contained
only private functions used internally. This change is not expected to affect
any normal usage.
bokeh.server.application_context
¶
The bokeh.server.application_context
module has been renamed to
bokeh.server.contexts
. This change is not expected to affect any normal
usage.
arguments
parameter for server_session
¶
The server_session
function accepted an arguments
parameter that did not
(and could not) have any actual effect. It has been removed, immediately. Since
the parameter did not function, it is not expected that this change will affect
any normal usage.
Codebase Tests¶
The Pytest “quality” mark has been changed to “codebase”. Now to run the
codebase tests, execute py.test -m codebase
. If you have installed a
pre-commit hook to run quality tests before allowing a commit, the hook code
should be updated as above. This change is only expected to affect those who
are developing the Bokeh codebase.
0.13.0¶
Bokeh Version 0.13.0
(June 2018) is an incremental update that adds a few
new features and fixes several bugs. Some of the highlights include:
- Improved hover tool fields for common stacked bar plot cases
- New
CumSum
transform to generate values from cumulative sums of CDS columns on the client side.
And several other bug fixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
NOTE: the 0.13.x series is a final series of small releases leading to a 1.0 release. For more information see the project roadmap.
Max Websocket Message Size¶
A new command line option --websocket-max-message-size
for the Bokeh
server can be used to configure the Tornado websocket_max_message_size
option. The default value is now 20mb, an increase from the previous
10mb implicit default.
New Hover fields¶
Two new hover tooltip fields are now available:
$name
will preint the value of thename
property of a glyph that is being hovered over.@$name
will look up values from a column like a normal@
field, but will use$name
as the name of the column.
Both of these are espeically useful in conjunction with stacked bar plots.
BokehJS Build¶
The gulp
tool was previously used as the build system for BokehJS. This
has been replaced with a smaller and simpler build script. This greatly
reduced the number of dependencies required to build BokehJS and a completely
clean NPM package security audit was obtained as a side effect.
To build now, run the commandf node make build
instead of gulp build
.
Task names remained unchanged. If you want preserve the old workflow, e.g. to
aid git bisect
, it is suggested to create an alias for node make
,
e.g. in bash this would be alias gulp='node make'
.
Line Join Default¶
The default line_join
style has been changed from miter
to bevel
,
to avoid exaggerating corners where connected lines meet at a sharp angle.
The HTML Canvas miterLimit
property is meant to prevent such issues,
but it does not appear to be respected by current browsers.
0.12.16¶
Bokeh Version 0.12.16
(May 2018) is an incremental update that adds a few
new features and fixes several bugs. Some of the highlights include:
- Hover tools now work with image glyphs (#3886)
- BokehJS exposes a public
reset
method for Plots (#5071) - Categorical tick labels at all levels may be rotates (:bokeh-issue`7643`)
- New
CustomJSHover
for highly customized tooltip fields (#7647) - Axes may now have fixed positions inside plots (#113)
- Small zoom tool enhancements (#3126, #3125, #2427)
MultiLine
andPatches
now function with categorical ranges (#7462)
And several other bug fixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
NOTE: the 0.12.x series is the last planned release series before a version 1.0 release. For more information see the project roadmap.
Deprecations Removed¶
The following functions, arguments, or features have were previously deprecated with warnings and instructions for new usage, and have now been permanently removed:
--host
argument tobokeh serve
responsive
argument to plots and layout functionsPlot.toolbar_sticky
propertyTool.plot
propertybokeh.sampledata.population.load_population
functionbokeh.util.notebook
module
Release History¶
To support publishing all release information on one page, the
bokeh_index_toctree
module and contents have been immediately moved to
bokeh_releases
. Since this facility had no use outside building
official Bokeh documentation, no deprecation was given.
CDS column_names
property¶
ColumnDataSource
models had a Bokeh property column_names
for specifying
the list of column names in source.data
. This information was duplicative
and had to be explicitly maintained in a fragile way. It has been replaced by
read-only properties in both Python and JavaScript that always accurately
report the current column names automatically. Setting column_names
is
no longer supported, however as this possibility has never been officially
documented or demonstrated, it is not expected to affect any standard usage.
Tools renderers
property¶
Previously the default value, an empty list, corresponded to automatically
choosing all available renderers for hit testing. Now, a new default value
"auto"
is used for that, so that an empty list can mean “hit test no
renderers”. A value of None
may also be used to indicate no hit testing
should occur. Since there is typically no reason to explicitly set a property
to its default value, it is not expected that this change impacts any standard
usage.
bokehjs’ source directory renamed¶
To finalize the rewrite of bokehjs in TypeScript, the source directory was
renamed from src/coffee
to src/lib
. This change affects only bokehjs’
contributors or other advanced users (e.g. when repackaging bokehjs with
Webpack or other JavaScript module bundler).
BOKEH_DOCS_MISSING_API_KEY_OK
environment variable¶
This environment variable is no longer used by Bokeh. Previously, the
bokeh.sphinxext
plot directive would always fail by default if a
GOOGLE_API_KEY
environment variable was not defined, and this environment
variable could be set to override that default behavior. Now, builds will
succeed by default, even witout a Google API key defined (but Google Maps plots
will not fully render). To require an API be defined (i.e. to restore the
previous behavior) you can now set bokeh_missing_google_api_key_ok = False
in the Sphinx config file.
0.12.15¶
Bokeh Version 0.12.15
(Mar 2018) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights
include:
- Addressed several WebGL bugs (#6867, #7087, #7211, #7681)
- Switched to Chrome headless for CI image tests, will support better WebGL testing (#6594)
- Updated data source selections to be proper Bokeh models (#6845)
- Fixed memory leaks with certain kinds of Bokeh server usage (#7468)
- Added new glyphs for hexagon markers and hex tiles, and a new
hexbin
method #7638, (#4786) - Completed BokehJS port to TypeScript (#6481)
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Additionally, we are pleased to announce Bokeh joins NumFOCUS Sponsored Projects.
Migration Guide¶
DataTable¶
The mis-named property DataTable.row_header
has been deprecated. This
property confusingly controlled the presence of an index column in a
DataTable. Now, use the index_position
property to specify where
an index column should be located in the table (use None
to suppress
the index column).
Additionally, new properties index_header
and index_width
are
now available to further customize the index column appearance.
Selections¶
The handling of selections has needed attention in Bokeh for some time.
This release adds a new Bokeh model Selection
to represent selections on data sources. Having a proper Bokeh model makes
selections simpler to use and to synchronize in apps than the previous
“bare dict” that represented selections.
The new Selection
model is found in
the same location on data sources, i.e. source.selected
. It has the
following properties:
.indices # which scatter typer indices have been hit
# previously selected["1d"].indices
.line_indices # which point(s) on a line have been hit
# previously selected["0d"].indices
.multiline_indices # which points on which line of a MultiLine
# previously selected["2d"].indices
In the near future, a property image_indices
will be added to support
hit testing of image glyphs.
All code should update to use these new properties. For now read only
access to things like selected['1d'].indicies
will continue to function
as before for compatibility. However, programmtically setting selections
must now go through the mode properties, i.e. .indices
, .line_indices
,
etc.
Grid Bounds¶
Grids now automatically defer to any existing axis bounds when their own bounds are set to “auto”. Previously grids used always used the full range bounds. This change makes it simpler to have axes and grids both use a consistent set of bounds.
Minor Ticks¶
Minor ticks are no longer displayed outside explicitly set axis bounds. Previously minor ticks would display one extra “major tick” distance outside explicit range bounds.
NO_DATA_RENDERERS¶
This validation warning resulted in false or irrelevant warnings in many reasonable configurations, and has been removed.
Document and ServerContext callbacks¶
All Document and ServerContext methods that add callbacks can now add the same callback multiple times. Methods that remove callbacks now receive the value returned from a previous method call that added the callback. Example:
# Was
doc.add_next_tick_callback(my_cb)
doc.remove_next_tick_callback(my_cb)
# Now
cb_id = doc.add_next_tick_callback(my_cb)
doc.remove_next_tick_callback(cb_id)
Sphinx Version¶
The bokeh.sphinxext Sphinx extension has been updated to work with currnt versions. Sphinx >= 1.6 is now required to use the extension.
0.12.14¶
Bokeh Version 0.12.14
(Feb 2018) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights
include:
- Addition of several tools to draw and edit point, rect, multi-line and patches glyphs (#6370) by modifying the underlying ColumnDataSource.
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
Deprecations Removed¶
The following deprecated features have been removed in this release:
- DynamicImageRenderer (consider GeoViews instead)
- BokehJS support for *.tsx templates (not typically user-facing)
- autoload_server (use server_document or server_session instead)
New Runtime Dependency¶
The package packaging
, available via both conda and pip, was added as a
new runtime dependency.
Mapping of Unknown Catgorical Factors¶
Previously, data (e.g in a CDS column) referring to a categorical factor that
did not exist in the relevant FactorRange
, would cause an error in the
browser. Now, any such attempted mappings will silently return NaN
. Any
data points with these factors as coordinates will not render.
The practical motivation for this change is that updating a FactorRange
to have a new set of factors could result in an inconsistency triggering the
error condition, causing plots to fail to render. With this change, the use-case
of updating factor ranges should work more smoothly, however there will be no
immediate indication of problems in case “bad” factors are included accidentally
in data other than the data points not being rendered.
Change To Text Glyph Legend¶
Previously Text Glyphs added to legends would always unconditionally render the word “text” as the visual symbol, which was not useful. Now, text glyphs render an empty space in legends. This is helpful when it is desired to use an interactive legend mute or hide both a primary glyph, as well as some associated text that goes with it. For more discssion, see #7337.
MercatorTileSource change¶
MercatorTileSource models previously snapped to the closest zoom level resulting in user supplied axis ranges to be largely ignored. The default behavior has now been changed from snapping to the closest zoom level to simply maintaining the correct aspect ratio, while keeping the user defined bounds contained within the axis ranges.
The old behavior may be restored by setting enabling the snap_to_zoom property.
Defining views’ CSS classes¶
This was previously done through MyView.prototype.className, which didn’t respect class structure, so it was often necessary to duplicate CSS rules in sub-views. The new approach is to override css_classes() method, e.g.:
class MyView extends MyOtherView {
css_classes() {
return super.css_classes().concat("my-view")
}
}
This change affects only creators of custom extensions.
HasProps.initialize()
¶
Previously HasProps.initialize()
took attrs and options as its arguments.
This was nearly never used and so it was removed. The preferred way to configure
values of attributes is to use bokehjs’ properties system. This change affects
only creators of custom extensions.
0.12.13¶
Bokeh Version 0.12.13
(Dec 2017) is a targeted bugfix release that addresses
two issues:
push_notebook
regression in0.12.11
- Windows package install failures due to reserved “aux” filename
For full details see the CHANGELOG.
Migration Guide¶
BokehJS Changes¶
bokehjs doesn’t require custom styles to make “responsive” layout modes work anymore. This means that there are no additional styles added a page, like margins. This results in margins working differently and now default to browser defaults. If you want to restore the previous behavior, then add the following to your HTML:
<style>
html {
width: 100%;
height: 100%;
}
body {
width: 90%;
height: 100%;
margin: auto;
}
</style>
0.12.11¶
Bokeh Version 0.12.11
(Nov 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
Step
glyph for step lines added (#3644)- Level-of-Detail works with linked plots (#5937)
- Bokeh applications in notebooks made simpler to create (#6565)
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
BokehJS Changes¶
To help with the eventual migration to TypeScript, we have switched to the new CoffeeScript compiler. This should be completely transparent to standard users but custom extensions may need small changes in some specific cases, for example, the “Ion Range Slider” required the following change:
- onChange: @slide,
- onFinish: @slidestop
+ onChange: (data) => @slide(data),
+ onFinish: (data) => @slidestop(data),
Shorthand initialization syntax for Range1d(start, end) in bokehjs was removed due to technical difficulties. Use full new Range1d({start, end}) syntax instead. The short syntax may be restored at some point as a part of bokeh-api package.
The coordinate system of canvas layout and related infrastructure (positioning, hit testing, etc.) is new “screen”, where the origin is left-top corner of the canvas. This change shouldn’t affect users, however it affects custom model developers. Follow updated examples for new development patterns.
0.12.10¶
Bokeh Version 0.12.10
(Oct 2017) is an incremental update that adds a few
important features and fixes several bugs. For full details see the
CHANGELOG.
Migration Guide¶
Deprecations Removed¶
The following previous deprecations have been removed:
app_path
from functions inbokeh.client.session
andbokeh.embed
standalone_html_page_for_models
frombokeh.embed
'patch'
and'stream'
event names (use'patching'
and'streaming'
)webgl
,x_mapper_type
,y_mapper_type
, andtool_events
fromPlot
- Glyphs methods now only accept either all sequence literals, OR all column names
ResizeTool
(previously made a no-op) has been removed
New Deprecations¶
The boolean responsive
parameter to Figure
and bokeh.layouts
has
been deprecated. The sizing_mode
enum should be used instead. Use
sizing_mode='fixed'
for responsive=False
and
sizing_mode='scale_width'
for responsive=True
instead.
The function bokeh.sampledata.population.load_population
has been
deprecated. Use the attribute bokeh.sampledata.population.data
instead.
Code Moves¶
The module bokeh.util.notebook
has been deprecated. The functions it
contains have been moved to bokeh.io.notebook
.
The function bokeh.io.set_curdoc
is now bokeh.io.doc.set_curdoc
.
Named color objects now live in bokeh.colors.named
instead of directly in
bokeh.colors
. Additionally color utilities such as NamedColor
have been
moved inside the package, and marked as internal API. Using string names for
colors works exactly as before.
Dead Code Removal¶
The following unused code was removed immediately:
Aggregation
frombokeh.core.enums
- PyPy detection functions from
bokeh.util
- Zeppelin related code (support should come from external notebook hook)
Additionally the attribute bokeh.__base_version__
was removed. Computing
it at all times made importing Bokeh take substantial fractions of a second
longer than necessary. It is not expected this change should affect any
users, but if you need this value, the bokeh.util.version.base_version
function can be used.
0.12.9¶
Bokeh Version 0.12.9
(Sep 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
- JupyterLab integration with the jupyterlab_bokeh extension
- Efficient binary transport for sending arrays to clients
- Improvements to new Graph/Network capability
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
Deprecated bokeh.charts
support removed¶
The bokeh.charts
module, which was simply a compatibility shim to load the
separate bkcharts
package, has been removed. Additionally, Bokeh itself no
longer lists bkcharts
as a dependency. In order to continue using
bkcharts
code, the bkcharts
package must be installed separately.
Deprecated MPL compatibility removed¶
The bokeh.mpl
module and all supporting code in bokeh.core.compat
has
been removed. Bokeh no longer offers or attempts any automatic MPL conversion.
Table Date Formatter Changes¶
A regression in 0.12.7
caused the DateFormatter
to stop functioning.
The problem has been fixed, however instead of the previously accepted JQuery
style formats, the``format`` property now only accepts
standard strftime format strings (making it consistent with
DatetimeTickFormatter
)any of the following additional predefined formats names:
Format name(s) Format string Example Output ATOM
/W3C
/RFC-3339
/ISO-8601
"%Y-%m-%d"
2014-03-01 COOKIE
"%a, %d %b %Y"
Sat, 01 Mar 2014 RFC-850
"%A, %d-%b-%y"
Saturday, 01-Mar-14 RFC-1123
/RFC-2822
"%a, %e %b %Y"
Sat, 1 Mar 2014 RSS
/RFC-822
/RFC-1036
"%a, %e %b %y"
Sat, 1 Mar 14 TIMESTAMP
(ms since epoch)<PHONE_NUMBER>000 Note that the previously available format name
TICKS
is no longer supported.
Old Testing Functions Removed¶
The functions bokeh.test
and bokeh.util.testing.runtests
have been
removed immediately. Tests should be run as described in the testing section
of the Developer’s Guide.
The function bokeh.util.testing.print_versions
has been removed
immediately. The bokeh info
command (or python -m bokeh info
) should be
used instead.
Refactor of bokeh.client
and bokeh.document
¶
The bokeh.client
and bokeh.document
packages were refactored, to make
maintenance and testing simpler, and to improve overall code quality. No
commonly used or demonstrated public APIs were affected, (no example code
required any changes). The other files that were moved or changed are not
expected to impact user code.
End of Official Support for Python 3.4¶
Starting with this release, Bokeh is no longer continuously tested against Python 3.4. Use of Bokeh with Python 3.4 will very likely still work, but there are no longer any guarantees backed by CI testing.
0.12.7¶
Bokeh Version 0.12.7
(Aug 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
- Support graphs/trees/networks (#187) including configurable and extendable policies for highlighting and selection.
- Filterable/Sliceable CDS views (#4070)
- Pass HTTP request args to embedded sessions (#5992)
- New
Expression
models for client-side computations, includingStack
, for stacking CDS columns. - New module bokeh.transform with helper functions for simplifying
DataSpec
expressions, includingjitter()
,dodge()
,factor_cmap()
, etc. - Added
hbar_stack()
andvbar_stack()
to greatly simplify creation of stacked bar charts. - Improvements for using Bokeh with Categorical data:
- Support multi-level categories and hierarchical axes
- Arbitrary limits on category names (e.g. no
':'
) have been lifted - Optional Pandas integration creates CDS from directly from
GroupBy
objects - Categorical Bar, Heatmap and Scatter plots easier to create with stable
bokeh.plotting
APIs - New User’s Guide chapter Handling Categorical Data
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
New Embed Functions for Bokeh Applications¶
Two new embed functions similar to autoload_server
are added, that have
simpler APIs and are more focused:
bokeh.embed.server_document()
for embedding new sessions for entire Bokeh documents in HTML pages. (More common)bokeh.embed.server_session()
for embedding existing sessions for specified Bokeh models in HTML pages (Less common)
Additionally, with these new methods one may choose to not load the JS/CSS
resource files by passing resources="none"
as a parameter.
Deprecations Removed¶
The following previously deprecated modules or features have been removed:
bokeh.icons
module- Legacy anchor and legend locations
left_center
andright_center
ImageRGBA.rows
andImageRGBA.cols
propertiesHBox
andVBox
inbokeh.layouts
validate
keyword argument forbokeh.io.save
New Deprecations¶
bokeh.embed.autoload_server
has been deprecated and replaced with the
two simpler functions server_document()
and
server_session()
described above.
bokeh.models.tools.tool_events
has been deprecated. Users should instead
use the SelectionGeometry
event present on Plot
or Figure
.
DynamicImageRenderer
and Plot.add_dyanamic_image
have been deprecated.
For GIS-related use-cases built on top of Bokeh, consider using
GeoViews, or creating a Custom Extension.
ResizeTool
is deprecated and also immediately is a NO-OP on the Python
side. ResizeTool
has been removed from BokehJS entirely.
BokehJS Widgets Bundle Split¶
The bokeh-widgets bundle was split into bokeh-widgets
and
bokeh-tables
. This is to reduce the weight of the main widgets’ bundle.
Bokeh includes bokeh-tables
automatically when necessary, so this change
should be transparent for most users. However, users of custom templates or
other advanced embedding scenarios (including the use of components
) may
be affected. In short, if your application is responsible for loading Bokeh
resources, then it should take care of loading the bokeh-tables
as well.
TapTool Callback Calling Convention¶
The TapTool strayed from usual callback calling convention by passing a glyph
data source as cb_obj
. This has been rectified, and now the tool follows the
usual convetion: the tool itself is passed as cb_obj
and the data source is
passed as part of the optional cb_data
. Existing usage of OpenURL
is
unaffected by this change, but any CustomJS
callbacks used with the tap tool
will need to be updated to reflect this change.
DataTable Selection Highlighting Signal¶
The DataTable now responds to the signal source.change.emit()
, instead of
source.properties.selected.change.emit()
, to visually highlight the rows in the
DataTable that are part of the selection. If you have used
source.properties.selected.change.emit()
in CustomJS code, you will need to
change it to source.change.emit()
.
The DataTable responds automatically to changes in its data source’s selected
property. However, because of Bokeh’s change detection machinery, only a replacement
of the selected
property causes a change signal to be emitted, and not a partial update
(e.g. source.selected['1d']['indices'] = [1, 2]
). If you use a partial update in CustomJS
code, you will need to emit the change signal yourself:
customjs = CustomJS(args=dict(source=source), code="""
source['selected']['1d'].indices = [1, 2]
source.change.emit();
""")
Refactoring of bokeh.server
contents¶
The bokeh.server
module was refactored in order to be easier to document
and maintain, as well as simpler for user’s to use in more sophisticated use
cases. These changes are not expected to impact standard usage of Bokeh in any
way:
- All protocol-related code was moved to a new module
bokeh.protocol
- The
Server
class was split intoServer
(no API changes) and a newBaseServer
that can be used when explicit coordination of low level Tornado components is required. - Missing sections added to reference guide, and docsctring coverage greatly expanded.
- Old cruft code to handle Tornado < 4.3 (which is no longer supported) was removed.
0.12.6¶
Bokeh Version 0.12.6
(Jun 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
- Headless, programmatic export of SVG and PNG images (#538)
- New annotations
Band
andWhisker
for displaying error estimates (#2352) - Fine-grained sub-element patching for images and other “multi” glyphs (#6285)
- Hover hit-testing extended to segments and all markers (#5907, #5907)
- Fixes for sorting and selecting from DataTables (#3564, #6115)
- Large cleanup and refactor of the layout system (#4764, #4810, #5131, #5518, #6213, #6287)
- Improved formatting options for hover tool fields and axis tick labels (#1239, #1671, #2595, #6079)
Many other bugfixes and docs additions are also included. For full details see the CHANGELOG.
Migration Guide¶
As the project approaches a 1.0 release, it is necessary to make some changes to bring interfaces and functionality up to a point that can be maintained long-term. We try to limit such changes as much as possible, and have a period of deprecation.
New deprecations¶
The Plot.webgl
property has been deprecated in place of a new property
Plot.output_backend
in order to avoid conflicts between WebGL and a new
SVG backend. If you are using plot.webgl = True
, you should switch to
setting plot.output_backend = "webgl"
for the future.
Old deprecations removed¶
All previous deprecations up to 0.12.3
have be removed. Below is the
complete list of removals.
- Deprecated
Button.type
property has been removed. - Deprecated
Legend
properties:legends
,legend_margin
,legend_padding
,legend_spacing
have been removed. - Deprecated
DatetimeTickFormatter.formats
property has been removed. Tool
dimensions may not only be specified with enum values.
New models for Scales¶
The following BokehJS classes have been moved and renamed:
| Old | New |
|---|---|
mappers/LinearMapper |
scales/LinearScale |
mappers/LogMapper |
scales/LogScale |
mappers/CategoricalMapper |
scales/CategoricalScale |
Previously, these Mapper classes were internal implementation details. The new Scale classes are first-class Bokeh models and are accessible from Python. This was done to facilitate future work supporting custom, user-defined scales.
There is a new Plot validation check to ensure that Scales and Ranges on a
dimension are compatible. By default, Plot
models are configured with
LinearScale
models which (along with LogScale
models) are compatible
with Range1d
and DataRange1d
range models.
One inevitable breaking change is that users employing a FactorRange
in
the bokeh.model
API will have to specify a CategoricalScale
on the same
dimension. For example:
plot = Plot()
plot.x_range = DataRange1d()
plot.y_range = FactorRange(["Mon", "Tues", "Wed", "Thurs", "Fri"])
plot.y_scale = CategoricalScale()
The bokeh.plotting.figure
function should this range and scale
compatibility handling automagically in most cases.
As part of this work, some BokehJS attributes were renamed to be consistent with the new terminology:
| Old | New |
|---|---|
CartesianFrame.x_mappers |
CartesianFrame.xscales |
CartesianFrame.y_mappers |
CartesianFrame.yscales |
GlyphRenderer.xmapper |
GlyphRenderer.xscale |
GlyphRenderer.ymapper |
GlyphRenderer.yscale |
Since these attributes may be present in user code (e.g CustomJS callbacks or extensions), the old names will continue to work for some time, with a deprecation warning in the JS console.
New signaling API¶
Previously BokehJS used Backbone events for communication between models. As part of an ongoing migration to TypeScript, the Backbone dependency was removed, and the relevant portion replaces with a minimal, type-safe API for signaling.
This change primarily affects contributors working on BokehJS and writers of extensions.
| Old | New |
|---|---|
@listenTo(obj, 'change', fn) |
@connect(obj.change, fn) |
@listenTo(obj, 'change:attr', fn) |
@connect(obj.properties.attr.change, fn) |
obj.trigger('change', arg) |
obj.change.emit(arg) |
obj.trigger('change:attr', arg) |
obj.properties.attr.change.emit(arg) |
Python Datetime handling¶
Bokeh has not handled Python datetime values consistently with NumPy
datetime64
. Bokeh aims to treat all datetime values “as-is”, but in some
cases a local timezone conversion could affect Python datetime values. This
has been corrected. In case there is code that depends on the erroneous
behavior, please note that the new behavior is effective immediately and is
now maintained under test to be consistent with NumPy values. See the issue
#5499 for more details.
Layout API and behaviour changes¶
Layout was previously handled on document level and there was one solver per
document. This was changed to one solver per root, so document isn’t anymore
responsible for any layout related stuff. All logic and APIs were moved to
views, specifically to LayoutDOM
. For example, if your code relied on
document.resize(width, height)
, then you should use view.resize(width, height)
,
where view
is an associated view of any of document
’s root models.
Views can be obtained through Bokeh.index
. To resize all roots use
for (var key in Bokeh.index) {
Bokeh.index[key].resize(width, height);
}
0.12.5¶
Bokeh Version 0.12.5
(Mar 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
- New general capability for Python/JS events (#3210, #3748, #5278)
- Bokeh apps easily viewable inline in Jupyter Notebooks (#3461)
- Confusing
--host
parameter no longer necessary (#5692) - Interactive legends can now control glyph visibility (#2274, #3715)
- Many fixes and improvements to
GMapPlot
including a newgmap
function for creating Google Maps plots easily (#2822, #2940, #3737, #4835, #5592, #5826, #5845) CustomJSTransform
now available for CDS columns (#5015)- Sophisticated “pivot” example app contributed (#5894)
- Themes now work with
components
and in Jupyter notebooks (#4722, #4952, )
Many other bugfixes and docs additions are also included. For full details see the CHANGELOG.
Known Issues¶
The ClientSession APIs defined in bokeh.client.session, such as push_session, don’t currently support the new on_event interface for UI event callbacks in Bokeh Server application. You may track the issue on GitHub (#6092).
Migration Guide¶
As the project approaches a 1.0 release, it is necessary to make some changes to bring interfaces and functionality up to a point that can be maintained long-term. We try to limit such changes as much as possible, and have a period of deprecation.
New Deprecations¶
MPL COMPATIBLITY IS DEPRECATED
Bokeh’s MPL compatibility was implemented using a third-party library that
only exposes a small fraction of all Matplotlib functionality, and is
now no longer being actively maintained. The Bokeh team unfortunately does
not have the resources to continue supporting this functionality, which
was never more than extremely limited in capability, and often produced
substandard results. Accordingly, in order to support the long term health
of the project, it has been decided to remove all MPL compatibility support
on the occasion of a 1.0 release. Any code that currently uses to_bokeh
will continue to work with a deprecation warning until that time.
The bokeh.embed.standalone_html_page_for_models
method has been deprecated
in place of bokeh.embed.file_html
. For details see pull request 5978.
The validate
keyword argument to bokeh.io.save
has been deprecated.
Future usage of bokeh.io.save
will always validate the document before
outputting a file.
Deprecations removed¶
All previous deprecations up to 0.12.0
have be removed. Below is the
complete list of removals.
Modules and functions and classes that have been removed:
| Functions Removed | Modules Removed | Classes Removed |
|---|---|---|
bokeh.embed.components |
bokeh.browserlib |
bokeh.core.properties.TitleProp |
bokeh.charts.hplot |
bokeh.mixins |
bokeh.models.layouts.GridPlot |
bokeh.charts.vplot |
bokeh.plotting_helpers |
bokeh.models.layouts.VBoxForm |
bokeh.io.hplot |
bokeh.properties |
|
bokeh.io.vplot |
bokeh.templates |
|
bokeh.io.vform |
||
bokeh.plotting.hplot |
||
bokeh.plotting.vplot |
The methods bokeh.document.add
and push_notebook
of
ColumnDataSource
have been removed.
The bokeh.io.output_server
function has been also been removed.
Additionally, bokeh.io.push
and other supporting functions or
properties that are useless without output_server
have been
removed. This includes any transitive imports of these functions
from other modules.
Additionally, the property bokeh.charts.builder.Builder.sort_legend
was
removed, as well as the following properties of Plot
border_fill
background_fill
logo
responsive
title_text_align
title_text_alpha
title_text_baseline
title_text_color
title_text_font
title_text_font_size
Host Parameter Obsoleted¶
The --host
parameter is now unnecessary. For compatibility, supplying
it will currently cause a warning to be displayed, but it will otherwise
be ignored, and apps will run as normal. In a future release, supplying it
will result in an error.
The --host
parameter for the Bokeh server was confusing and difficult to
explain. As long as the Bokeh server relied on the HTTP “host” header to
provide URLs to resources, the --host
parameter was a necessary precaution
against certain kinds of HTTP spoofing attacks. However, the Bokeh server
has been updated to no longer require the use of the “host” header (and this
is maintained under test). Accordingly, there is no need to have any check
on the value of the “host” header, and so --host
is no longer needed.
Document and Model Refactoring¶
In order that document.py
and models.py
only contain things that might
be of usual interest to users, some changes and rearrangements were made.
The abstract
class decorator was moved from models.py
to
has_props.py
. The class decorator now also adds an admonition to the
docstring of any class marked abstract that it is not useful to instantiate
directly.
The metaclass Viewable
has been renamed to MetaModel
.
The document.py
module has been split up, and parts that would not be of
normal interest to most users have been moved to better locations.
These changes are not expected to impact user code in any way. For complete details see pull request 5786.
JQuery and underscore.js removed from BokehJS¶
JQuery has been removed as a build dependency of BokehJS. The variable Bokeh.$ is no longer available. If you require JQuery (i.e. for a custom extension or when using the JavaScript API) you will need to provide it explicitly.
underscore.js has been removed as a build dependency of BokehJS. The variable Bokeh._ is no longer available. If you require underscore.js (i.e. for a custom extension or when using the JavaScript API) you will need to provide it explicitly.
Both of these removals together result in a ~10% reduction in the size of the minified BokehJS library.
Default tooltip position for lines changed to nearest point¶
When showing tooltips for lines, the new default is to label the nearest point, instead of the previous point, which used to be the default.
HTTP Request information for apps limited to query arguments¶
The request
previously attribute was added to session contexts as a way to
expose HTTP query parameters. It was discovered that providing the entire
request is not compatible with the usage of --num-procs
. A method was
found to satisfy the original feature request for query arguments, together
with --num-procs
(but only for query arguments). Accordingly the only
attribute that can now be accessed on request
is .arguments
, e.g.:
curdoc().session_context.request.arguments
Attempting to access any other attribute on request
will result in an
error.
Default save file¶
If user-specified or default destination cannot be written to, a temporary
file is generated instead. This mostly affects using output_file
in an
interactive session which formerly could result in a PermissionError
.
For details see pull request 5942.
The bokeh.io.save
method will now only accept a LayoutDOM
object and
no longer a Document
object for its obj
argument. This aligns the
bokeh.io.save
argument types with bokeh.io.show
.
Reorganization of bokeh’s examples¶
Low-level examples, located under examples/models
, were split into file
and server
examples and are available under examples/models/file
and
examples/models/server
respectively (similarly to plotting examples).
Enabling WebGL via URL parameters disallowed¶
Previously it was possible to enable WebGL with ?webgl=1
URL parameter.
With addition of a separate bokeh-gl
bundle, this usage is no longer
supportable. WebGL rendering is still configurable using the Plot.webgl
property.
0.12.4¶
Bokeh Version 0.12.4
(Jan 2017) is an incremental update that adds a few
important features and fixes several bugs. Some of the highlights include:
- Efficient binary array protocol. (#2204)
- A general mechanism to add
CustomJS
callbacks to any property. (#5498) - Several fixes to log plots. (#2789, #3834, #5389, #5549, #5576)
- Fixes related to custom extensions. (#5315, #5590)
- Guidance and examples for embedding a Bokeh server directly in standalone scripts, Jupyter notebooks, and Tornado and Flask applications.
- Support for read-only (client-side) properties, e.g. plot inner dimensions (#5199)
- Improved documentation for the bokeh.palettes module. (#5619)
- Major refactor of
bokeh.core
including expanded documentation and tests (#5626, #5627)
Many other small bugfixes and docs additions. For full details see the CHANGELOG.
Migration Guide¶
As the project approaches a 1.0 release, it is necessary to make some changes to bring interfaces and functionality up to a point that can be maintained long-term. We try to limit such changes as much as possible, and have a period of deprecation.
Broken Dialog Removed¶
The Dialog
widget has been broken for some time. Due to lack of user
reports about it, and because custom extensions now provide a path for users
to integrate third party JS dialog libaries, this widget has been removed
immediately.
Custom Extension Import/Export¶
BokehJS is making a slow migration to TypeScript to support long-term stability and maintainability. This necessitates some short term changes for writing custom extensions.
JavaScript extension code with requires
and module.exports
, such as:
Model = require "model"
class DateGapTickFormatter extends TickFormatter
# implementation here
module.exports =
Model: DateGapTickFormatter
should be re-written as:
import {Model} from "model"
export class DateGapTickFormatter extends TickFormatter
# implementation here
Legend Locations¶
To improve consistency, the following locations names have changed:
| old location name | new location name |
|---|---|
left_center |
center_left |
right_center |
center_right |
The old location names will continue to work for some time with a deprecation warning.
App Current Directory¶
Directory style apps no longer chdir
into the app directory. The module
attribute __file__
should be used to construct any file paths relative
to main.py
for use with open
, etc.
Window Titles¶
Bokeh apps embedded with autoload_server
will no longer set the browser
window title.
Positional Argument Order For hbar
¶
In order to provide much improved interactive help (true function signatures
and rich auto-generated docstrings) the order of the left
and right
parameters to hbar
had to be swapped (cannot have non-default args after
a default arg). The new function signature is:
p.hbar(y, height, right, left=0, **kwargs)
Old bokeh-server
Command Removed¶
Since 0.11, the old bokeh-server
command remained and only printed a
message directing to information about using bokeh serve
. It has been
removed completely.
Cruft auto
Functions removed¶
The following functions in bokeh.io
were long unused and have been
removed: autoadd
, autopush
, and autosave
.
Eco Templates No Longer Supported¶
BokehJS has migrated to using .tsx
templates. Provisional support for
including .eco
templates has been removed from both BokehJS and the
Bokeh Python library.
Base64 serialisation and Python 3.3¶
The addition a binary protocol that uses a base 64 encoding for NumPy arrays means that Bokeh will not function with NumPy arrays on Python 3.3, due to a bug in Python. A possible workaround is to convert all arrays to plain python lists. As a reminder, Bokeh official support includes Python 2.7 and 3.4+ only.
BokehJS BackboneView $
Removed¶
In part of a longer effort to remove the JQuery dependency from BokehJS
entirely, the $
attribute that BokehJS added to BackboneView
has been removed. Use e.g., @$el.find
instead.
Additionally, use of Bokeh.$
and Bokeh._
Refactor of bokeh.core
¶
It is expected that all of these these changes should be below the level that standard users will ever be exposed to. These changes are listed here for completeness.
The overly large bokeh.core.properties
module has been split up. This
improves maintainability and allows the contents of bokeh.core.properties
to limited to things of that might be useful to users writing custom models.
The new file structure:
bokeh.core.has_props
bokeh.core.properties
bokeh.core.property.bases
bokeh.core.property.containers
bokeh.core.property.descriptors
bokeh.core.property.descriptor_factory
bokeh.core.property.override
The following class names have been changed to improve intent and clarity (i.e. only things that are actually Python descriptors are named “Descriptor”):
| old class name | new class name |
|---|---|
PropertyFactory |
PropertyDescriptorFactory |
PropertyDescriptor |
Property |
ParameterizedPropertyDescriptor |
ParameterizedProperty |
BasicProperty |
BasicPropertyDescriptor |
DataSpecProperty |
DataSpecPropertyDescriptor |
UnitsSpecProperty |
UnitsSpecPropertyDescriptor |
The following unused and non-useful properties were removed in this effort:
Align
, Event
, Function
, and This
.
The default value for the owner
parameter of the __get__
method
on property descriptors was an unnecessary change to the standard Python
descriptor protocol, and has been removed.
Additionally, the HasProps.set
method has been removed. The name caused
problems with the Sphinx docs build, and it was an unnecessary duplicate of
HasProps.update
(which should be used instead).
0.12.3¶
Bokeh Version 0.12.3
(Oct 2016) is a minor, incremental update that adds
a few new small features and fixes several bugs. Some of the highlights include:
- BokehJS reduced in size by nearly twenty percent
- New Categorical color mapper
- Tap tool and tooltips working for VBar and HBar
- Better hover tool support for some Charts
- Auto-generate legends from data in a column
- Many small bugfixes
Migration Guide¶
As the project approaches a 1.0 release, it is necessary to make some changes to bring interfaces and functionality up to a point that can be maintained long-term. We try to limit such changes as much as possible, and have a period of deprecation.
Specifying Font Sizes¶
Setting text font size properties directly as strings (e.g. font_size="10pt"
)
has been UN-DEPRECATED. This usage will continue to work, without any further
deprecation warning. (https://github.com/bokeh/bokeh/pull/5274)
output_server¶
The output_server
function is deprecated and will be removed in the near
future. Use bokeh.client
functions such as push_session
instead.
(https://github.com/bokeh/bokeh/pull/5225)
Glyph Methods and Data Sources¶
It is now deprecated to supply both sequence literals and an explicit source to glyph methods. For example:
p.circle([1,2,3], y='foo', source=source) # BAD
Either provide only sequence literals, e.g:
p.circle([1,2,3], y=[4,5,6])
or put all data into the explicitly provided source, e.g:
p.circle(x='foo, y='foo', source=source)
The older usage will continue to function for some time with a deprecation warning, and will result in an error in a future release. (https://github.com/bokeh/bokeh/pull/5187)
FuncTickFormatter¶
FuncTickFormatter instances using JavaScript or CoffeeScript now require code snippets (i.e., function bodies) instead of full function definitions. Additionally, these formatters now accept Bokeh models as arguments so that the models can be readily available to the formatter function code. (https://github.com/bokeh/bokeh/pull/4659/files)
Legend¶
Several legend properties had duplicative legend_
prefixes. The following
property names have been changed:
| old property name | new property name |
|---|---|
legend_margin |
margin |
legend_padding |
padding |
legend_spacing |
spacing |
The old property names will continue to work for some time with a deprecation warning.
Additionally, the legends
property of Legend has been renamed to items
,
and given a new type. The new type now accepts a list of LegendItem models
,
instead of a list of tuples. The previous format is still accepted for
convenience and compatibility and values are converted automatically. The
legends
property will also continue to work for some time with a
deprecation warning.(https://github.com/bokeh/bokeh/pull/5229)
Dimensions¶
Specifying dimensions for tools has changed. The 'x'
and 'y'
aliases
for 'width'
and 'height'
have been immediately removed.
Additionally, instead of List(Enum(Dimension)
, dimensions are now specified
more simply as Enum(Dimension)
with valid values "width"
, "height"
,
and "both"
. The previous format will continue to work for some time and be
converted automatically with a deprecation warning.
(https://github.com/bokeh/bokeh/pull/5225)
BokehJS Notes¶
- The BokehJS codebase organization has been cleaned up. The file
common/hittest.coffee
has been moved tocore/hittest.coffee
. Other files that are unlikely to be used directly by users have also been moved. (https://github.com/bokeh/bokeh/pull/5266) - The BokehJS class
GlyphView
no longer inherits fromRenderer.View
, it now subclassesBokehView
. (https://github.com/bokeh/bokeh/pull/5189) - The BokehJS palettes are now only available in the
bokeh-api.js
bundle, and not inbokeh.[min].js
(https://github.com/bokeh/bokeh/pull/5183) - The BokehJS bundle
bokeh-compiler.js
has been removed completely. All Coffeescript code (for extension modules, etc.) is now pre-compiled by the Bokeh Python library. (https://github.com/bokeh/bokeh/pull/4946)
0.12.2¶
Bokeh version 0.12.2 (Sept 2016) is aminor update that adds a few “small in footprint, but big in impact” features and several bug fixes including:
- Client-side color mapping support for all glyphs
- New color bar annotation
- Support for loading external resources in custom models - Check out the new LaTeX example at: LaTeX
- Hit-testing support for MultiLine glyphs
- Improved hover tooltip default styling
- Addition of the Brewer qualitative color palettes
- Fix intermittent issues with BokehJS loading in Jupyter Notebooks
- Split of the Bokeh JS API into a stand-alone bundle
- Many small bug fixes
Migration Guide¶
Jupyter Notebook output changes¶
As part of the changes to ensure that the BokehJS client library has loaded
before attempting to render plots in the notebook, a new notebook_handle
argument was added to the bokeh.io.show
method. When set to True
(with
output_notebook
enabled), the show
method will return a handle that
can be used with push_notebook
.
For users who rely on the notebook handles to update plots out of their render
order, you’ll have to add notebook_handle=True
to your show
invocations
like below:
from bokeh.plotting import figure
from bokeh.io import output_notebook, push_notebook, show
output_notebook()
plot = figure()
plot.circle([1,2,3], [4,6,5])
handle = show(plot, notebook_handle=True)
# Update the plot title in the earlier cell
plot.title = "New Title"
push_notebook(handle=handle)
BokehJS API Changes¶
In order to shrink the size of the main BokehJS library and reduce pageload times, the Bokeh JS API has been separated into it’s own bokeh-api(.min).js bundle. For users requiring the JS API, it will be necessary to add the new resource to their HTML templates.
0.12.1¶
Bokeh Version 0.12.1
(Jul 2016) is a minor, incremental update that adds
a few new small features and fixes several bugs. Some of the highlights include:
- Add
.patch
method toColumnDataSource
for efficient partial updates. - Add
.visible
property to all glyphs for easy on/off capability. - Add qualitative Brewer colormapps to
bokeh.palettes
. - Add new
VBar
andHBar
glyph types. - Update BokehJS to use use RBush 2.0.1 for more efficient spatial indexing.
- Restore
ResizeTool
functionality for simple layouts. - Fix Windows support for conda build, docs build, and running unit tests.
- Fix a bug in the HTML template for
autoload_server
causing incorrect layouts. - Fix a bug in the toolbar CSS, causing it to interfere with hit testing and selection.
- Fix WebGL support for Safari, and WebGL bug affecting line thickness.
- Fix intermittent issues with BokehJS loading in Jupyter notebooks.
0.12.0¶
Bokeh Version 0.12.0
(Jun 2016) is a large release with many new
improvements:
- Responsive layout and styling improvements throughout
- BokehJS plotting and charts APIs for pure JS dev
- Legends can be placed outside / next to the central plot area
- Expanded WebGL support to all markers, fixed webgl bugs
- New color palettes: Viridis, Magma, Inferno, and Plasma
- New model types:
- Arrow, Title, and Label annotations
- LogColorMapper for scaled color mapping
- FuncTickFormatter for simpler custom ticking
- Support for computed transforms (e.g. Jitter) on data columns
- Documentation improvements:
- re-done user gude sections for layout
- new user guide sections for JS APIs
- new user guide sections for custom extensions
- Server features:
- unlocked callbacks for use with threads
- “–num-threads” option for simpler deployment
- new index landing page listing installed aps
- UX improvements
- toolbar moved to the right, and made sticky, by default
- left aligned title, closer in, by default
- smaller, italic axes labels
- New hosted demos at https://demo.bokeh.org
- Many small bug fixes
Known Issues¶
Currently the most reliable sizing modes for layouts are “fixed” and
“scale_width”. Other modes may work, or may produce undesired effects.
Work on layout is still ongoing. Support for “mixes” sizing modes
will come in a future release. Additionally, the ResizeTool
does
not function reliably with responsive layout, and will most likely
be deprecated in a future release.
Migration Guide¶
Google Maps¶
Google has made a change to their terms of use for google maps, and “effective immediately”, ALL google maps API calls MUST have an API key, or they will not function:
All Bokeh GMapPlot
models must have their api_key
property set,
or they will not function properly. PLEASE NOTE: all previously created
GMap plots from any previous version of Bokeh are affect by this TOS
change.
Examples¶
All WebGL examples have been moved under examples/webgl
. The
timeout.py
and random_tiles
app examples have been removed
in favor of new, better examples. Several examples of new layout
capability are under examples/howto/layout
.
BokehJS¶
The mechanism for declaring properties on BokehJS has changed, with the
addition of the @define
, @override
and @internal
methods.
This may affect existing custom extesnions. Until now, BokehJS details
were considered an internal implementation detail. In the future, more
attention will be given to BokehJS stability.
Deprecations and Compatibility¶
The new layout work was a large undertaking. As a result, there are many deprecations, including hplot, vplot, etc. Almost all old functions will continue to function, while issuing deprecation warnings. However, there are newer functions that should be preferred. The most up-to-date guidance for layout going forward is at:
In most cases it was possible to move forward with a deprecation, for the time being, but there are two small hard compatibility breaks that could not be avoided:
Plot.title
¶
This attribute is now a Title
object. It is no longer possible to set, e.g.
p.title = "some text"
as a string value. Instead, you must do:
p.title.text = “some_text”
It is still possible to pass the title` keyword argument a string value
to figure
and Charts, as a convenience. Additionally all other title
related properties on Plot
, e.g title_text_color
continue to work
for now, while issuing deprecation warnings.
session.show
¶
The ClientSession.show
method must now be explicitly passed the thing to
be shown. It is no longer possible to call, e.g. session.show()
without
a parameter. Instead, you must do:
session.show(plot)
0.11.1¶
Bokeh version 0.11.1
(Feb 2016) focuses on providing bug fixes, small
features, and documentation improvements. Highlights include:
- settings and documentation for Bokeh server behind an SSL terminated proxy
- bugfixes:
- MultiSelect works
- Oval legend renders correctly
- Plot title orientation setting works
- Annulus glyph works on IE/Edge
- features:
- preview of new streaming API in OHLC demo
- undo/redo tool add, reset tool now resets plot size
- “bokeh static” and “bokeh sampledata” commands
- can now create Bokeh apps directly from Jupyter Notebooks
- headers and content type now configurable on AjaxDataSource
Additionally some internal work has started to refactor and clean up BokehJS to bring the class and file structure into closer alignment with the Bokeh python library.
Migration Guide¶
- Range update callbacks now return the range object as cb_obj (not the plot)
- Layouts (HBox, VBox, VBoxForm) have been moved from bokeh.models.widgets to bokeh.models.layouts, but continue to be importable from bokeh.models
- BlazeDataSource has been removed; it will be maintained by the Blaze team in the future.
- The broken BokehJS API has been removed. We are actively seeking a champion/maintainer for a new BokehJS API.
0.11.0¶
Bokeh Version 0.11.0
(Jan 2016) is a large release with many new improvements
- New Tornado and websocket-based Bokeh Server
bokeh
command line tool for creating applications- expanded docs including deployment guidance
- video demonstrations and tutorials
- supports async, periodic, timeout and model event callbacks
- python client API
- User-Defined Models allowing anyone to extend Bokeh
- GeoJSON data source and map tiles renderer
- WebGL support for rendering lines
- Python -> JS compilation for CustomJS callbacks (Py3 only for now)
- New general push_notebook() based on Jupyter comms
- Updates to charts
- all legacy charts converted
- more examples and expanded docs
- UX improvements
- configurable and “auto” range bounds
- wheel zoom scroll capture turned off by default
- hover policy for glyphs
- responsive improvements
- Known issues
- annulus glyph does not render correctly on IE and Edge
- many small bug fixes
Known Issues¶
Server output in the Jupyter notebook with output_server is currently not functioning correctly, and will be fixed in a follow on 0.11.1 release shortly. However, new notebook comms can enable many of the same kinds of interactions and notebook-based apps without a Bokeh server.
The Image glyph does not currently work with the Bokeh server, and will be fixed in a follow on 0.11.1 release shortly.
Migration Guide¶
The previous Flask-based bokeh-server
has been completely removed and
replaced with the new bokeh serve
based on Tornado and a websocket
protocol. If you require to use bokeh-server
you will have to remain on
Bokeh version 0.10.0
or lower.
All “old-style” charts in bokeh._legacy_charts
have been updated to use
the more consistent and powerful bokeh.charts
interface, and
bokeh._legacy_charts
has been removed.
Bokeh deprecation warnings, which are not enabled by default python, have now been unconditionally enabled and are always displayed.
ColumnDataSource.push_notebook()
has been deprecated (but still works)
in favor of the more general bokeh.io.push_notebook()
base on Jupyter
notebook websocket comms.
The following modules have been deprecated (but still work), with new counterparts as described in this table:
| Old location | New location |
|---|---|
bokeh.browserlib |
bokeh.util.browser |
bokeh.properties |
bokeh.core.properties |
bokeh.mixins |
bokeh.core.property_mixins |
bokeh.plotting_helpers |
bokeh.plotting.helpers |
bokeh.templates |
bokeh.core.templates |
Additionally, the following modules that should not be of interest to general users have been moved immediately, without deprecation:
| Old location | New location |
|---|---|
bokeh._json_encoder |
bokeh.core.json_encoder |
bokeh.compat |
bokeh.core.compat |
bokeh.enums |
bokeh.core.enums |
bokeh.query |
bokeh.core.query |
bokeh.state |
bokeh.core.state |
bokeh.validation |
bokeh.core.validation |
If you have been using file_html
and manually passing in
js_resources
or css_resources
, your call will no longer
work. You can still do this, but you pass a tuple to the resources
argument.
Before:
html = file_html(layout, None, title=title, template=template, js_resources=js_resources, css_resources=css_resources)
v0.11:
html = file_html(layout, resources=(js_resources, css_resources), title=title, template=template)
Note you can pass None
in place of either js_resources
or css_resources
.
0.10.0¶
Bokeh 0.10.0
(Sep 2015) provides several new features such as WebGL support,
a new refactored and more powerful chart interface and responsive plots. Also
bugfixes and enhancements in our documentation, testing and build machinery,
and examples.
- Initial webgl support (check our new examples: maps city, iris blend, scatter 10K, clustering.py)
- New charts interface supporting aggregation (see our new Bars, BoxPlot, Histogram and Scatter examples)
- Responsive plots
- Lower-level jsresources & cssresources (allow more subtle uses of resources)
- Several test machinery fixes
- Several build machinery enhancements
- More pytest-related fixes and enhancements
- More docs fixes and enhancements
- Now the glyph methods return the glyph renderer (not the plot)
- Gmap points moves consistently
- Added alpha control for imageurl objects
- Removed python33 testing and packaging
- Removed multiuserblazeserver
Migration Guide¶
This release introduced a new, often requested style of chart interface that
is centered around Pandas DataFrames. All of “old style” charts in the
bokeh.charts
interface have been moved to bokeh._legacy_charts
,
which will eventually be removed, when all charts have been updated.
To continue to use the old charts, replace``bokeh.charts`` with
bokeh._legacy_charts
, e.g.:
from bokeh.charts import Area
becomes
from bokeh._legacy_charts import Area
0.9.3¶
Bokeh 0.9.3
(Aug 2015) provides several usability enhancements, better
docs, new examples, a lot of bug fixes and an improved testing machinery (using
pytest and selenium-based test).
- Support horizontal or vertical spans
- Provide raw_components version of bokeh.embed.components
- Prevent Bokeh from eating scroll events if wheel tool is not active
- bokeh.models.actions are now called bokeh.models.callbacks and Callback is now CustomJS
- Additional validation warnings
- Cleaned up gulp source mapping
- Fixes in our build machinery
- Cleaned up models section of the reference guide
- Use pytest instead of nose
- Beginning to add selenium tests
0.9.2¶
Bokeh 0.9.2
(Jul 2015) provides several bugfixes. Additionally, the MPL
compatibility layer was updated.
- Several nan-related fixes including the slow rendering of plots
- Removed some unused dependencies
- Fixes in our automated release process
- Fixed the patchs vanishing on selection
- More control over ticks and gridlines
- MPL compatibility updated
- Several examples updated
0.9.1¶
Bokeh 0.9.1
(Jul 2015) focused on extending Bokeh’s new callback system by
adding more places where callbacks can be used, expanding and improving the
new User’s Guide, exposing better ways to embed Bokeh plots and widgets into
your own layouts, and providing validation error and warning feedback to
diagnose problems.
- New callbacks options for hover, selection, and range updates
- Documentation for widgets and new callbacks in the User’s Guide
- Much more flexible embed.components that can embed multiple objects
- Implemented a validation framework to provide errors and warnings
- More than 30 smaller bugfixes
0.9.0¶
Bokeh 0.9.9
(May 2015) provides sophisticated interactions in static plots
using a new Callback Action, a complete rewrite of the User guide and big
BokehJS refactoring switching to use browserify.
- Callback Action, serverless interactivity in static plots
- Hover inspection along lines
- Client side LOD downsampling for interactive tools
- Full User guide rewrite
- Reduce BokehJS boilerplate and switch to use browserify
- Several example bugfixes
0.8.2¶
Bokeh 0.8.2
(Mar 2015) is a quick release focused on some refactoring,
bug fixes and improved documentation.
- Collect implicit interfaces into a single bokeh.io module
- Fixed notebook css issues
- Update notebooks to be compatible with IPython 3.0
- Easy bokeh applet generation using the simpleapp module
- Develop installation enhancements
- A new User guide intro and some other docs styling enhancements
- Some other minor examples bugfixes
0.8.1¶
Bokeh 0.8.1
(Feb 2015) is focused on stability, bug fixes and improved
documentation.
- Fixed HoverTool
- Fixed Abstract rendering implementation and docs
- Fixed chart gallery and docs
- Removed leftovers from the old plotting API implementation
- Some other minor docs fixes
0.8.0¶
Bokeh 0.8.0
(Feb 2015) includes many major new features:
- New and updated language bindings: R, JavaScript, Julia, Scala, and Lua now available
- Better bokeh-server experience:
- live gallery for server apps and examples!
- new “publish” mode Bokeh plots and apps
- docs and advice for real-world deployments
- Simpler and more easily extensible charts architecture, with new Horizon chart
- Dramatic build and documentation improvements:
- 100% complete reference guide
- full docs and BokehJS version deployed for every “dev” build and RC
- sphinx extensions for easy inline plots
- Shaded grid bands, configurable hover tool, and pan/zoom for categorical plots
- Improved and more robust crossfilter
- AjaxDataSource for clients to stream data without a Bokeh server
In addition, many bugfixes and small features, both old and new — over 100 issues — were closed for this release! Additionally several new contributors helped out in a big way. Special thanks to Sarah Bird, Mathieu Drapeau, Samantha Hughes, and Nick Roth.
0.7.1¶
Bokeh 0.7.1
(Jan 2015) focused on stability, bug fixes, improved
documentation and better examples.
- Several bokeh.charts bug fixes and enhancements, such as configurable tools
- Docs improvements, in particular, documenting json for bokeh.models
- Mpl compatibility improved, now returning the plot object
- A lot of encoding fixes, including fixes in some of our sample data
- Faster runs in TravisCI using the new docker-based containerized infrastructure
- New and improved examples, such as the Interactive Image Processing with Numba and Bokeh notebook
0.7.0¶
Bokeh 0.7.0
(Dec 2014) focused on new features and capability, particularly
arounduser interface and experience:
- IPython widgets and animations without a Bokeh server
- Touch UI working for tools on mobile devices
- Vastly improved linked data table
- More new (and improving) bokeh.charts (high level charting interface)
- Color mappers on the python side
- Improved toolbar
- Many new tools: lasso, poly, and point selection, crosshair inspector
Migration Guide¶
Additionally, note that the “implicit” plotting interface of plotting.py has been deprecated, and will be removed in Bokeh 0.8. In a nutshell, code such as:
figure()
hold()
line()
circle()
show()
Should be replaced with the more explicit code:
p = figure()
p.line()
p.circle()
show(p)
0.6.1¶
Bokeh 0.6.1
(Sep 2014) is a minor release.
- Toolbar enhancements
- bokeh-server fixes
- Improved documentation
- Button widgets
- Google map support in the Python side
- Code cleanup in the JS side and examples
- New examples
0.6.0¶
Bokeh 0.6.0
(Sep 2014) is an incremental update:
- Abstract Rendering recipes for large data sets: isocontour, heatmap, hdalpha
- Improved, configurable tool bar for plots
- Full Python 3 support for bokeh-server
- Much expanded User Guide
- Support for multiple axes
- Plot object graph query interface
- New charts in bokeh.charts: TimeSeries and Categorical HeatMap
- Hit-testing for patch glyphs
0.5.2¶
Bokeh 0.5.2
(Aug 2014) is an incremental update:
- New Layout system
- Improved automate testing infrastructure
- AR testing, server-side downsample fixes and ISO Contours
- New “dashboard-like” example: examples/app/applet/stock_example.py
0.5.1¶
Bokeh 0.5.1
(Jul 2014) is an incremental update:
- Hover activated by default
- Boxplot in bokeh.charts
- Better messages when you forgot to start the bokeh-server
- Fixed some packaging bugs
- Fixed NBviewer rendering
- Fixed some Unicodeencodeerror
0.5.0¶
Bokeh 0.5.0
(Jul 2014) adds the following features:
- Widgets
- Initial AR integration
- bokeh.charts (scatter, bar, histogram)
- improved embedding API
- minor ticks, plot frame, and log axes
0.4.4¶
Bokeh 0.4.4
(Apr 2014) is a minor release:
- Improved MPL interface, subplots, styling plus more examples
- TravisCI testing integration
- Tool enhancements, constrained pan/zoom, more hover glyphs
- Server remote data and downsampling examples
- Initial work for Bokeh “app” concept
0.4.2¶
Bokeh 0.4.2
(Mar 2014) is a minor release:
- Improved MPL interface, PolyCollection plus examples
- Extensive tutorial with exercises and solutions
- %bokeh magic for IPython notebook
- InMemory storage backend for bokeh-server (usable without Redis)
0.4.1¶
Bokeh 0.4.1
(Feb 2014) is a minor release:
- Improved MPL interface, LineCollection plus examples
- Scala interface
- Categorical axes and ranges
- Hover tool
- Improved pan/zoom tool interactions
0.4.0¶
Bokeh 0.4.4
(Feb 2014) is an incremental release with several important
new pieces of work:
- Preliminary work on Matplotlib support: convert MPL figures to Bokeh plots
- Tool improvements:
- “always on” pan tool and wheel zoom tool
- box zoom tool
- viewport reset tool
- Enhanced datetime axis, with better performance and nicer ticking
- Expanded testing, including TravisCI integrations and static image output using PhantomJS
- RGBA and color mapped image plots now available from Python
- Python 3 support!
- Vastly improved documentation for glyphs, with inline examples and JSFiddle integration
0.3.0¶
Bokeh 0.3.0
(Nov 2013) is a minor release:
- refactor bokehjs to use grunt for coffee build
- merge bokeh and bokehjs repositories
- various bug fixes
- additional and improved examples and docs
0.2.0¶
Bokeh 0.2.0
(Oct 2013) is a minor release:
- bokeh.plotting interface for schematized plotting, that wraps the low-level interface
- Performance improvements in BokehJS
- Fixed rendering glitches for HiDPI/Retina displays
- Greatly improved Python interface architecture
- Many more examples, much improved docs
0.1.0¶
Bokeh 0.1.0
(Apr 2013) is the initial public release of the Bokeh project:
- Basic low-level interface, consisting of wrapper objects for BokehJS rendering primitives, glyphs, tools
- Beginnings of the ggplot-style interface that wraps the low-level interface
- Simple line/scatter/bar/image plots with a Matplotlib-like interface
- Static HTML output
- Live server output
- IPython notebook embedding capability
- Table widget
- Pan, Zoom, Select, Resize tools
- initial Python implementation of Abstract Rendering


--- layout: post title: Wrapping Up 2011, Into 2012 on the EMC Support Community date: '2012-01-05T08:51:04-08:00' tags: tumblr_url: http://alexhwilliams.tumblr.com/post/15349501235/wrapping-up-2011-into-2012-on-the-emc-support ---
http://bit.ly/y0s2RL


SPOT THE ROTTEN
Be the first to send us a rotten.com clipping from a mainstream publication,
even back issues, and receive a free rotten.com tshirt!
|
|
Taliban Thwarted #6
|
|
CLICK TO ENLARGE
London Telegraph
November 2001
|
"Jason Scott, of the internet newsletter rotten.com, said he had
searched the internet for the phrases used in the documents, which
were in English, and found they were the same as a well known
1979 spoof article."
(Submitted by Soylent)
|
|
|
Taliban Thwarted #5
|
|
CLICK TO ENLARGE
Wall Street Journal Online
November 2001
|
"Osama bin Laden, head of al Qaeda, is a very clever fellow, but he's
always struck us as somewhat unworldly. You know what we mean--the sort
of guy who has a lot of book learning but is short on street smarts.
Well, it appears he has fallen for an obvious hoax. A Web site called
Rotten.com notes that a Times of London report from last week, about
bin Laden's purported nuclear plans, includes the following description
of a document the Times reporter found in a Kabul house apparently
used by al Qaeda..."
(Submitted by Soylent)
|
|
|
Taliban Thwarted #4
|
|
CLICK TO ENLARGE
New York Daily News
November 2001
|
"The sharp-eyed publisher of the rotten.com Web site first
noted the correlation between language in the Kabul documents --
which were shown in BBC footage and quoted in the London Times --
and the parody."
(Submitted by Soylent)
|
|
|
Taliban Thwarted #3
|
|
CLICK TO ENLARGE
Alternet
November 2001
|
"In fact, after assembling a collection of over 100,000 text
files, Rotten.com contributor Jason Scott has concluded that the
scope of the misunderstanding may stretch even further.
'If somebody thought they saw nuclear bomb plans on the Internet,
they probably saw this one.'"
(Submitted by David Cassel)
|
|
|
Taliban Thwarted #2
|
|
CLICK TO ENLARGE
New York Times
November 2001
|
"But according to Jason Scott, a reporter for a Web newsletter,
rotten.com, the document was not quite so chilling a display of
nuclear knowledge as The Times might have believed. Mr. Scott
searched the Web for phrases visible in a film of The Times's
document broadcast by the BBC and discovered its source, a spoof
published in 1979 in a takeoff on scientific journals known as
The Journal of Irreproducible Results."
(Submitted by Soylent)
|
|
|
Taliban Thwarted #1
|
|
CLICK TO ENLARGE
Village Voice
November 2001
|
"Now the online Daily Rotten says at least part of those documents
photographed by the Times are taken verbatim from a "semi-famous"
pseudo-document that has been circulating on the Internet for years.
It's a reprint of a scientific parody called "How to Build an
Atom Bomb," from the geek-humor newsletter Annals of Improbable
Research, originally known as the Journal of Irreproducible Results."
(Submitted by Soylent)
|
|
|
Rating Rotten News
|
|
CLICK TO ENLARGE
Wired
October 2001
|
"The difficulty in determining what are legitimate Internet news sites and
which online publishers do not have sufficiently high journalistic standards
to qualify will doom ICRA, civil libertarians predict. After all, even
rotten.com now features a news section, though the headlines do tend to
run along the lines of Postal worker jailed for flinging feces.
(Submitted by Soylent)
|
|
|
Germany Censors Rotten
|
|
CLICK TO ENLARGE
Heise (German News)
October 2001
|
Legal authorities in in Dusseldorf have required that all ISP's the German state
of Nordrhein-Westfalen block access to rotten.com under a controversial new censorship law.
Text in German.
(Submitted by Frank Rieger)
|
|
|
Disinformation?
|
|
CLICK TO ENLARGE
Tiscali (Czech News)
October 2001
|
We aren't even sure what this article is about, though it seems
to ask, "Is the objective of the Internet to spread disinformation?"
Czech isn't widely spoken on the Rotten Staff, can someone from
Czechia send a translation? [We don't know if this is bad or good,
but being mentioned alongside Debka, an extremely scary and badass
Israeli intelligence website, can't all be bad.]
(Submitted by Soylent)
|
|
|
Rotten may cost teacher her job
|
|
CLICK TO ENLARGE
Northwest FL Daily News
October 2001
|
"In looking at district printouts of computer activity, Brooks said
his office could only pinpoint one site that might be deemed inappropriate:
www.rotten.com. That Web site includes sexual content and graphic
violent images including autopsy photographs, but Mulhearn's attorney
points out that records show that site had been viewed for only seconds."
(Submitted by TTF)
|
|
|
Is it really called "For Him Magazine"
|
|
CLICK TO ENLARGE
FHM
August 2001
|
From FHM, a men's magazine.
(Submitted from New Zealand)
|
|
|
So Very Forbidden
|
|
CLICK TO ENLARGE
Forbidden Internet
Summer 2001
|
This is from an irregularly published slick called
Forbidden Internet, and it is rather strange that
rotten was not in their first issue, as it is by far
the most popular and most unique of any "forbidden"
site.
(Submitted by Lady C)
|
|
|
Rotten Shall Return
|
|
CLICK TO ENLARGE
Philippine Daily Inquirer
June 2001
|
A glowing review of rotten.com:
|
They show pictures of almost everything--everything sick and groan inducing,
that is. In the few minutes we surfed, we saw photos of a person run over by
a train, a dead bunny, shark attack victims, suicide victims, a man who
burned to death on an electric post and numerous other corpses. There were
also pictures of people eating babies.
I am not normally weak-hearted. But I have to draw the line somewhere. And
Rotten.com definitely crossed that line.
|
[June 5, 2001, page 2]
(Submitted by Soylent)
|
|
|
Monster lawsuit
|
|
Boston Globe
May 2001
|
Two female employees filed a lawsuit against monster.com, an
online jobs marketing site:
|
Sarno said Miner and other co-workers routinely viewed Web sites
showing naked women and posted graphic images as screen savers on
their computers, creating a hostile environment in the
office of 25 people.
They also say Miner frequently visited a Web site that displays
photographs of accident and murder victims - a site that touts
itself as pure evil since 1996 and an archive of disturbing
illustration.
"It was just disgusting," said Sarno, an MBA who quit a management
job at another company to go to work for a dot-com because she thought
it held greater opportunities. "It was painful to even get up
in the morning and go in there."
Sarno and Kitsis both said they complained repeatedly to Miner about
offensive and unprofessional conduct and were fired without any notice.
|
[May 24, 2001, Thursday, THIRD EDITION]
(Submitted by Soylent)
|
|
|
Public Enema #1
|
|
CLICK TO ENLARGE
Salon
March 2001
|
"If the Net is a library of the collective consciousness -- a vast
collection of humans' fantasies, fears and obsessions -- then Rotten.com
represents the darkest, deepest, most sordid side of human nature. There
is absolutely nothing nice about Rotten.com; this site is simply foul."
(The front page of Salon.com)
(Submitted by Salon)
|
|
|
California Uber Alles
|
|
CLICK TO ENLARGE
Sacramento News & Review
March 2001
|
"I scrolled down to 'motorcycle', clicked, and
was rewarded with a terrifying image: an emergency room
photograph of a man who had split his face wide open --
it looked like an exploded cigar, except with bloody
pulp and smahshed teeth instead of tobacco."
Another journalist forever tainted.
(Submitted by Micahel Yeluashvili)
|
|
|
Deutsche Hustler
|
|
CLICK TO ENLARGE
Deutsche Hustler
März 2001
|
The German variant of Hustler is kind enough to
have us on page 22. Incidentally this Hustler has quite
a different feel than the American one, although sometimes
the umlauts get in the way of the porn.
(Submitted by Hustler)
|
|
|
Beat Me Harder Baby
|
|
CLICK TO ENLARGE
Maxim Magazine
December 2000
|
Maxim Magazine, "For Men", always fun.
(Submitted by Stile)
|
|
|
Big Down Under
|
|
Sydney Morning Herald
December 2000
|
According to Nielsen/Netratings surveys, in the Australian
18 to 34 age bracket, rotten.com is the 8th most popular website
down under. Yes, eighth. This is simply astonishing.
Reported in the Sydney Morning Herald, 12 December 2000.
(Submitted by Soylent)
|
|
|
Cocks and Dicks and Things
|
|
CLICK TO ENLARGE
Instinct Magazine
December 2000
|
Instinct Magazine, a publication catering to gay
homosexuals, has been described to us as "trashy but nice",
featured us in their latest issue. (This is one of those
things we wouldn't notice unless someone notifies us,
so please keep us posted.)
(Submitted by Number-6)
|
|
|
Burnt Crispy Person
|
|
CLICK TO ENLARGE
KPRC (Click2Houston)
November 2000
|
Again, we aren't mentioned directly because KPRC is too chickenshit to
give our URL, but this is about rotten.com's "Burnt Crispy Person" exhibit.
This was on Houston television as well.
(Submitted by Ron Jenson)
|
|
|
We Put Dick on the Internet
|
|
CLICK TO ENLARGE
Magyar Hirlap
November 2000
|
Two of our sites, phallic.org and celebritymorgue.com, were
featured in this article on Internet extremism appearing in
Magyar Hirlap, one of Hungary's main national newspapers.
Text is in Hungarian, which is nearly impossible to understand.
(Submitted by Soylent)
|
|
|
Hustler v. Playboy
|
|
CLICK TO ENLARGE
Hustler Magazine
October 2000
|
Hustler don't mention us directly, but instead their competitor
Playboy (see below), who apparently didn't realize that this image has
been floating around for fifteen years. God bless America and God bless
Larry Flynt, heroic fighter for our rights and liberty.
|
|
|
Best Inspirational Website
|
|
CLICK TO ENLARGE
New York Press
September 2000
|
We were awarded "Best Inspirational Website, Manhattan 2000"
by New York Press. It even came with a nice plastic
award suitable for framing, as if it were a Chamber of
Commerce award. Nice! And dammit, we are the best.
(Submitted by publisher)
|
|
|
Viva Fidel! Viva Playboy!
|
|
CLICK TO ENLARGE
Playboy Magazine
April 2000
|
We made page 22 of Playboy.
|
|
|
Hackers Deface DARE Site
|
|
New Hampshire Daily News
March 2000
During a time when Microsoft, Yahoo, and eBay were suffering distributed
denial of service attacks, suspicion came upon a hacker known as Coolio. It's
not likely he was responsible for the attacks, but he did deface
the "DARE" antidrug site. And it is that defacement for which the "feds" charged
him. While this was widely reported in the media, what was not reported was
that he defaced it with images obtained from rotten.com, and linked the DARE
site to rotten. From the New Hampshire Sunday News, 12 March 2000:
On Nov. 14 and again on Nov. 17, www.DARE.com, which promotes anti-drug
and anti-violence messages to young people, was transformed by Moran with
messages of his own. "Reagan lost the war on drugs -- end it now" it
reads under a picture of a fat rat sitting on its backside. The photo
captions says "This rat is HIGH on MARIJUANA." Links also are provided to
pro-drug Web sites, including www.rotten.com
Why wasn't this widely reported? It's our conjecture that mainstream media does
not really like to link to, or publicize rotten.com. In fact this is the only
instance of the media mentioning our site in relation to this incident, even though
the charges against Coolio were front page news.
(Lexis Nexis Database)
|
|
|
Bad Boys of the Internet
|
|
CLICK TO ENLARGE
San Francisco Bay Guardian
March 2000
|
The San Francisco Bay Guardian, weekly rag for the city
by the bay, has these nice things to say about our site. The day
this came out all my friends in SF called to ask "Did you realize..?"
(Submitted by The Deth Vegetable)
|
|
|
CNN
|
|
CNN Headline News
February 2000
|
In a segment on "Death Culture", our Celebrity Morgue site is
featured on CNN's Headline News channel, February 26. Oddly we don't find
out about this until a year later.
(Lexis Nexis Database)
|
|
|
Old Sparky
|
|
Palm Beach Post
January 2000
Inmate Allen Lee Davis was executed in Florida's "Old Sparky"
electric chair, creating a bloody spectacle that horrified
witnesses. Because of the publicity surrounding the "cruel and
unusual" execution, a judge ordered the photos released.
From the front page of the Palm Beach Post, 3 January 2000:
On July 8, 1999, blood spurted from the nose and mouth of Allen
Lee "Tiny" Davis during his execution and ghastly pictures of his
corpse, still seated and strapped into the chair, have found
their way onto the Internet, where they can be seen at a site
appropriately named awful.rotten.com/chair/davis.html.
Since that article appeared, "Old Sparky" was sold to the
Ripley Museum for $25,000.
(Lexis Nexis Database)
|
|
|
Arizona Republic
|
|
Arizona Republic
January 2000
|
http://www.rotten.com/today/
From their "Smart Living" section, page E3:
There's not much to this site - just a daily listing of oddball events
occurring on the date in question. As promised, the chosen happenings are not
the smiley kind, although many are good for a laugh. (Example: "Jan. 12,
1971: The first episode of All in the Family made television history by
broadcasting the sound of a toilet flushing.")
(They review our "Rotten History" site only)
(Lexis Nexis Database)
|
|
|
UK Blokes Chip In
|
|
.net Magazine
November 1999
|
Three of the Rotten family of websites were featured in the November
1999 issue of .net Magazine, which is quite a decent UK publication.
(Page 54 and 56). The other two featured were Celebrity Morgue and Phallic.org.
(Submitted by Lady Carolin)
|
|
|
Belgian Elections
|
|
Belgian National Television
May 1999
|
The Justice Minister of Belgium, Tony van Parys, denounced both Rotten
and our educational Celebrity Morgue site on VTM (commercial Belgian
television) as well as their public station. Screen shots were shown, and Parys
stated his intention to cause the Ministry to investigate whether or not they
could have the site shut down, or whether Belgian internet providers could be
forced to block access to Rotten. With the Belgian elections less than a month
away, this is definitely odd timing.
(Submitted by numerous Belgians)
|
|
|
Who Gave Donna Rice Work
|
|
House Judiciary Committee
May 1999
In testimony for the House Judiciary Committee, Donna Rice
(now Donna Rice Hughes) was giving a little slide show:
This next slide is rotten.com.  Now let me just say all the images I am showing you are free.
OK, they are free pictures. I clicked on the third click down and you
see mayhem 3, I clicked there and here it says they offer a series
of dismemberments and brutalities. When I clicked there, I got to the
next site. This is just one of over a dozen pictures that were offered
under mayhem. This slide depicts one of three corpses with severe
head wounds. And I cannot even make out a head here.
 Does this
make her the moral arbiter for the rest of us? Sure!
(Lexis Nexis Database)
|
|
|
Wire Service Reuters
|
|
CLICK TO ENLARGE
Reuters
September 1997
|
Reuters, reporting on the Diana photo. Story via Nando.
|
|
|
c|Net...
|
|
CLICK TO ENLARGE
c|Net
September 1997
|
c|Net, technical news source, reporting on the Diana photo.
|
|
|
Was it really a chicken?
|
|
Raleigh News and Observer
September 1997
What flew in Raleigh, September 9, 1997:
[Offline, the] angry backlash against the media [..] wouldn't hit
newsprint for a day or so, and a variety of obnoxious sites. Rotten.com
- which proudly posts photos of men copulating with chickens and
bloody shots of O.J. Simpson's murdered wife - dedicated a Diana link:
There was Di at a nude beach, Di showing a lot of thigh in a very
short dress, Di with a wedgie - and promises of more. "When at such
time we receive accident photos, they will appear at this spot
immediately," the site's proprietors wrote.
 As for the
chicken, we have plans for it.
(Lexis Nexis Database)
|
|
|
Fine German Engineering
|
|
CLICK TO ENLARGE
Verlag Heise
September 1997
|
Verlag Heise, reporting on the Diana photo. (Text in German)
|
|
|
Frogs
|
|
CLICK TO ENLARGE
Agence France-Presse
September 1997
|
Agence France-Presse, the French news agency, reporting that we
have a photo of Princess Diana after her accident. This is prior to our
revelaing the photo to be another accident.
|
|
|
El Mundo
|
|
CLICK TO ENLARGE
El Mundo
September 1997
|
El Mundo is the largest newspaper in Spain, here
reporting that the Diana photo is fake.
(Text is in Spanish)
|
|
|
If I Can Make It There...
|
|
CLICK TO ENLARGE
The New York Times
September 1997
|
When the Princess Diana stunt we pulled was still raging,
we granted an interview with a New York Times reporter.
Surprising to us, the article was favorable, and all was well.
(Submitted by publisher)
|
|
|
The King Of All Media!
|
|
Howard Stern Show
April 1997
|
On national radio, morning host and troublemaker Howard Stern
surfed rotten.com live, something our little site was totally unprepared
for. Traffic jumped in one day from 4,500 people a day to 50,000.  Three years later now, we get about
200,000 people a day.

|
|


Download Canon Pixma Mp250 Driver Free Printer Driver Download
Canon Pixma Mp240 Driver Download Free Printer Driver Download
インクジェットプリンター ダウンロードしたプリンタードライバー Mpドライバー のインストール方法 Windows
Download Canon Pixma Mp210 Driver All In One Printer
Canon Pixma Ts3322 Driver Free Download Ij Start Canon
Download Canon Drivers Free Canon Driver Scan Drivers Com
Canon Pixma Mp240 Driver Canon Driver Download
Canon Pixma Mp253 Driver Download
Canon Pixma Mp230 Driver Download And Wireless Setup Canon Drivers
Download Canon Mp Navigator Ex 4 0 Mp Navigator Ex
インクジェットプリンター ドライバーのダウンロード方法
Download Canon Pixma Mx320 Driver Free Printer Driver Download
Canon Pixma Mp230 Driver Download Windows Mac Canon Drivers
Download Canon Mp287 Driver Free Download
Canon Pixma G1220 Driver Download Ij Start Canon
Download Canon Mp Navigator Ex Ver 5 0 2 For Windows
Canon Pixma Mp237 Driver Download Windows Mac Os Linux
Update Canon Pixma Mp287 Driver Software Download
Canon Pixma Ts3340 Printer Driver Download Ij Start Canon
Download Install And Update Canon Pixma Mp280 Series Mp Driver
Canon Pixma Mp280 Driver 1 03 Download For Pc Free
Download Driver Canon Pixma Mp270 Printer Scanner Driver Download
Canon Pixma Mp600 Driver Download Support Software Pixma Mp Series
Canon Pixma Ts200 Driver Download Ij Start Canon
Canon Pixma Mx459 Driver Download Canon Driver Supports
Canon Pixma G3100 Driver Download Mac Windows Linux Canon Drivers
Canon Pixma G3415 Driver Software Download Mp Driver Canon
Canon Pixma Mp540 Driver Download Canon Driver
Canon Pixma Mg2100 Driver Printer Download Mg Series
Download Driver Canon Pixma Mp540 Windows Printer Driver Printer Drivers
Canon Pixma Mp245 Printer Driver For Windows Free Download
Canon Pixma Mp640 Driver Download Mp Series


RT @jessabean: "Ruby Monsters Go Bump in the Night" by @1337807 // #hashtag #sketchnotes @keeprubyweird http://t.co/6qrJx59PVK
10/24/2014, 2:27:32 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @jessabean: "Ruby Monsters Go Bump in the Night" by @1337807 // #hashtag #sketchnotes @keeprubyweird http://t.co/6qrJx59PVK
10/24/2014, 2:27:32 PM
Favs: 0
Retweets: 0
link


Pet Manager Rood:
You'll really do it? I knew today was a good day. I'll tell you about the Lienrik.
The Lienrik dwells near the Rest Area of the Animals. There's the Lienrik and the Lienrik Lad. One has a range attack and one spews poison up close.
Both have the Lienrik Egg. That's where the fun begins: The egg determines gender, with the females being the most valuable.
I can't pay money for one, but I'll definitely offer a reward. Bring back as many as you can.
I might even let you keep one~


A Simple Plan
A Review:
By Jeremiah Rickert
Starring: Bill Paxton, Billy Bob Thornton, Bridget Fonda Directed by Sam Raimi
Synopsis: Three men discover 4.4 million dollars in a downed plane that has been hidden in a wildlife preserve. They decide to stick to a simple plan: hold onto the money until the springtime, when the plane is sure to be discovered, and tell no one about it, not even wives. Once they can be sure that no one is looking for the money they plan to split it three ways and leave town. They figure the money is most likely drug-money and therefore it's "not really stealin'." The three men are Hank Mitchell (Bill Paxton), a basically straight-up family man, his brother Jacob Mitchell (A totally immersed Billy Bob Thornton), who is unemployed and a bit slower than his brother Hank, and Jacob's drinking buddy Lou (Brent Briscoe), another beer-swilling good ol' boy. Little by little, their simple plan becomes more and more complicated until it starts consuming people one by one.
This film's biggest asset is the screenplay. Written by Scott B. Smith, adapted from his own novel, the film has nearly perfect pacing and as the tension surrounding the plan begins to wind up, the plan itself begins to unravel, slowly at first, and then in torrid gasps. All of the resolutions of the plan that the three men come up with: don't tell anyone, even wives, everyone has to agree to leave town, and so on, are violated one by one by one. The first thing that Hank does when he gets home is dump the money on the table and tell his wife (played with a very subdued cunning by Bridget Fonda) everything. She then gets involved, and suggests taking some of the money back to the plane to when it is found, they'd think that it fell out or something, for no one would leave behind $100,000 if someone had found the cash, would they? Her complication of the plan leads to the death of a farmer who happens to be in the area when they're planting the money on the plane. It's only downhill from there, as more and more people are killed for the sake of the plan. Sooner than they hoped, an FBI man comes to town with information on the plane, but there are doubts to whether he's really an FBI agent, or one of the people who lost the money.
Most of the performances are top-notch, especially that of Billy Bob Thornton as the slower brother Jacob. Jacob is almost a foil for Hank, the upstanding straight-arrow family man. He may be slow, but his motivations are the least greedy of the bunch. At one point in the movie, after so many have died and the money seems to be an imminent reward, Jacob asks Hank "I'm gonna be happy now, right?" Really all Jacob wants to do is to remodel their father's farm, but that means he's not going to leave town as was part of the plan. Jacob ends up being the most observant one of them all.
Sam Raimi had a lot to prove with this film in many ways. As he's most well known for his comedy/horror films and his hyper-kinetic camera work, this film was in a way a make it or break it for him as a mainstream filmmaker. For the most part, he avoids his camera-tricks and lets the characters carry the film. There are number of Hitchcock-ian references, from Psycho's crows, who are an omnipresent witness to the crimes that are concealed for the sake of the plan, and a Birds-esque scene where Hank is seemingly attacked by some startled birds in the fuselage of the downed plane. The cinematography has a definite Fargo-esque pedigree to it, but considering the locales of the film and of Raimi's long associations with the brothers Coen, that does not seem surprising. The film starts off with what appears to be a reference to "It's A Wonderful Live" when Hank walks through the town wishing everyone a happy new year. Just as the audience begins to think of him as George Bailey, he soon begins to look like Norman Bates.
The film is really a downward spiral of desperation, on the part of just about every one of the characters who have a relationship with the 4.4 million dollars. A lot of filmgoers will probably be put off by the rather un-hollywood ending, but hopefully it won't overshadow the wonderful performance by Billy Bob Thornton and the great screenplay by Scott B. Smith. It's perfectly paced and both Smith's script and Raimi's direction precisely control the tension of the film, winding it tighter and tighter as the plan begins to unravel.
Of the $4.00 I payed for the film, it was worth every penny, $4.00
copywright 1999 Jeremiah Rickert
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Did you know a Health Watch or HW means the highest concentration of pollution may approach the federal health standard?


Default style open dialog dialog is an element for a popup box in a web page, including a modal option which will make the rest of the page inert during use. This could be useful to block a user's interaction until they give you a response, or to confirm an action. Cancel Default style open dialog dialog is an element for a popup box in a web page, including a modal option which will make the rest of the page inert during use. This could be useful to block a user's interaction until they give you a response, or to confirm an action. Cancel Custom style open dialog Dialog × dialog is an element for a popup box in a web page, including a modal option which will make the rest of the page inert during use. This could be useful to block a user's interaction until they give you a response, or to confirm an action. Use animation open dialog Dialog × dialog is an element for a popup box in a web page, including a modal option which will make the rest of the page inert during use. This could be useful to block a user's interaction until they give you a response, or to confirm an action.