setup.py with entry point