From 00fb775d2966bfef3cc4f0c38642fdc068fb2c07 Mon Sep 17 00:00:00 2001 From: stevedodson Date: Fri, 10 Jan 2020 14:38:56 +0000 Subject: [PATCH] Feature/versioning (#109) * Minor fixes for readthedocs compatibility. * Adding doc templates * Setting first version to 7.5 * Resolving pypi issues + minor docs --- README.md | 74 +++++++++++++++---- docs/_templates/api_redirect.html | 10 --- docs/_templates/autosummary/accessor.rst | 6 -- .../autosummary/accessor_attribute.rst | 6 -- .../autosummary/accessor_callable.rst | 6 -- .../autosummary/accessor_method.rst | 6 -- docs/_templates/autosummary/class.rst | 33 --------- .../autosummary/class_without_autosummary.rst | 6 -- docs/source/conf.py | 6 +- docs/source/examples/demo_notebook.ipynb | 20 ++--- .../examples/online_retail_analysis.ipynb | 23 +++--- eland/__init__.py | 1 + eland/{__version__.py => _version.py} | 2 +- eland/groupby.py | 36 --------- setup.py | 2 +- 15 files changed, 88 insertions(+), 149 deletions(-) delete mode 100644 docs/_templates/api_redirect.html delete mode 100644 docs/_templates/autosummary/accessor.rst delete mode 100644 docs/_templates/autosummary/accessor_attribute.rst delete mode 100644 docs/_templates/autosummary/accessor_callable.rst delete mode 100644 docs/_templates/autosummary/accessor_method.rst delete mode 100644 docs/_templates/autosummary/class.rst delete mode 100644 docs/_templates/autosummary/class_without_autosummary.rst rename eland/{__version__.py => _version.py} (97%) delete mode 100644 eland/groupby.py diff --git a/README.md b/README.md index fb39857..1f8e557 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,41 @@ - [![Build Status](https://clients-ci.elastic.co/buildStatus/icon?job=elastic%2Beland%2Bmaster)](https://clients-ci.elastic.co/job/elastic+eland+master/) - _Note, this project is still very much a work in progress and in an alpha state; input and contributions welcome!_ +# eland: pandas-like Python client for analysis of Elasticsearch data + + + + + + + + + + + + + + + + + +
Latest Release + + latest release + +
Package Status + + status + +
License + + license + +
Build Status + + Build Status + +
+ # What is it? eland is a Elasticsearch client Python package to analyse, explore and manipulate data that resides in Elasticsearch. @@ -39,20 +73,16 @@ max 400140.000000 246.000000 5.000000 See [docs](https://eland.readthedocs.io/en/latest) and [demo_notebook.ipynb](https://eland.readthedocs.io/en/latest/examples/demo_notebook.html) for more examples. -## Connecting to Elasticsearch Cloud +## Where to get it +The source code is currently hosted on GitHub at: +https://github.com/elastic/eland +Binary installers for the latest released version are available at the [Python +package index](https://pypi.org/project/eland). + +```sh +pip install eland ``` ->>> import eland as ed ->>> from elasticsearch import Elasticsearch - ->>> es = Elasticsearch(cloud_id="", http_auth=('','')) - ->>> es.info() -{'name': 'instance-0000000000', 'cluster_name': 'bf900cfce5684a81bca0be0cce5913bc', 'cluster_uuid': 'xLPvrV3jQNeadA7oM4l1jA', 'version': {'number': '7.4.2', 'build_flavor': 'default', 'build_type': 'tar', 'build_hash': '2f90bbf7b93631e52bafb59b3b049cb44ec25e96', 'build_date': '2019-10-28T20:40:44.881551Z', 'build_snapshot': False, 'lucene_version': '8.2.0', 'minimum_wire_compatibility_version': '6.8.0', 'minimum_index_compatibility_version': '6.0.0-beta1'}, 'tagline': 'You Know, for Search'} - ->>> df = ed.read_es(es, 'reviews') -``` - ## Development Setup @@ -86,7 +116,7 @@ eland depends on pandas version 0.25.3. #### Elasticsearch Versions -eland is versioned like the Elastic stack. E.g. eland 7.5 is compatible with Elasticsearch 7.x up to 7.5 +eland is versioned like the Elastic stack (eland 7.5.1 is compatible with Elasticsearch 7.x up to 7.5.1) A major version of the client is compatible with the same major version of Elasticsearch. @@ -94,6 +124,20 @@ No compatibility assurances are given between different major versions of the cl Major differences likely exist between major versions of Elasticsearch, particularly around request and response object formats, but also around API urls and behaviour. +## Connecting to Elasticsearch Cloud + +``` +>>> import eland as ed +>>> from elasticsearch import Elasticsearch + +>>> es = Elasticsearch(cloud_id="", http_auth=('','')) + +>>> es.info() +{'name': 'instance-0000000000', 'cluster_name': 'bf900cfce5684a81bca0be0cce5913bc', 'cluster_uuid': 'xLPvrV3jQNeadA7oM4l1jA', 'version': {'number': '7.4.2', 'build_flavor': 'default', 'build_type': 'tar', 'build_hash': '2f90bbf7b93631e52bafb59b3b049cb44ec25e96', 'build_date': '2019-10-28T20:40:44.881551Z', 'build_snapshot': False, 'lucene_version': '8.2.0', 'minimum_wire_compatibility_version': '6.8.0', 'minimum_index_compatibility_version': '6.0.0-beta1'}, 'tagline': 'You Know, for Search'} + +>>> df = ed.read_es(es, 'reviews') +``` + ## Why eland? Naming is difficult, but as we had to call it something: diff --git a/docs/_templates/api_redirect.html b/docs/_templates/api_redirect.html deleted file mode 100644 index c04a8b5..0000000 --- a/docs/_templates/api_redirect.html +++ /dev/null @@ -1,10 +0,0 @@ -{% set redirect = redirects[pagename.split("/")[-1]] %} - - - - This API page has moved - - -

This API page has moved here.

- - diff --git a/docs/_templates/autosummary/accessor.rst b/docs/_templates/autosummary/accessor.rst deleted file mode 100644 index 4ba745c..0000000 --- a/docs/_templates/autosummary/accessor.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ fullname }} -{{ underline }} - -.. currentmodule:: {{ module.split('.')[0] }} - -.. autoaccessor:: {{ (module.split('.')[1:] + [objname]) | join('.') }} diff --git a/docs/_templates/autosummary/accessor_attribute.rst b/docs/_templates/autosummary/accessor_attribute.rst deleted file mode 100644 index b5ad65d..0000000 --- a/docs/_templates/autosummary/accessor_attribute.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ fullname }} -{{ underline }} - -.. currentmodule:: {{ module.split('.')[0] }} - -.. autoaccessorattribute:: {{ (module.split('.')[1:] + [objname]) | join('.') }} diff --git a/docs/_templates/autosummary/accessor_callable.rst b/docs/_templates/autosummary/accessor_callable.rst deleted file mode 100644 index 7a33018..0000000 --- a/docs/_templates/autosummary/accessor_callable.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ fullname }} -{{ underline }} - -.. currentmodule:: {{ module.split('.')[0] }} - -.. autoaccessorcallable:: {{ (module.split('.')[1:] + [objname]) | join('.') }}.__call__ diff --git a/docs/_templates/autosummary/accessor_method.rst b/docs/_templates/autosummary/accessor_method.rst deleted file mode 100644 index aefbba6..0000000 --- a/docs/_templates/autosummary/accessor_method.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ fullname }} -{{ underline }} - -.. currentmodule:: {{ module.split('.')[0] }} - -.. autoaccessormethod:: {{ (module.split('.')[1:] + [objname]) | join('.') }} diff --git a/docs/_templates/autosummary/class.rst b/docs/_templates/autosummary/class.rst deleted file mode 100644 index a9c9bd2..0000000 --- a/docs/_templates/autosummary/class.rst +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "!autosummary/class.rst" %} - -{% block methods %} -{% if methods %} - -.. - HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages. - .. autosummary:: - :toctree: - {% for item in all_methods %} - {%- if not item.startswith('_') or item in ['__call__'] %} - {{ name }}.{{ item }} - {%- endif -%} - {%- endfor %} - -{% endif %} -{% endblock %} - -{% block attributes %} -{% if attributes %} - -.. - HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages. - .. autosummary:: - :toctree: - {% for item in all_attributes %} - {%- if not item.startswith('_') %} - {{ name }}.{{ item }} - {%- endif -%} - {%- endfor %} - -{% endif %} -{% endblock %} diff --git a/docs/_templates/autosummary/class_without_autosummary.rst b/docs/_templates/autosummary/class_without_autosummary.rst deleted file mode 100644 index 6676c67..0000000 --- a/docs/_templates/autosummary/class_without_autosummary.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ fullname }} -{{ underline }} - -.. currentmodule:: {{ module }} - -.. autoclass:: {{ objname }} diff --git a/docs/source/conf.py b/docs/source/conf.py index 78c7775..c31511a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -41,7 +41,11 @@ project = 'eland' copyright = '2019, Elasticsearch B.V.' # The full version, including alpha/beta/rc tags -release = '0.1' +import eland + +version = str(eland._version.__version__) + +release = version # -- General configuration --------------------------------------------------- diff --git a/docs/source/examples/demo_notebook.ipynb b/docs/source/examples/demo_notebook.ipynb index 33b2d14..a396ade 100644 --- a/docs/source/examples/demo_notebook.ipynb +++ b/docs/source/examples/demo_notebook.ipynb @@ -753,7 +753,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -2704,15 +2704,15 @@ " \n", " \n", " 25%\n", - " 410.012798\n", + " 410.008918\n", " 2470.545974\n", " ...\n", - " 252.821296\n", + " 251.942965\n", " 1.000000\n", " \n", " \n", " 50%\n", - " 640.387285\n", + " 640.362667\n", " 7612.072403\n", " ...\n", " 503.148975\n", @@ -2720,11 +2720,11 @@ " \n", " \n", " 75%\n", - " 841.775043\n", + " 842.006180\n", " 9735.660463\n", " ...\n", - " 720.534532\n", - " 4.000000\n", + " 720.569838\n", + " 4.243151\n", " \n", " \n", " max\n", @@ -2745,9 +2745,9 @@ "mean 628.253689 7092.142457 ... 511.127842 2.835975\n", "std 266.386661 4578.263193 ... 334.741135 1.939365\n", "min 100.020531 0.000000 ... 0.000000 0.000000\n", - "25% 410.012798 2470.545974 ... 252.821296 1.000000\n", - "50% 640.387285 7612.072403 ... 503.148975 3.000000\n", - "75% 841.775043 9735.660463 ... 720.534532 4.000000\n", + "25% 410.008918 2470.545974 ... 251.942965 1.000000\n", + "50% 640.362667 7612.072403 ... 503.148975 3.000000\n", + "75% 842.006180 9735.660463 ... 720.569838 4.243151\n", "max 1199.729004 19881.482422 ... 1902.901978 6.000000\n", "\n", "[8 rows x 7 columns]" diff --git a/docs/source/examples/online_retail_analysis.ipynb b/docs/source/examples/online_retail_analysis.ipynb index dd214ae..cb65fa3 100644 --- a/docs/source/examples/online_retail_analysis.ipynb +++ b/docs/source/examples/online_retail_analysis.ipynb @@ -1031,23 +1031,23 @@ " \n", " \n", " 25%\n", - " 14220.719780\n", + " 14224.078193\n", " 1.000000\n", " 1.250000\n", - " 3756.500000\n", + " 3760.745049\n", " \n", " \n", " 50%\n", - " 15661.652348\n", + " 15659.417515\n", " 2.000000\n", " 2.510000\n", - " 7499.490385\n", + " 7499.488310\n", " \n", " \n", " 75%\n", - " 17215.439595\n", - " 6.566410\n", - " 4.212179\n", + " 17213.978376\n", + " 6.564935\n", + " 4.210000\n", " 11249.500000\n", " \n", " \n", @@ -1067,9 +1067,9 @@ "mean 15590.776680 7.464000 4.103233 7499.500000\n", "std 1764.025160 85.924387 20.104873 4330.127009\n", "min 12347.000000 -9360.000000 0.000000 0.000000\n", - "25% 14220.719780 1.000000 1.250445 3756.500000\n", - "50% 15661.652348 2.000000 2.510000 7499.490385\n", - "75% 17215.439595 6.566410 4.212179 11249.500000\n", + "25% 14224.078193 1.000000 1.250000 3760.745049\n", + "50% 15659.417515 2.000000 2.510000 7499.488310\n", + "75% 17213.978376 6.564935 4.210000 11249.500000\n", "max 18239.000000 2880.000000 950.990000 14999.000000" ] }, @@ -1124,8 +1124,7 @@ { "data": { "image/png": "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\n", - - "text/plain": [ + "text/plain": [ "
" ] }, diff --git a/eland/__init__.py b/eland/__init__.py index 5f1eb61..3a8a0c2 100644 --- a/eland/__init__.py +++ b/eland/__init__.py @@ -14,6 +14,7 @@ from __future__ import absolute_import +from eland._version import * from eland.common import * from eland.client import * from eland.filter import * diff --git a/eland/__version__.py b/eland/_version.py similarity index 97% rename from eland/__version__.py rename to eland/_version.py index 56f6d5b..7a8c8d6 100644 --- a/eland/__version__.py +++ b/eland/_version.py @@ -15,6 +15,6 @@ __title__ = 'eland' __description__ = 'Python elasticsearch client to analyse, explore and manipulate data that resides in elasticsearch.' __url__ = 'https://github.com/elastic/eland' -__version__ = '7.5' +__version__ = '7.5.1a1' __maintainer__ = 'Elasticsearch B.V.' __maintainer_email__ = 'steve.dodson@elastic.co' diff --git a/eland/groupby.py b/eland/groupby.py deleted file mode 100644 index 96d44c5..0000000 --- a/eland/groupby.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -GroupBy ---------- -Define the SeriesGroupBy, DataFrameGroupBy, and PanelGroupBy -classes that hold the groupby interfaces (and some implementations). - -These are user facing as the result of the ``df.groupby(...)`` operations, -which here returns a DataFrameGroupBy object. -""" - -# Copyright 2019 Elasticsearch BV -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from eland import NDFrame - - -class DataFrameGroupBy(NDFrame): - - def __init__(self, - df, - by): - super().__init__( - query_compiler=df._query_compiler.copy() - ) - self._query_compiler.groupby_agg(by) diff --git a/setup.py b/setup.py index 024cdb9..79e62a6 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ with open(path.join(here, 'README.md'), encoding='utf-8') as f: here = path.abspath(path.dirname(__file__)) about = {} -with open(path.join(here, 'eland', '__version__.py'), 'r', 'utf-8') as f: +with open(path.join(here, 'eland', '_version.py'), 'r', 'utf-8') as f: exec(f.read(), about) setup(