Coder Social home page Coder Social logo

oemof / oemof-tabular Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 5.0 5.11 MB

Load oemof energy systems from tabular data sources.

Home Page: https://oemof-tabular.readthedocs.io/

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%
datapackage energy modelling tabular-data

oemof-tabular's Introduction

Open Energy Modelling Framework (oemof)

The Open Energy Modelling Framework (oemof) is a Python toolbox for energy system modelling and optimisation.

The oemof project aims to be a loose organisational frame for tools in the wide field of (energy) system modelling. Every project is managed by their own developer team but we share some developer and design rules to make it easier to understand each other's tools. All project libraries are free software licenced under the MIT license.

All projects are in different stages of implementation, some even may not have a stable release, but all projects are open to be joined by interested people. We do not belong to a specific institution and everybody is free to join the developer teams and will have the same rights. There is no higher decision level.

oemof community

This repository is also used to organise everything for the oemof community.

  • Webconference dates
  • Real life meetings
  • Website and Mailinglist
  • General communication

You can find recent topics of discussion in the issues.

Real life meetings

The oemof community meets in person on a regular basis. Find the latest information on the next meeting(s) on this wiki page: https://github.com/oemof/oemof/wiki

oemof-tabular's People

Contributors

felixmau avatar fwitte avatar gnn avatar henhuy avatar jnnr avatar magering avatar monika-o avatar nailend avatar simnh avatar srhbrnds avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oemof-tabular's Issues

Error: Inferring metadata on Windows

When inferring metadata on Windows, we (or @juliusmeier, to be precise) could not successfully load the energy system.

How to replicate:
Open a terminal and change the current directory to src/oemof/tabular/examples/datapackages/dispatch. Then, run python scripts/infer.py. This should reproduce the existing data/datapackage.json.

Hypothesis:
This arises due to the path separator in "path" entries in datapackage.json. Path separators of datapackage.json inferred on Windows look like this, e.g.:

"path": "data/elements\electricity-transmission.csv"

Observations:

If we replace the \ with /, the datapackage can be run without a problem.

Questions
Have other observed this, too?

Can we fix this by adapting tabular.datapackage.building.infer_metadata() such that all paths are separated with "/"?

Datapackages are not valid

The datapackages are not valid. You will see validation errors when trying to validate.

From examples/datapackages run:

from datapackage import validate

datapackage.validate("dispatch/datapackage.json")

Returns:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "envs/oemof-B3/lib/python3.8/site-packages/datapackage/validate.py", line 16, in validate
    Package(descriptor, strict=True)
  File "envs/oemof-B3/lib/python3.8/site-packages/datapackage/package.py", line 105, in __init__
    self.__build()
  File "envs/oemof-B3/lib/python3.8/site-packages/datapackage/package.py", line 300, in __build
    raise exception
  File "envs/oemof-B3/lib/python3.8/site-packages/datapackage/package.py", line 295, in __build
    self.__profile.validate(self.__current_descriptor)
  File "envs/oemof-B3/lib/python3.8/site-packages/datapackage/profile.py", line 67, in validate
    raise exceptions.ValidationError(message, errors=errors)
tableschema.exceptions.ValidationError: There are 2 validation errors (see exception.errors)

Add cli tool to calculate tabular datapackages

The idea would be that existing packages should be calculated like

ota --input-dir=data --output-dir=oemof_tabular_results --solver=cbc

Options should be for now:

--input-dir  
--solver 
--result-dir 
--debug / or log (?)
...

Maybe more, but for now it will not be too complicated with nested command structures I guess.

For the input-dir every data directory that contains datapackage.json should be used, so that multiple packages at the sametime are caculated.

Simple upload of datapackages to OEDB not possible

It would be nice if datapackages could be uploaded to the open energy database without further steps necessary.

Why would this help? It helps by

  • creating a fully open modeling pipeline
  • supporting collaborative work on the models
  • improving data management standards of oemof.tabular

What functionality is missing in oemof.tabular to make it happen?

  • datapackages are not valid #74
  • datapackage.json does not contain all entries required by oedb
  • ...

What functionality is missing in the oe-family?

  • ...

First, we want to get an overview and extend the bullet lists above.

Move fuchur scenario functionality to oemof tabular

This code is to go to oemof tabular.

https://github.com/znes/fuchur/blob/b457ba91be115b9ef365733fb41d94f9d1b3d592/src/fuchur/cli.py#L30-L61

https://github.com/znes/fuchur/blob/b457ba91be115b9ef365733fb41d94f9d1b3d592/src/fuchur/__init__.py#L7-L22

However, as we do not have any scenario toml files provided in oemof tabular for scenario definition we might either provide an empty one or/and allow to specify a folder which is then used as scenario folder.

Adding subnodes in Reservoir silently overwrites GenericStorage inputs

In short: GenericStorage expects a single input and a single output. If you add inputs or outputs by adding subnodes you may throw out the original input flow from the constraints.

Problem
By adding the subnode "-inflow"


the inputs Flow from the Bus to the Reservoir gets overwritten in the GenericStorage's balance constraints.

You can see this by either looking into the LP-file or calling m.pprint().

This happens silently in the background, which can be a problem. For example, if one wants to model a Reservoir with a pump.

Also, for other types of facades this is problematic. E.g. implementing a battery electric vehicle, which can be thought of as a storage with an additional Sink describing the drive power of the vehicles. This is where I originally stumbled over the issue.

Have a look here for an (not yet finished) Bev facade and the script to test it.

How does it happen?
The Reservoir facade inherits from GenericStorage. In line

https://github.com/oemof/oemof-solph/blob/4419d0d777b0240bbcac109891cfd90d122537f2/src/oemof/solph/components.py#L372

a dictionary describing the inputs is created, which only keeps the first entry of a list. Some lines below, when the constraints are created, this dictionary is used

https://github.com/oemof/oemof-solph/blob/4419d0d777b0240bbcac109891cfd90d122537f2/src/oemof/solph/components.py#L476

This is how the Flow gets kicked out of the equation. The reason is that solph's GenericStorage was not designed to have more than one input and output, which happens once you have subnodes. As a consequences, the behaviour of the flows in Reservoir works only by conindidence. If the flows would appear in a different order in the list, the subnode-flow would be out of the storage balance constraints.

Do you have any ideas what I could do without having to roll up everything in GenericStorage?

Move CARRIER_COLOR_MAP and TECH_COLOR_MAP to yaml files

To better separate code and configuration, let's move the above mentioned dictionaries in tabular.facades to a separate place, e.g.:

config/
|-------- carrier_color_map.yaml
|-------- tech_color_map.yaml

And load them in src/oemof/tabular/init.py

Then, adapt the imports in any part of the code or the docs from from oemof.tabular.facades import TECH_COLOR_MAP to from oemof.tabular import TECH_COLOR_MAP.

NoneType Object on Windows machine

Installing tabular on a Windows 10 and a Linux machine leads to some pathing (as I assume)

In :

  • oemof-tabular\tests\test_examples.py:51: TypeError: 'NoneType' object is not subscriptable
  • usage of pathlib.PosixPath in test_examples.py wont work in Windows as far as I know
  • PytestWarning for TypeError in:
    /oemof-tabular/tests/test_examples.py:65: PytestWarning: Value of environment variable OEMOF_TABULAR_FOREIGN_KEY_DESCRIPTORS_FILE type should be str, but got PosixPath('/home/local/RL-INSTITUT/felix.maurer/rli/Felix.Maurer/SEDOS/Python/dependency/oemof-tabular/tests/custom_foreign_key_descriptors.json') (type: PosixPath); converted to str implicitly "

