Included gomill framework for SGF and GTP support, and sketched out SGF game-loading code.
This commit is contained in:
parent
700a6a2f32
commit
692dc294d6
119 changed files with 27458 additions and 3 deletions
164
gomill/setup.py
Normal file
164
gomill/setup.py
Normal file
|
@ -0,0 +1,164 @@
|
|||
import glob
|
||||
import imp
|
||||
import os
|
||||
import sys
|
||||
from distutils import dir_util
|
||||
from distutils.core import setup, Command
|
||||
|
||||
VERSION = "0.7.2"
|
||||
|
||||
|
||||
try:
|
||||
from sphinx.setup_command import BuildDoc
|
||||
except ImportError:
|
||||
BuildDoc = None
|
||||
|
||||
cmdclass = {}
|
||||
|
||||
if BuildDoc:
|
||||
cmdclass['build_sphinx'] = BuildDoc
|
||||
|
||||
|
||||
|
||||
def find_script(name):
|
||||
mode = os.F_OK | os.X_OK
|
||||
for dirname in os.environ.get('PATH', os.defpath).split(os.pathsep):
|
||||
if dirname == '':
|
||||
continue
|
||||
pathname = os.path.join(dirname, name)
|
||||
if os.path.exists(pathname) and os.access(pathname, mode):
|
||||
return pathname
|
||||
return None
|
||||
|
||||
def check_script(pathname):
|
||||
s = open(pathname).read()
|
||||
return 'from gomill import' in s
|
||||
|
||||
def find_package(name):
|
||||
try:
|
||||
f, pathname, _ = imp.find_module(name)
|
||||
except ImportError:
|
||||
return None
|
||||
if not isinstance(pathname, str):
|
||||
return None
|
||||
return os.path.realpath(pathname)
|
||||
|
||||
def find_egg_info(package, pathname):
|
||||
dirname = os.path.dirname(pathname)
|
||||
return glob.glob(os.path.join(dirname, "%s-*.egg-info" % package))
|
||||
|
||||
|
||||
class uninstall(Command):
|
||||
description = "uninstall the currently available version"
|
||||
user_options = []
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
files_to_remove = []
|
||||
dirs_to_remove = []
|
||||
|
||||
for script in self.distribution.scripts:
|
||||
pathname = find_script(script)
|
||||
if pathname is None:
|
||||
self.warn("could not find script '%s'" % script)
|
||||
continue
|
||||
if check_script(pathname):
|
||||
files_to_remove.append(pathname)
|
||||
else:
|
||||
self.warn("'%s' does not appear to be a gomill script; "
|
||||
"not removing" % pathname)
|
||||
|
||||
here = os.path.dirname(os.path.realpath(__file__))
|
||||
sys.path = [s for s in sys.path if os.path.realpath(s) != here]
|
||||
|
||||
for package in self.distribution.packages:
|
||||
pathname = find_package(package)
|
||||
if pathname == here:
|
||||
# belt and braces
|
||||
pathname = None
|
||||
if pathname is None:
|
||||
self.warn("could not find package '%s'" % package)
|
||||
continue
|
||||
dirs_to_remove.append(pathname)
|
||||
egg_infos = find_egg_info(package, pathname)
|
||||
if len(egg_infos) > 1:
|
||||
self.warn("multiple .egg-info files; not removing any:\n%s"
|
||||
% "\n".join(egg_infos))
|
||||
egg_info_pathname = None
|
||||
elif len(egg_infos) == 1:
|
||||
pathname = egg_infos[0]
|
||||
if os.path.isdir(pathname):
|
||||
dirs_to_remove.append(pathname)
|
||||
else:
|
||||
files_to_remove.append(pathname)
|
||||
|
||||
for pathname in files_to_remove:
|
||||
self.execute(os.remove, (pathname,), "removing '%s'" % pathname)
|
||||
for pathname in dirs_to_remove:
|
||||
dir_util.remove_tree(pathname, dry_run=self.dry_run)
|
||||
|
||||
cmdclass['uninstall'] = uninstall
|
||||
|
||||
|
||||
GOMILL_URL = "http://mjw.woodcraft.me.uk/gomill/"
|
||||
|
||||
LONG_DESCRIPTION = """\
|
||||
Gomill is a suite of tools, and a Python library, for use in developing and
|
||||
testing Go-playing programs. It is based around the Go Text Protocol (GTP) and
|
||||
the Smart Game Format (SGF).
|
||||
|
||||
The principal tool is the ringmaster, which plays programs against each other
|
||||
and keeps track of the results.
|
||||
|
||||
There is also experimental support for automatically tuning program parameters.
|
||||
|
||||
Download: http://mjw.woodcraft.me.uk/gomill/download/gomill-%(VERSION)s.tar.gz
|
||||
|
||||
Documentation: http://mjw.woodcraft.me.uk/gomill/download/gomill-doc-%(VERSION)s.tar.gz
|
||||
|
||||
Online Documentation: http://mjw.woodcraft.me.uk/gomill/doc/%(VERSION)s/
|
||||
|
||||
Changelog: http://mjw.woodcraft.me.uk/gomill/doc/%(VERSION)s/changes.html
|
||||
|
||||
Git: http://mjw.woodcraft.me.uk/gomill/git/
|
||||
|
||||
Gitweb: http://mjw.woodcraft.me.uk/gitweb/gomill/
|
||||
|
||||
""" % vars()
|
||||
|
||||
setup(name='gomill',
|
||||
version=VERSION,
|
||||
url=GOMILL_URL,
|
||||
download_url="%sdownload/gomill-%s.tar.gz" % (GOMILL_URL, VERSION),
|
||||
description="Tools for testing and tuning Go-playing programs",
|
||||
long_description=LONG_DESCRIPTION,
|
||||
author="Matthew Woodcraft",
|
||||
author_email="matthew@woodcraft.me.uk",
|
||||
packages=['gomill'],
|
||||
scripts=['ringmaster'],
|
||||
cmdclass=cmdclass,
|
||||
classifiers=[
|
||||
"Development Status :: 4 - Beta",
|
||||
"Environment :: Console",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: MIT License",
|
||||
"Natural Language :: English",
|
||||
"Operating System :: POSIX",
|
||||
"Operating System :: MacOS :: MacOS X",
|
||||
"Programming Language :: Python :: 2",
|
||||
"Programming Language :: Python :: 2.5",
|
||||
"Programming Language :: Python :: 2.6",
|
||||
"Programming Language :: Python :: 2.7",
|
||||
"Programming Language :: Python",
|
||||
"Topic :: Games/Entertainment :: Board Games",
|
||||
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||
],
|
||||
keywords="go,baduk,weiqi,gtp,sgf",
|
||||
license="MIT",
|
||||
platforms="POSIX",
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue