libAtoms / testing-framework

11 stars 7 forks source link

Making testing-framework module #10

Open LarsSchaaf opened 3 years ago

LarsSchaaf commented 3 years ago

I was wondering if we could add a setup.py and change the file strucutre to allow for the testing-framework functions to be imported.

Benefits:

  1. Functions could be used ouside of the testing-framework setting, while still working there
  2. Rather than having to be careful in what working dir one is and using import utils *, one could import testingframeowrk.utils, allowing for better editor support and more varied folder structure.
  3. All tests would effectively become "shared", and useable accorss different tets

To Do:

Potential setup.py

from setuptools import setup, find_packages

PACKAGENAME = "testingframework"
DESCRIPTION = "Testing Framework for atomistic models"
AUTHOR = "Libatoms"
AUTHOR_EMAIL = ""

version = {}
with open("version.py") as fp:
    exec(fp.read(), version)

setup(
    name=PACKAGENAME,
    packages=find_packages(),
    version=version["__version__"],
    description=DESCRIPTION,
    long_description=open("testing-framework/README.md").read(),
    install_requires=["scipy", "numpy", "matplotlib", "pandas>=0.21.0", "scipy",],
    setup_requires=["pytest-runner",],
    tests_require=["pytest",],
    author=AUTHOR,
    author_email=AUTHOR_EMAIL,
    package_data={"": ["data/*", "calib/data/*"],},
)

Questions

  1. Would someones own implementation/use of the framework impeded by the file structure change?
gabor1 commented 3 years ago

Sounds like a good idea. Let's get some feedback from some python wizards, @jameskermode @noambernstein @stenczelt

jameskermode commented 3 years ago

I have no objection, sounds like it would work well.

stenczelt commented 3 years ago

Sounds great, let's do it! Tell me if you need help!

I would rather not encourage from testingframework.utilities import * but make sure you import what is needed and used, so that we have a sense of where functions are coming from even without smart editors that trace it.

Are you sure using an exec is the best way of handling versions in your setup.py:

version = {}
with open("version.py") as fp:
    exec(fp.read(), version)

perhaps versioneer or for a time manual versioning would be nicer.

LarsSchaaf commented 3 years ago

Thanks for the comments!! I had a quick look into the versioner - and it looks really cool. Didn't know that existed - cheers Tamas. If you would like to include it that'd be great!