(PosixPath returns None on Windows, therfore the PytestWarning is missing on the Windows machine and therefore does not violate Typeannotation)


Also see attached logs from running tests:
linux.log
windows.log

Release v0.0.3

Preparation

  • Test the examples and start an issue for non working examples.
  • Keep an eye on open issues that are set to your release but seem to be forgotten.
  • Make sure oemof.solph 0.4.5 is on pypi.

Checks on the day of release

  • Close "forgotten" issues with a recapitulatory comment or set them to a later release if they are still important.
  • Run examples and tests check the CI results
  • Check the Changelog (can you do this, @MaGering?)
  • Check if the latest documentation looks right at readthedocs.
  • Update AUTHORS.rst
  • Support python 3.7 to 3.9
  • Changelog links are broken (missing backslash)
  • Change version in setup.py, docs/conf.py, commits-since badge, tabular/init.py,
  • Add new version in src/oemof/tabular/config/config.py "supported_oemof_tabular_versions"
  • Setup zenodo hook

The rest of the release process is described in https://github.com/oemof/oemof/wiki/How-to-release

Extend CI by coverage and windows checks

While GitHub actions aren't perfect they provide a way around Travis' slightly restrictive policy regarding free macOS builds and we can use it for Windows builds, too, which means we can get get rid of AppVeyor.

Error when importing examples datapackages

Hi everybody,

this ist the first time I take a look at oemof.tabular. Thanks for everything, such a great project!

I tried to follow the steps in the tutorial part of the documentation on how to use the datapackage reader (https://oemof-tabular.readthedocs.io/en/latest/tutorials/datapackage-reader.html).

Doing so produces the following error:

Traceback (most recent call last):
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\oemof\tabular\datapackage\reading.py", line 294, in deserialize_energy_system
    facade_data = r.read(keyed=True, relations=True)
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\datapackage\resource.py", line 377, in read
    foreign_keys_values=foreign_keys_values, **options)
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\tableschema\table.py", line 364, in read
    for count, row in enumerate(rows, start=1):
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\tableschema\table.py", line 290, in iter
    error_data=local_keyed_values)
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\tableschema\table.py", line 202, in exc_handler
    raise exc
tableschema.exceptions.UnresolvedFKError: Foreign key "['profile']" violation in row "5": ('wind-profile',) not found in source_profile
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\IPython\core\interactiveshell.py", line 3319, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-b2a34a931d93>", line 1, in <module>
    runfile('C:/Users/m.haller/Documents/11 Eigene Projekte/OpenSourceModeling/OpenSourceModeling/oemof/oemof_tabular_test.py', wdir='C:/Users/m.haller/Documents/11 Eigene Projekte/OpenSourceModeling/OpenSourceModeling/oemof')
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.2\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/m.haller/Documents/11 Eigene Projekte/OpenSourceModeling/OpenSourceModeling/oemof/oemof_tabular_test.py", line 43, in <module>
    typemap=typemap,
  File "C:\Users\m.haller\AppData\Local\Continuum\miniconda3\envs\env_oemof_tabular\lib\site-packages\oemof\tabular\datapackage\reading.py", line 301, in deserialize_energy_system
    "Exception was: {}").format(r.name, e))
datapackage.exceptions.LoadError: Could not read data for resource with name `source`.  Maybe wrong foreign keys?
Exception was: Foreign key "['profile']" violation in row "5": ('wind-profile',) not found in source_profile

I am using miniconda and Python 3.7.5 on Windows 10. But the same error message also appears on https://oemof-tabular.readthedocs.io/en/latest/tutorials/datapackage-reader.html, so I think it is independent of the environment I am using. Similar errors occur with the other two example packages provided (dispatch and foreignkeys).

Errors and warnings for tests with clean install

A clean install with pip install 'git+https://[email protected]/oemof/oemof-tabular.git' for Python 3.6.7 yields for the tests the errors and warnings below.

(venv) clemens@euf-cwi:~/znes_clemens/repositories/oemof-tabular$ tox
GLOB sdist-make: /home/clemens/znes_clemens/repositories/oemof-tabular/setup.py
clean create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/clean
clean installdeps: coverage
clean installed: coverage==4.5.3
clean run-test-pre: PYTHONHASHSEED='1653473122'
clean run-test: commands[0] | coverage erase
check create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/check
check installdeps: docutils, check-manifest, flake8, readme-renderer, pygments, isort
check installed: bleach==3.1.0,check-manifest==0.38,docutils==0.14,entrypoints==0.3,flake8==3.7.7,isort==4.3.18,mccabe==0.6.1,pycodestyle==2.5.0,pyflakes==2.1.1,Pygments==2.3.1,readme-renderer==24.0,six==1.12.0,toml==0.10.0,webencodings==0.5.1
check run-test-pre: PYTHONHASHSEED='1653473122'
check run-test: commands[0] | python setup.py check --strict --metadata --restructuredtext
/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/check/lib/python3.6/site-packages/setuptools/dist.py:472: UserWarning: Normalizing '0.0.1dev' to '0.0.1.dev0'
  normalized_version,
running check
warning: Check: This command has been deprecated. Use `twine check` instead: https://packaging.python.org/guides/making-a-pypi-friendly-readme#validating-restructuredtext-markup

The project's long description is valid RST.
check run-test: commands[1] | check-manifest /home/clemens/znes_clemens/repositories/oemof-tabular
lists of files in version control and sdist do not match!
missing from sdist:
  data
  data/data.xls
suggested MANIFEST.in rules:
  recursive-include data *.xls
ERROR: InvocationError for command /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/check/bin/check-manifest . (exited with code 1)
docs create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs
docs installdeps: -r/home/clemens/znes_clemens/repositories/oemof-tabular/docs/requirements.txt
docs inst: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/.tmp/package/1/oemof.tabular-0.0.1.dev0.zip
docs installed: alabaster==0.7.12,appdirs==1.4.3,asn1crypto==0.24.0,attrs==19.1.0,Babel==2.6.0,backcall==0.1.0,bcrypt==3.1.6,cchardet==2.1.4,certifi==2019.3.9,cffi==1.12.3,chardet==3.0.4,Click==7.0,cryptography==2.6.1,cycler==0.10.0,datapackage==1.6.0,decorator==4.4.0,dill==0.2.9,docutils==0.14,et-xmlfile==1.0.1,geojson==2.4.1,idna==2.8,ijson==2.3,imagesize==1.1.0,ipython==7.5.0,ipython-genutils==0.2.0,isodate==0.6.0,jdcal==1.4.1,jedi==0.13.3,Jinja2==2.10.1,jsonlines==1.2.0,jsonpointer==2.0,jsonschema==3.0.1,jupyter-core==4.4.0,kiwisolver==1.1.0,linear-tsv==1.1.0,MarkupSafe==1.1.1,matplotlib==3.0.3,nbformat==4.4.0,networkx==2.2,nose==1.3.7,numpy==1.16.3,oemof==0.2.4.dev0,oemof.tabular==0.0.1.dev0,openpyxl==2.4.11,packaging==19.0,pandas==0.24.2,paramiko==2.4.2,parso==0.4.0,pexpect==4.7.0,pickleshare==0.7.5,plotly==3.9.0,ply==3.11,prompt-toolkit==2.0.9,ptyprocess==0.6.0,pyasn1==0.4.5,pycparser==2.19,Pygments==2.3.1,PyNaCl==1.3.0,Pyomo==5.6.2,pyparsing==2.4.0,pyproj==2.1.3,pyrsistent==0.15.1,pyshp==2.1.0,python-dateutil==2.8.0,pytz==2019.1,PyUtilib==5.7.0,requests==2.21.0,retrying==1.3.3,rfc3986==1.3.1,scikit-learn==0.20.3,scipy==1.2.1,Shapely==1.6.4.post2,six==1.12.0,sklearn==0.0,snowballstemmer==1.2.1,Sphinx==2.0.1,sphinx-rtd-theme==0.4.3,sphinxcontrib-applehelp==1.0.1,sphinxcontrib-devhelp==1.0.1,sphinxcontrib-htmlhelp==1.0.2,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.2,sphinxcontrib-serializinghtml==1.1.3,SQLAlchemy==1.3.3,tableschema==1.4.1,tabulator==1.20.0,toml==0.10.0,traitlets==4.3.2,tsam==1.0.3,unicodecsv==0.14.1,urllib3==1.24.3,wcwidth==0.1.7,xlrd==1.2.0
docs run-test-pre: PYTHONHASHSEED='1653473122'
docs run-test: commands[0] | sphinx-build -E -b html docs dist/docs
Running Sphinx v2.0.1
making output directory... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 11 source files that are out of date
updating environment: 11 added, 0 changed, 0 removed
/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
  return f(*args, **kwds)
