Metadata-Version: 2.1
Name: cp2k-input-tools
Version: 0.1.0
Summary: Python tools to handle CP2K input files
License: MIT
Author: Tiziano Müller
Author-email: tiziano.mueller@chem.uzh.ch
Requires-Python: >=3.6,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: transitions (>=0.7.0,<0.8.0)
Description-Content-Type: text/markdown

# cp2k-input-tools

[![Build Status](https://travis-ci.com/dev-zero/cp2k-input-tools.svg?branch=develop)](https://travis-ci.com/dev-zero/cp2k-input-tools) [![codecov](https://codecov.io/gh/dev-zero/cp2k-input-tools/branch/develop/graph/badge.svg)](https://codecov.io/gh/dev-zero/cp2k-input-tools)

Fully validating pure-python CP2K input file parsers including preprocessing capabilities

Available commands:

* `cp2klint` .. a CP2K input file linter
* `fromcp2k` .. create a JSON or YAML configuration file from a CP2K input file
* `tocp2k` .. convert a JSON or YAML configuration back to CP2K's input file format

## Requirements

* Python 3.6+
* https://pypi.org/project/transitions/

For development: https://poetry.eustace.io/

## Idea

* have a pure-python CP2K input file linter with proper syntax error reporting (context, etc.)
* a final & complete restart file parser
* basis for an AiiDA CP2K project importer
* testbed for alternative import formats (YAML, JSON) for CP2K
* possible testbed for a re-implementation of the CP2K input parser itself

## TODOs

* [ ] parser: improve error reporting with context (tokenizer/preprocessor is already done)
* [ ] preprocessor: losing original context when replacing variables
* [ ] parser: unit conversion of values
* [ ] parser: parsing the XML is sloooow (easily 70% of the time), pickle or generate Python code directly instead and keep XML parsing as backup?