/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
  return f(*args, **kwds)
/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
  return f(*args, **kwds)
reading sources... [100%] usage                                                                       
/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/oemof/tabular/facades.py:docstring of oemof.tabular.facades:1: WARNING: Inline interpreted text or phrase reference start-string without end-string.
WARNING: autodoc: failed to import module 'geometry' from module 'oemof.tabular.tools'; the following exception was raised:
Traceback (most recent call last):
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/sphinx/ext/autodoc/importer.py", line 232, in import_module
    __import__(modname)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/oemof/tabular/tools/geometry.py", line 129, in <module>
    geom, fr=pyproj.Proj(proj="longlat"), to=pyproj.Proj(proj="aea")
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/proj.py", line 295, in __init__
    self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/crs.py", line 224, in from_user_input
    return cls(**value)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/crs.py", line 146, in __init__
    super(CRS, self).__init__(projstring)
  File "pyproj/_crs.pyx", line 317, in pyproj._crs._CRS.__init__
pyproj.exceptions.CRSError: Invalid projection: +proj=aea +type=crs: (Internal Proj Error: proj_create: Error -21: conic lat_1 = -lat_2)

/home/clemens/znes_clemens/repositories/oemof-tabular/docs/usage.rst:61: WARNING: Bullet list ends without a blank line; unexpected unindent.
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] usage                                                                        
generating indices... genindex py-modindex
highlighting module code... [100%] oemof.tabular.tools                                                
writing additional pages... search/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/sphinx_rtd_theme/search.html:20: RemovedInSphinx30Warning: To modify script_files in the theme is deprecated. Please insert a <script> tag directly in your theme instead.
  {{ super() }}

copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 3 warnings.

The HTML pages are in dist/docs.
docs run-test: commands[1] | sphinx-build -b linkcheck docs dist/docs
Running Sphinx v2.0.1
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [linkcheck]: targets for 11 source files that are out of date
updating environment: [] 0 added, 1 changed, 0 removed
reading sources... [100%] reference/oemof.tabular.tools                                               
WARNING: autodoc: failed to import module 'geometry' from module 'oemof.tabular.tools'; the following exception was raised:
Traceback (most recent call last):
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/sphinx/ext/autodoc/importer.py", line 232, in import_module
    __import__(modname)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/oemof/tabular/tools/geometry.py", line 129, in <module>
    geom, fr=pyproj.Proj(proj="longlat"), to=pyproj.Proj(proj="aea")
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/proj.py", line 295, in __init__
    self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/crs.py", line 224, in from_user_input
    return cls(**value)
  File "/home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/lib/python3.6/site-packages/pyproj/crs.py", line 146, in __init__
    super(CRS, self).__init__(projstring)
  File "pyproj/_crs.pyx", line 317, in pyproj._crs._CRS.__init__
pyproj.exceptions.CRSError: Invalid projection: +proj=aea +type=crs: (Internal Proj Error: proj_create: Error -21: conic lat_1 = -lat_2)

looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [  9%] authors                                                                      
(line    5) ok        https://oemof.org
writing output... [ 18%] changelog                                                                    
writing output... [ 27%] contributing                                                                 
(line   76) ok        https://travis-ci.org/oemof/oemof-tabular/pull_requests
(line   52) ok        https://tox.readthedocs.io/en/latest/install.html
(line   40) ok        https://github.com/oemof/oemof-tabular
(line   27) ok        https://github.com/oemof/oemof-tabular/issues
(line   11) ok        https://github.com/oemof/oemof-tabular/issues
writing output... [ 36%] index                                                                        
writing output... [ 45%] installation                                                                 
writing output... [ 54%] readme                                                                       
(line    9) ok        https://travis-ci.org/oemof/oemof-tabular
(line    7) ok        https://pypi.org/project/oemof.tabular
(line    7) ok        https://pypi.org/project/oemof.tabular
(line    7) ok        https://github.com/oemof/oemof-tabular/blob/master/LICENSE
(line    9) ok        https://ci.appveyor.com/project/gnn/oemof-tabular
(line    9) ok        https://readthedocs.org/projects/oemof-tabular
(line   11) ok        https://scrutinizer-ci.com/g/oemof/oemof-tabular/
(line    9) ok        https://requires.io/github/oemof/oemof-tabular/requirements/?branch=master
(line   11) ok        https://coveralls.io/github/oemof/oemof-tabular
(line   11) ok        https://codecov.io/github/oemof/oemof-tabular
(line   11) ok        https://codeclimate.com/github/oemof/oemof-tabular
(line   79) broken    https://pip.pypa.io/en/stable/news/#id58 - Anchor 'id58' not found
(line   11) ok        https://app.codacy.com/project/gnn/oemof-tabular/dashboard
(line   96) redirect  https://oemof-tabular.readthedocs.io/ - with Found to https://oemof-tabular.readthedocs.io/en/latest/
(line    7) ok        https://img.shields.io/pypi/v/oemof.tabular.svg
(line    7) ok        https://img.shields.io/pypi/pyversions/oemof.tabular.svg
(line    7) ok        https://img.shields.io/pypi/l/oemof-tabular.svg?colorB=blue
(line    9) ok        https://ci.appveyor.com/api/projects/status/github/oemof/oemof-tabular?branch=master&svg=true
(line    9) ok        https://readthedocs.org/projects/oemof-tabular/badge/?style=flat
(line    9) ok        https://requires.io/github/oemof/oemof-tabular/requirements.svg?branch=master
(line    9) redirect  https://travis-ci.org/oemof/oemof-tabular.svg?branch=master - permanently to https://api.travis-ci.org/oemof/oemof-tabular.svg?branch=master
(line    7) ok        https://github.com/oemof/oemof-tabular/compare/v0.0.1...master
(line    7) ok        https://img.shields.io/badge/dynamic/json.svg?label=%2B&url=https%3A%2F%2Fapi.github.com%2Frepos%2Foemof%2Foemof-tabular%2Fcompare%2Fv0.0.1...master&query=%24.total_commits&colorB=blue
(line    9) ok        https://img.shields.io/pypi/wheel/oemof.tabular.svg
(line   11) ok        https://img.shields.io/codacy/grade/14dbd9b9c5e34f8b80e73887b5aa6e6c.svg
(line   11) redirect  https://codecov.io/github/oemof/oemof-tabular/coverage.svg?branch=master - permanently to https://codecov.io/gh/oemof/oemof-tabular/branch/master/graphs/badge.svg?branch=master
(line   11) redirect  https://coveralls.io/repos/oemof/oemof-tabular/badge.svg?branch=master&service=github - with Found to https://s3.amazonaws.com/assets.coveralls.io/badges/coveralls_33.svg
(line   11) redirect  https://img.shields.io/scrutinizer/g/oemof/oemof-tabular/master.svg - permanently to https://img.shields.io/scrutinizer/quality/g/oemof/oemof-tabular/master.svg
(line   11) redirect  https://codeclimate.com/github/oemof/oemof-tabular/badges/gpa.svg - with Found to https://api.codeclimate.com/v1/badges/d93206b72ac217691c45/maintainability.svg
writing output... [ 63%] reference/index                                                              
writing output... [ 72%] reference/oemof.tabular                                                      
writing output... [ 81%] reference/oemof.tabular.datapackage                                          
writing output... [ 90%] reference/oemof.tabular.tools                                                
writing output... [100%] usage                                                                        
(line   94) ok        https://frictionlessdata.io/specs/tabular-data-package/

build finished with problems, 1 warning.
ERROR: InvocationError for command /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/docs/bin/sphinx-build -b linkcheck docs dist/docs (exited with code 1)
py34-cover create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py34-cover
ERROR: InterpreterNotFound: python3.4
py34-nocov create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py34-nocov
ERROR: InterpreterNotFound: python3.4
py35-cover create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py35-cover
ERROR: InterpreterNotFound: python3.5
py35-nocov create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py35-nocov
ERROR: InterpreterNotFound: python3.5
py36-cover create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-cover
py36-cover installdeps: pytest, pytest-travis-fold, pytest-cov
py36-cover develop-inst: /home/clemens/znes_clemens/repositories/oemof-tabular
py36-cover installed: appdirs==1.4.3,asn1crypto==0.24.0,atomicwrites==1.3.0,attrs==19.1.0,backcall==0.1.0,bcrypt==3.1.6,cchardet==2.1.4,certifi==2019.3.9,cffi==1.12.3,chardet==3.0.4,Click==7.0,coverage==4.5.3,cryptography==2.6.1,cycler==0.10.0,datapackage==1.6.0,decorator==4.4.0,dill==0.2.9,et-xmlfile==1.0.1,geojson==2.4.1,idna==2.8,ijson==2.3,ipython==7.5.0,ipython-genutils==0.2.0,isodate==0.6.0,jdcal==1.4.1,jedi==0.13.3,jsonlines==1.2.0,jsonpointer==2.0,jsonschema==3.0.1,jupyter-core==4.4.0,kiwisolver==1.1.0,linear-tsv==1.1.0,matplotlib==3.0.3,more-itertools==7.0.0,nbformat==4.4.0,networkx==2.2,nose==1.3.7,numpy==1.16.3,oemof==0.2.4.dev0,-e [email protected]:oemof/oemof-tabular.git@a969c2bf8865d9687abe3e828400139cb8f3c40b#egg=oemof.tabular,openpyxl==2.4.11,pandas==0.24.2,paramiko==2.4.2,parso==0.4.0,pexpect==4.7.0,pickleshare==0.7.5,plotly==3.9.0,pluggy==0.11.0,ply==3.11,prompt-toolkit==2.0.9,ptyprocess==0.6.0,py==1.8.0,pyasn1==0.4.5,pycparser==2.19,Pygments==2.3.1,PyNaCl==1.3.0,Pyomo==5.6.2,pyparsing==2.4.0,pyproj==2.1.3,pyrsistent==0.15.1,pyshp==2.1.0,pytest==4.4.1,pytest-cov==2.7.1,pytest-travis-fold==1.3.0,python-dateutil==2.8.0,pytz==2019.1,PyUtilib==5.7.0,requests==2.21.0,retrying==1.3.3,rfc3986==1.3.1,scikit-learn==0.20.3,scipy==1.2.1,Shapely==1.6.4.post2,six==1.12.0,sklearn==0.0,SQLAlchemy==1.3.3,tableschema==1.4.1,tabulator==1.20.0,toml==0.10.0,traitlets==4.3.2,tsam==1.0.3,unicodecsv==0.14.1,urllib3==1.24.3,wcwidth==0.1.7,xlrd==1.2.0
py36-cover run-test-pre: PYTHONHASHSEED='1653473122'
py36-cover run-test: commands[0] | pytest --cov --cov-report=term-missing -vv
======================================== test session starts =========================================
platform linux -- Python 3.6.7, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-cover/bin/python
cachedir: .tox/py36-cover/.pytest_cache
rootdir: /home/clemens/znes_clemens/repositories/oemof-tabular, inifile: setup.cfg
plugins: travis-fold-1.3.0, cov-2.7.1
collected 16 items / 3 errors / 13 selected                                                          

=============================================== ERRORS ===============================================
__________________ ERROR collecting src/oemof/tabular/examples/scripting/compute.py __________________
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:57: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

During handling of the above exception, another exception occurred:
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:72: in apply_indexed_rule
    return rule(model)
E   TypeError: _storage_capacity_bound_rule() missing 2 required positional arguments: 'n' and 't'

During handling of the above exception, another exception occurred:
src/oemof/tabular/examples/scripting/compute.py:30: in <module>
    m = Model(es)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:261: in __init__
    super().__init__(energysystem, **kwargs)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:78: in __init__
    self._construct()
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:85: in _construct
    self._add_child_blocks()
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:113: in _add_child_blocks
    block._create(group=self.es.groups.get(group))
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:320: in _create
    bounds=_storage_capacity_bound_rule)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/block.py:568: in __setattr__
    self.add_component(name, val)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/block.py:1008: in add_component
    val.construct(data)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/var.py:609: in construct
    self._initialize_members(self._index)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/var.py:736: in _initialize_members
    key)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:80: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
------------------------------------------ Captured stdout -------------------------------------------
ERROR: Constructing component 'GenericStorageBlock.capacity' from data=None
    failed: TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
______________ ERROR collecting src/oemof/tabular/examples/scripting/postprocessing.py _______________
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:57: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

During handling of the above exception, another exception occurred:
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:72: in apply_indexed_rule
    return rule(model)
E   TypeError: _storage_capacity_bound_rule() missing 2 required positional arguments: 'n' and 't'

During handling of the above exception, another exception occurred:
src/oemof/tabular/examples/scripting/postprocessing.py:25: in <module>
    m = Model(es)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:261: in __init__
    super().__init__(energysystem, **kwargs)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:78: in __init__
    self._construct()
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:85: in _construct
    self._add_child_blocks()
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/models.py:113: in _add_child_blocks
    block._create(group=self.es.groups.get(group))
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:320: in _create
    bounds=_storage_capacity_bound_rule)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/block.py:568: in __setattr__
    self.add_component(name, val)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/block.py:1008: in add_component
    val.construct(data)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/var.py:609: in construct
    self._initialize_members(self._index)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/var.py:736: in _initialize_members
    key)
.tox/py36-cover/lib/python3.6/site-packages/pyomo/core/base/misc.py:80: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-cover/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
------------------------------------------ Captured stdout -------------------------------------------
Runnig postprocessing example with datapackage dispatch
Runnig postprocessing example with datapackage investment
ERROR: Constructing component 'GenericStorageBlock.capacity' from data=None
    failed: TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
------------------------------------------ Captured stderr -------------------------------------------
ERROR:pyomo.core:Constructing component 'GenericStorageBlock.capacity' from data=None failed:
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
________________________ ERROR collecting src/oemof/tabular/tools/geometry.py ________________________
src/oemof/tabular/tools/geometry.py:129: in <module>
    geom, fr=pyproj.Proj(proj="longlat"), to=pyproj.Proj(proj="aea")
.tox/py36-cover/lib/python3.6/site-packages/pyproj/proj.py:295: in __init__
    self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
.tox/py36-cover/lib/python3.6/site-packages/pyproj/crs.py:224: in from_user_input
    return cls(**value)
.tox/py36-cover/lib/python3.6/site-packages/pyproj/crs.py:146: in __init__
    super(CRS, self).__init__(projstring)
pyproj/_crs.pyx:317: in pyproj._crs._CRS.__init__
    ???
E   pyproj.exceptions.CRSError: Invalid projection: +proj=aea +type=crs: (Internal Proj Error: proj_create: Error -21: conic lat_1 = -lat_2)

----------- coverage: platform linux, python 3.6.7-final-0 -----------
Name                                                     Stmts   Miss Branch BrPart     Cover   Missing
-------------------------------------------------------------------------------------------------------
src/oemof/tabular/__init__.py                                2      0      0      0   100.00%
src/oemof/tabular/__main__.py                                3      1      2      1    60.00%   14, 13->14
src/oemof/tabular/cli.py                                    31     21     12      0    23.26%   13-77, 83, 90, 94
src/oemof/tabular/datapackage/__init__.py                    3      0      0      0   100.00%
src/oemof/tabular/datapackage/aggregation.py                75     65     32      0     9.35%   33-101, 119-225
src/oemof/tabular/datapackage/building.py                  256    223    114      0     8.92%   30-37, 43-58, 97-191, 207-226, 246-256, 276-287, 301-314, 334-397, 413-415, 425-454, 460-477, 488-503, 517-527, 545-553, 573-590, 611-647, 678-700, 732-759
src/oemof/tabular/datapackage/processing.py                 37     27     14      0    19.61%   29-70, 84-88, 94-97
src/oemof/tabular/datapackage/reading.py                   146     42    113     20    67.57%   64, 77, 104, 112-113, 120, 195-202, 247-272, 295-298, 322-329, 346, 364, 37->39, 63->64, 76->77, 99->102, 103->104, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 194->195, 229->225, 274->exit, 274->exit, 274->exit, 319->364, 321->322, 335->346
src/oemof/tabular/examples/scripting/compute.py             15      3      2      1    76.47%   36-43, 19->23
src/oemof/tabular/examples/scripting/plotting.py             6      0      0      0   100.00%
src/oemof/tabular/examples/scripting/postprocessing.py      23      1      6      3    86.21%   34, 12->exit, 30->12, 33->34
src/oemof/tabular/facades.py                               225     50     24      4    72.69%   47-48, 59, 65-89, 102, 161-188, 193-218, 911-939, 1085-1095, 1102-1109, 1117-1123, 1131, 1139, 45->47, 58->59, 64->65, 910->911
src/oemof/tabular/tools/__init__.py                         14      4     10      2    66.67%   18, 24-27, 68->exit, 69->72
src/oemof/tabular/tools/geometry.py                         69     52     35      0    16.35%   36-77, 92-95, 113-125, 137-180
src/oemof/tabular/tools/plots.py                            49     13     38      3    70.11%   45, 60, 134-135, 152-167, 44->45, 59->60, 133->134
src/oemof/tabular/tools/postprocessing.py                  126     72     87      7    44.60%   23, 66-74, 79-83, 105, 132, 157-263, 22->23, 65->66, 75->64, 78->79, 104->105, 115->109, 131->132
tests/regression_tests.py                                    8      5      0      0    37.50%   23-27
tests/test_examples.py                                      18     12     10      0    21.43%   17-37, 43-47
tests/test_oemof_tabular.py                                  7      3      0      0    57.14%   9-10, 16
-------------------------------------------------------------------------------------------------------
TOTAL                                                     1113    594    499     41    41.75%

====================================== short test summary info =======================================
FAILED src/oemof/tabular/examples/scripting/compute.py
FAILED src/oemof/tabular/examples/scripting/postprocessing.py
FAILED src/oemof/tabular/tools/geometry.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================== 3 error in 10.87 seconds ======================================
ERROR: InvocationError for command /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-cover/bin/pytest --cov --cov-report=term-missing -vv (exited with code 2)
py36-nocov create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-nocov
py36-nocov installdeps: pytest, pytest-travis-fold
py36-nocov inst: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/.tmp/package/1/oemof.tabular-0.0.1.dev0.zip
py36-nocov installed: appdirs==1.4.3,asn1crypto==0.24.0,atomicwrites==1.3.0,attrs==19.1.0,backcall==0.1.0,bcrypt==3.1.6,cchardet==2.1.4,certifi==2019.3.9,cffi==1.12.3,chardet==3.0.4,Click==7.0,cryptography==2.6.1,cycler==0.10.0,datapackage==1.6.0,decorator==4.4.0,dill==0.2.9,et-xmlfile==1.0.1,geojson==2.4.1,idna==2.8,ijson==2.3,ipython==7.5.0,ipython-genutils==0.2.0,isodate==0.6.0,jdcal==1.4.1,jedi==0.13.3,jsonlines==1.2.0,jsonpointer==2.0,jsonschema==3.0.1,jupyter-core==4.4.0,kiwisolver==1.1.0,linear-tsv==1.1.0,matplotlib==3.0.3,more-itertools==7.0.0,nbformat==4.4.0,networkx==2.2,nose==1.3.7,numpy==1.16.3,oemof==0.2.4.dev0,oemof.tabular==0.0.1.dev0,openpyxl==2.4.11,pandas==0.24.2,paramiko==2.4.2,parso==0.4.0,pexpect==4.7.0,pickleshare==0.7.5,plotly==3.9.0,pluggy==0.11.0,ply==3.11,prompt-toolkit==2.0.9,ptyprocess==0.6.0,py==1.8.0,pyasn1==0.4.5,pycparser==2.19,Pygments==2.3.1,PyNaCl==1.3.0,Pyomo==5.6.2,pyparsing==2.4.0,pyproj==2.1.3,pyrsistent==0.15.1,pyshp==2.1.0,pytest==4.4.1,pytest-travis-fold==1.3.0,python-dateutil==2.8.0,pytz==2019.1,PyUtilib==5.7.0,requests==2.21.0,retrying==1.3.3,rfc3986==1.3.1,scikit-learn==0.20.3,scipy==1.2.1,Shapely==1.6.4.post2,six==1.12.0,sklearn==0.0,SQLAlchemy==1.3.3,tableschema==1.4.1,tabulator==1.20.0,toml==0.10.0,traitlets==4.3.2,tsam==1.0.3,unicodecsv==0.14.1,urllib3==1.24.3,wcwidth==0.1.7,xlrd==1.2.0
py36-nocov run-test-pre: PYTHONHASHSEED='1653473122'
py36-nocov run-test: commands[0] | pytest -vv --ignore=src
======================================== test session starts =========================================
platform linux -- Python 3.6.7, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-nocov/bin/python
cachedir: .tox/py36-nocov/.pytest_cache
rootdir: /home/clemens/znes_clemens/repositories/oemof-tabular, inifile: setup.cfg
plugins: travis-fold-1.3.0
collected 5 items                                                                                    

tests/regression_tests.py::test_how_initialize_loads_the_default_configuration PASSED          [ 20%]
tests/test_examples.py::test_example_datapackage_readability PASSED                            [ 40%]
tests/test_examples.py::test_scripting_examples FAILED                                         [ 60%]
tests/test_oemof_tabular.py::test_version_specification PASSED                                 [ 80%]
tests/test_oemof_tabular.py::test_project_name PASSED                                          [100%]

============================================== FAILURES ==============================================
______________________________________ test_scripting_examples _______________________________________
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/misc.py:57: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

During handling of the above exception, another exception occurred:
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/misc.py:72: in apply_indexed_rule
    return rule(model)
E   TypeError: _storage_capacity_bound_rule() missing 2 required positional arguments: 'n' and 't'

During handling of the above exception, another exception occurred:
tests/test_examples.py:51: in test_scripting_examples
    "examples/scripting/{}".format(example),
<string>:30: in <module>
    ???
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/models.py:261: in __init__
    super().__init__(energysystem, **kwargs)
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/models.py:78: in __init__
    self._construct()
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/models.py:85: in _construct
    self._add_child_blocks()
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/models.py:113: in _add_child_blocks
    block._create(group=self.es.groups.get(group))
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/components.py:320: in _create
    bounds=_storage_capacity_bound_rule)
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/block.py:568: in __setattr__
    self.add_component(name, val)
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/block.py:1008: in add_component
    val.construct(data)
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/var.py:609: in construct
    self._initialize_members(self._index)
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/var.py:736: in _initialize_members
    key)
.tox/py36-nocov/lib/python3.6/site-packages/pyomo/core/base/misc.py:80: in apply_indexed_rule
    return rule(model, *index)
.tox/py36-nocov/lib/python3.6/site-packages/oemof/solph/components.py:316: in _storage_capacity_bound_rule
    bounds = (n.nominal_storage_capacity * n.min_storage_level[t],
E   TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
---------------------------------------- Captured stdout call ----------------------------------------
Runnig scripting example compute.py ...
ERROR: Constructing component 'GenericStorageBlock.capacity' from data=None
    failed: TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
----------------------------------------- Captured log call ------------------------------------------
block.py                  1014 ERROR    Constructing component 'GenericStorageBlock.capacity' from data=None failed:
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
====================================== short test summary info =======================================
FAILED tests/test_examples.py::test_scripting_examples
================================= 1 failed, 4 passed in 3.02 seconds =================================
ERROR: InvocationError for command /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py36-nocov/bin/pytest -vv --ignore=src (exited with code 1)
py37-cover create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py37-cover
ERROR: InterpreterNotFound: python3.7
py37-nocov create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/py37-nocov
ERROR: InterpreterNotFound: python3.7
report create: /home/clemens/znes_clemens/repositories/oemof-tabular/.tox/report
report installdeps: coverage
report installed: coverage==4.5.3
report run-test-pre: PYTHONHASHSEED='1653473122'
report run-test: commands[0] | coverage report
Name                                                     Stmts   Miss Branch BrPart     Cover   Missing
-------------------------------------------------------------------------------------------------------
src/oemof/tabular/__init__.py                                2      0      0      0   100.00%
src/oemof/tabular/__main__.py                                3      1      2      1    60.00%   14, 13->14
src/oemof/tabular/cli.py                                    31     21     12      0    23.26%   13-77, 83, 90, 94
src/oemof/tabular/datapackage/__init__.py                    3      0      0      0   100.00%
src/oemof/tabular/datapackage/aggregation.py                75     65     32      0     9.35%   33-101, 119-225
src/oemof/tabular/datapackage/building.py                  256    223    114      0     8.92%   30-37, 43-58, 97-191, 207-226, 246-256, 276-287, 301-314, 334-397, 413-415, 425-454, 460-477, 488-503, 517-527, 545-553, 573-590, 611-647, 678-700, 732-759
src/oemof/tabular/datapackage/processing.py                 37     27     14      0    19.61%   29-70, 84-88, 94-97
src/oemof/tabular/datapackage/reading.py                   146     42    113     20    67.57%   64, 77, 104, 112-113, 120, 195-202, 247-272, 295-298, 322-329, 346, 364, 37->39, 63->64, 76->77, 99->102, 103->104, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 146->exit, 194->195, 229->225, 274->exit, 274->exit, 274->exit, 319->364, 321->322, 335->346
src/oemof/tabular/examples/scripting/compute.py             15      3      2      1    76.47%   36-43, 19->23
src/oemof/tabular/examples/scripting/plotting.py             6      0      0      0   100.00%
src/oemof/tabular/examples/scripting/postprocessing.py      23      1      6      3    86.21%   34, 12->exit, 30->12, 33->34
src/oemof/tabular/facades.py                               225     50     24      4    72.69%   47-48, 59, 65-89, 102, 161-188, 193-218, 911-939, 1085-1095, 1102-1109, 1117-1123, 1131, 1139, 45->47, 58->59, 64->65, 910->911
src/oemof/tabular/tools/__init__.py                         14      4     10      2    66.67%   18, 24-27, 68->exit, 69->72
src/oemof/tabular/tools/geometry.py                         69     52     35      0    16.35%   36-77, 92-95, 113-125, 137-180
src/oemof/tabular/tools/plots.py                            49     13     38      3    70.11%   45, 60, 134-135, 152-167, 44->45, 59->60, 133->134
src/oemof/tabular/tools/postprocessing.py                  126     72     87      7    44.60%   23, 66-74, 79-83, 105, 132, 157-263, 22->23, 65->66, 75->64, 78->79, 104->105, 115->109, 131->132
tests/regression_tests.py                                    8      5      0      0    37.50%   23-27
tests/test_examples.py                                      18     12     10      0    21.43%   17-37, 43-47
tests/test_oemof_tabular.py                                  7      3      0      0    57.14%   9-10, 16
-------------------------------------------------------------------------------------------------------
TOTAL                                                     1113    594    499     41    41.75%
report run-test: commands[1] | coverage html
______________________________________________ summary _______________________________________________
  clean: commands succeeded
ERROR:   check: commands failed
ERROR:   docs: commands failed
ERROR:  py34-cover: InterpreterNotFound: python3.4
ERROR:  py34-nocov: InterpreterNotFound: python3.4
ERROR:  py35-cover: InterpreterNotFound: python3.5
ERROR:  py35-nocov: InterpreterNotFound: python3.5
ERROR:   py36-cover: commands failed
ERROR:   py36-nocov: commands failed
ERROR:  py37-cover: InterpreterNotFound: python3.7
ERROR:  py37-nocov: InterpreterNotFound: python3.7
  report: commands succeeded

Release 0.1.0

Hey I would like to release 0.1.0 in the next 1-2 month. That version we can also use for MODEX I assume. I suggest collecting some to dos and then having pull request for working on it:

  • Make examples work with the latest API
  • Integrate Tutorials in Docs (I would suggest just add the jupyter notebooks pre-excuted) and find a way how to integrate them in Tests (#8 )
  • Add some test. As we are using solph I was wondering if we could build up on the test infrastructure that exists there already?
  • ...

One we have that I suggest writing a few pages and adding this to a open source software journal.

Do you agree doing this release / publication within the MODEX context?

Reading empty cells gives attributes that are None

When reading datapackages with some table cells empty, these attributes will be set None. This causes trouble, e.g. when storage_capacity is None, which is passed as a minimum value for investment. The error will occur much later in the chain, when building the model: AttributeError: 'NoneType' object has no attribute 'is_variable_type'.

Default values for attributes are defined via kwargs.get("attribute", <default>). However, with None passed, it will not be replaced by the default.

Wanted behaviour (in my view):

  • When None is passed, set the default value.
  • If there is no default value given, let the attribute be required.

DeprecationWarning in import_file on tabular tests

After installing and testing tabular i receive a DeprecationWarning:

  • lib/python3.8/site-packages/pyutilib/misc/import_file.py:11: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp

  • lib/python3.8/site-packages/jsonschema/compat.py:6: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
    from collections import MutableMapping, Sequence # noqa

Not possible to save constraints as part of the datapackage

Additional constraints like emission constraints or relations between flows are an important part of energy system models. By now, one can add them after creating the pyomo model.

Suggested feature: Support saving constraints with the datapackage.

First thoughts:

  • The constraints are not part of the solph.EnergySystem.
  • They could be, to parallel the structure of components, which are represented by the classes that are added to the EnergySystem and the Blocks, which belong to the model.
  • Similar to the Facades allowing to build solph components from a flat list of parameters, there could be facades that accept a list of parameters describing the constraint and adds it to the model.

Make build services work with `find_namespace_packages`

It seems that find_namespace_packages creates problems with various build services. Most notably, AppVeyor, Read the Docs and Travis CI all raise ImportErrors. I think the reason is that find_namespace_packages got first introduced in setuptools 40.1.0 and the services use an earlier version, so I have to figure out a way of forcing a minimal setuptools version onto the package building process.
It also looks like the docs environment still uses Python 2.7, so I have to figure out a way of finally changing that too.

Tidy up facade attributes

Moved from #44.

check and unify:

  • Not all facades consistently have the attributes carrier and tech.

decide

  • Decide if attributes of parent class should be explicitly appear in the facades. #44 (comment)
  • No facade has the attribute type because it is defined in the class Facade

Node.registry FutureWarning on running tests

I've been installing the latest Version of oemof.tabular successfully on a Windows 10 machine and Linux Mint machine.

Running test_constraints.py FutureWarning occours in @jnnr

  • /lib/python3.8/site-packages/oemof/network/network.py:102
    Automatic registration of Nodes is deprecated in favour of explicitly adding Nodes to an EnergySystem via EnergySystem.add. This feature, i.e. the Node.registry attribute and functionality pertaining to it, will be removed in future versions.
    (Simmilar for Windows 10 machine)

Also see attached logs from running tests:
linux.log
windows.log

Building module should be cleaned up

Refactor building.py because it is hard to grasp.

  • move all download write read from building to a new module io.py
  • everything after package_from_resources seems unrelated

Not used

  • infer_resources
  • update_package_descriptor
  • timeindex
  • initialize()
    what about this config file? Not documented!
  • input_filepath

Most of the functions got introduced in b83cd34 and have not been refactored much since then.

Error at install

With a fresh install in python 3.6.8 with

pip install oemof.tabular

The following error occurs:

ERROR: botocore 1.13.25 has requirement python-dateutil<2.8.1,>=2.1; python_version >= "2.7", but you'll have python-dateutil 2.8.1 which is incompatible.
ERROR: oemof 0.3.1 has requirement numpy<1.17,>=1.7.0, but you'll have numpy 1.17.4 which is incompatible.
ERROR: oemof 0.3.1 has requirement pandas<0.25,>=0.18.0, but you'll have pandas 0.25.3 which is incompatible.

Running oemof.tabular the m.results module stops with Attribute Error 'NoType' object has no attribute 'label'

After updating to oemof.tabular 0.0.3 I can run Maruf's energy model base_NDE_SDE.py up to the point it is supposed to write the results. At that point the program stops with the following error message:

File "Users/ .../base_NDE_SDE.py, line 514, in
m.resutls = m.results( )
File "Users/ ../oemof/solph/models.py, line 179, in results
return processing.resluts(self)
File "Users/ ../oemof/solph/processing.py, line 149, in results
str(e) + msg.format(k[0].label, k[1].label)
AttributeError: 'NoneType' object has no attribute 'label'

The model is run with Maruf's original data set and code (the code in this part of the program calling 'results' is quite similar to the example given for oemof.tabular in the documentation).

Do you have any idea, why this Error is occurring?
Any help would be greatly appreciated.

Olav

p.s.: My configuration is the same as reported on the last issue, we successfully solved.

Many dependencies

oemof.tabular has a large dependency tree. pipdeptree -p oemof.tabular shows the dependency tree. I was wondering why scikit-learn is part of the installation, for example. This causes extra maintenance work.

Should check which packages are actually useful and drop those from the requirements that are obsolete.

Requirements that are necessary for only part of the functionality (e.g. plotting, geometry) could move to extras_require. Those modules can try to import and raise an ImportError when a module is missing.

Update: I got an overview:
Not used

  • tableschema
  • seaborn
  • pyshp
  • ipython

Used only in one module

  • cli: click
  • plots: plotly matplotlib
  • aggregation: tsam
  • geometry: shapely, scipy, pyproj, geojson

ExtractionTurbine: Maximal electric capacity does not reduce with heat output

The electrical capacity, or just capacity, of the ExtractionTurbine is not reduced when more heat is produced, but stays the same. Instead of an operation range as sketched in a), the result is an operation range like in b).

ExtractionTurbine_range_of_operation

The reason is that the capacity is set on the electricity output flow, other that in the oemof.solph example, where the capacity is set onto the fuel flow. In the latter case, the constraint follows the iso-fuel lines as shown in the picture a).

I would call this a bug in oemof.tabular because the operation range in a) is what most modelers expect when thinking about an extraction turbine.

Our current workaround is this: We redefine the ExtractionTurbine facade class and set a fuel_capacity on the fuel input, which we get from the capacity by multiplying with the condensing efficiency (modex-flexmex/oemof-flexmex@e653e1b#diff-60ad91b35a63351b018098acda541bc53658590d1cbc7a9d518db584a343295bR644). This only works for the non-investment case at the moment.

Feedback on how to solve this more elegantly and how to proceed with this in oemof.tabular is welcome!

Refactor postprocessing

We aim to refactor postprocessing and include developments from rl-institut/oemoflex#82.

Currently, postprocessed data looks like this:

Timeseries

bus results

timeindex,coal,lignite,wind,el-storage1,el-storage2,import,demand0
2011-01-01 00:00:00,0.0,0.0,7.3766,-2.8633994,0.0,-0.78490446,3.72829618

Flow in/out of the bus is indicated by the sign

storage_level

timeindex,el-storage1,el-storage2
2011-01-01 00:00:00,9.9102842,0.0

Scalars

capacities

from,to,type,tech,carrier,value
el-storage1,bus0,capacity,battery,lithium,10
el-storage2,bus0,capacity,battery,lithium,20

oemoflex' results are much more comprehensive, but some ideas are worth preserving.

ImportError "tsam" caused by aggregation module

When importing tabular.datapackage, tabular.datapackage.aggregation is imported as well because of datapackage/init.py. Therefore, an ImportError appears even if aggregation is not used.

oemof.tabular installation process stops on three different Macs with different errors

Dear developer team,
after the successful installation of oemof.solph a while ago, I tried to installed oemof.tabular, which would fit my needs perfectly well. Unfortunately, it does not successfully install on my diverse Macs (iMac27, 4 GHz Quad-Core 7, MacBookPro 15", 2,8 GHz Quad-Core 7 and MacBookPro 16", Apple M1 Max). Es ist jeweils Python3.10 installiert.

Folgende Fehlermeldungen werden beim Abbruch der Installation ausgegeben:

- MacBookPro (Core 7):

Nach dem ausgeführten Kommando: Collecting bcrypt>=3.1.3 (from paramiko->oemof.tabular)

Kommt die Fehlermeldung:

‚Command „python setup.py egg_info“ failed with error code 1 in

/private/var/folders/7v/dymmw6f95vg0t_wzjcrpgknc0000/T/pip-install-0uqjk1j0/bcrypt/

Davor gibt es die Message:

File „…./site-packages/setuptools/importlib.py“ line 31, in if isinstance(ob, import lib_metadata.MetadataPathFinder)
AttributeError: module ‚import lib_metadata‘ has not attribute ‚MetadataPathFinder‘

- iMac 27:
Fast an der gleichen Stelle:

Nach dem ausgeführten Kommando: ‚Collecting pynacl>=1.0.1 (from paramiko->oemof.tabular)

‚Command „python setup.py egg_info“ failed with error code 1 in

/private/var/folders/t_/8gskjd5xx46xc2vd74lj_c2fc0000gq/T/pip-install-fb9tcwxx/pynacl/

Davor gibt es die Message:

File „…./site-packages/setuptools/importlib.py“ line 31, in if isinstance(ob, import lib_metadata.MetadataPathFinder)
AttributeError: module ‚import lib_metadata‘ has not attribute ‚MetadataPathFinder‘

Das scheint der gleiche Fehler zu sein.

- MacBookPro 16“ (M1 Max):

Hier läuft die Installation sehr lange und gibt eine Unmenge Meldungen aus, bis das System versucht numpy zu installieren. Nachdem er fast fertig ist, steigt der Mac mit ‚ERROR: Command errored out with exit status 1: …

ERROR: Command errored out with exit status 1: /Users/olavhohmeyer/opt/anaconda3/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/24/63p96bfn3qn4k6nm7zhbj81w0000gn/T/pip-install-5hti6gps/numpy_830008914e754225aaf79cf365e77209/setup.py'"'"'; file='"'"'/private/var/folders/24/63p96bfn3qn4k6nm7zhbj81w0000gn/T/pip-install-5hti6gps/numpy_830008914e754225aaf79cf365e77209/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /private/var/folders/24/63p96bfn3qn4k6nm7zhbj81w0000gn/T/pip-record-zfqeughl/install-record.txt --single-version-externally-managed --compile --install-headers /Users/olavhohmeyer/opt/anaconda3/include/python3.9/numpy Check the logs for full command output.

Was muss ich tun oder was müsst Ihr tun, damit die Installation funktioniert?

Für eine schnelle Antwort wäre ich Euch dankbar.

Olav

No constraint test for some facades

These facades are not tested so far but these are mostly aliases of converters anyways. Not sure if constraint tests are neccesary (IMHO @nailend)

  • shortage: Alias of Dispatchable. Take in mind, #90. But copy paste should probably do most work
  • generator: Alias of Dispatchable. Same here
  • heatpump: Move to experimental? #109
  • ElectricalBus: Move to experimental?
  • ElectricalLine: Move to experimental?

Should decide for each one wether to add tests or discontinue it.

Program does not import 'Edge' form oemof.tabular.facades

When I try to run Maruf's energy system model (version 'base-NDE-SDE.py) based on oemof.tabular the import of oemof.tabular.facades stops when the program tries to import 'Edge' from oemof.network. Looks like there is some problem in oemof.network???

This is the code of the program (base-NDE-SDE.py), where the import gets stuck:

#Base Scenario Source Code

Package Import

import os
import pandas as pd
import oemof.tabular.facades as fc

This is the output concerning the error message (cannot import name 'Edge'):

(test-project) olavhohmeyer@Olavs-MacBookPro-15-Zoll-16014 scenarios % python3 base-NDE-SDE.py
Traceback (most recent call last):
File "base-NDE-SDE.py", line 6, in
import oemof.tabular.facades as fc
File "/Users/olavhohmeyer/energy_models/oemof_tabular/test_tabular/test-project/lib/python3.6/site-packages/oemof/tabular/facades.py", line 23, in
from oemof.energy_system import EnergySystem
File "/Users/olavhohmeyer/energy_models/oemof_tabular/test_tabular/test-project/lib/python3.6/site-packages/oemof/energy_system.py", line 20, in
from oemof.groupings import DEFAULT as BY_UID, Grouping, Nodes
File "/Users/olavhohmeyer/energy_models/oemof_tabular/test_tabular/test-project/lib/python3.6/site-packages/oemof/groupings.py", line 16, in
from oemof.network import Edge
ImportError: cannot import name 'Edge'
(test-project) olavhohmeyer@Olavs-MacBookPro-15-Zoll-16014 scenarios %

How do I get around this problem?

Olav

Custom foreign keys for datapackages

This is a feature request for custom foreign keys, which allows a user to simply add custom components with related references in datapackages.

Therefore, function infer_metadata in module datapackage.building has to be adapted.
Proposed solution is to load default foreign_keys and references from JSON file and allow users to use different (custom) file via environment variable.

Some badges are not working any more

still active:

  • |version|
  • |commits-since|
  • |supported-versions|
  • |license|
  • |docs|
  • |wheel|

removed in #59:

  • |travis| (see 9088860)
  • |appveyor| (see 9088860)
  • |requires| The link had lead to the login page of require.io. Other people had the same issue: OpenDataServices/cove#1344
  • |coveralls| Last built had been on 2020-06-09. (possibly broken in 9088860)
  • |codecov| Most recent commit had been a year ago. (also possibly broken in 9088860)
  • |scrutinizer| last inspection 3 years ago; apparently costs something
  • |codacy| not working ("Request handler not found: /project/gnn/oemof-tabular/dashboard")
  • |codeclimate| only one build which was 3 years ago

to be re-introduced:
[ ] coveralls: test coverage
[ ] codacy: security issues, code coverage, code duplication, code complexity
[ ] requires: monitors dependencies
(please feel free to edit this list if you disagree)

SuspiciousUsageWarning on tabular tests

I've been installing the latest Version of oemof.tabular successfully on a Windows 10 machine and Linux Mint machine.

SuspiciousUsageWarning occours in:

  • /lib/python3.8/site-packages/oemof/solph/network/_helpers.py:28 (Linux)
  • \python\python38-32\lib\site-packages\oemof\solph\network_helpers.py:28 (Windows)
    and:
  • /lib/python3.8/site-packages/oemof/solph/custom/link.py:102 (Linux)
  • python\python38-32\lib\site-packages\oemof\solph\custom\link.py:102 (Windows)

Also see attached logs from running tests:
linux.log
windows.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.