From a978409e827c8ff6deda9c734953d1d6967569d2 Mon Sep 17 00:00:00 2001 From: Vince Knight Date: Tue, 19 Mar 2024 09:15:08 +0200 Subject: [PATCH 1/2] Write LICENSE file. --- pyproject.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..5bbc11373 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[build-system] +requires = ["flit_core >=3.2,<4"] +build-backend = "flit_core.buildapi" + +[project] +name = "axelrod" +authors = [{name = "Vincent Knight", email = "knightva@cardiff.ac.uk"}] +readme = "README.rst" +license = {file = "LICENSE.txt"} +classifiers = ["License :: OSI Approved :: MIT License"] +dynamic = ["version", "description"] + +[project.urls] +Home = "https://axelrod.readthedocs.io" From f0ece23e4eb5587bad17b928e407a9cdbd633968 Mon Sep 17 00:00:00 2001 From: Vince Knight Date: Tue, 19 Mar 2024 09:30:21 +0200 Subject: [PATCH 2/2] More to modern packaging setup. @marcharper this is a lazy move to using pyproject.toml with [flit](https://flit.pypa.io). This is the same setup I use for Nashpy so it wasn't much work to throw the files around. This will in no way pass as is: it's a WIP (as you mentioned in our call, this needs the static files to be plugged in etc...). You mentioned that you were going to work on this so happy for what I've thrown here to be ignored (it really just took me 3 minutes) but if you/we/us wanted to continue with this it would still need: - Actually getting the build to work (I'm sure there are broken static links etc); - Documentation: - the development suite uses [`tox`](https://tox.readthedocs.io/) here so we'd need to document that. - there might be some links in the documentation that are broken as I've moved the files to `src/axelrod` and moved the `tests` to their seperate dir. Let me know what you think, I can probably keeping banging rocks together to get the above done :) --- .github/workflows/config.yml | 76 ------------------- .github/workflows/tests.yml | 31 ++++++++ pyproject.toml | 25 +++++- {axelrod => src/axelrod}/__init__.py | 0 {axelrod => src/axelrod}/_strategy_utils.py | 0 {axelrod => src/axelrod}/action.py | 0 {axelrod => src/axelrod}/classifier.py | 0 .../compute_finite_state_machine_memory.py | 0 .../axelrod}/data/all_classifiers.yml | 0 {axelrod => src/axelrod}/data/ann_weights.csv | 0 {axelrod => src/axelrod}/data/pso_gambler.csv | 0 .../axelrod}/deterministic_cache.py | 0 {axelrod => src/axelrod}/ecosystem.py | 0 {axelrod => src/axelrod}/eigen.py | 0 {axelrod => src/axelrod}/evolvable_player.py | 0 {axelrod => src/axelrod}/fingerprint.py | 0 {axelrod => src/axelrod}/game.py | 0 {axelrod => src/axelrod}/graph.py | 0 {axelrod => src/axelrod}/history.py | 0 {axelrod => src/axelrod}/interaction_utils.py | 0 {axelrod => src/axelrod}/load_data_.py | 0 {axelrod => src/axelrod}/makes_use_of.py | 0 {axelrod => src/axelrod}/match.py | 0 {axelrod => src/axelrod}/match_generator.py | 0 {axelrod => src/axelrod}/mock_player.py | 0 {axelrod => src/axelrod}/moran.py | 0 {axelrod => src/axelrod}/player.py | 0 {axelrod => src/axelrod}/plot.py | 0 {axelrod => src/axelrod}/random_.py | 0 {axelrod => src/axelrod}/result_set.py | 0 .../axelrod}/strategies/__init__.py | 0 .../axelrod}/strategies/_filters.py | 0 .../axelrod}/strategies/_strategies.py | 0 .../axelrod}/strategies/adaptive.py | 0 .../axelrod}/strategies/adaptor.py | 0 .../axelrod}/strategies/alternator.py | 0 {axelrod => src/axelrod}/strategies/ann.py | 0 .../axelrod}/strategies/apavlov.py | 0 .../axelrod}/strategies/appeaser.py | 0 .../axelrod}/strategies/averagecopier.py | 0 .../axelrod}/strategies/axelrod_first.py | 0 .../axelrod}/strategies/axelrod_second.py | 0 .../axelrod}/strategies/backstabber.py | 0 .../axelrod}/strategies/better_and_better.py | 0 .../axelrod}/strategies/bush_mosteller.py | 0 .../axelrod}/strategies/calculator.py | 0 .../axelrod}/strategies/cooperator.py | 0 {axelrod => src/axelrod}/strategies/cycler.py | 0 {axelrod => src/axelrod}/strategies/darwin.py | 0 {axelrod => src/axelrod}/strategies/dbs.py | 0 .../axelrod}/strategies/defector.py | 0 .../axelrod}/strategies/doubler.py | 0 .../strategies/finite_state_machines.py | 0 .../axelrod}/strategies/forgiver.py | 0 .../axelrod}/strategies/gambler.py | 0 .../axelrod}/strategies/gobymajority.py | 0 .../axelrod}/strategies/gradualkiller.py | 0 .../axelrod}/strategies/grudger.py | 0 {axelrod => src/axelrod}/strategies/grumpy.py | 0 .../axelrod}/strategies/handshake.py | 0 {axelrod => src/axelrod}/strategies/hmm.py | 0 {axelrod => src/axelrod}/strategies/human.py | 0 {axelrod => src/axelrod}/strategies/hunter.py | 0 .../axelrod}/strategies/inverse.py | 0 .../axelrod}/strategies/lookerup.py | 0 .../strategies/mathematicalconstants.py | 0 .../axelrod}/strategies/memoryone.py | 0 .../axelrod}/strategies/memorytwo.py | 0 {axelrod => src/axelrod}/strategies/meta.py | 0 {axelrod => src/axelrod}/strategies/mutual.py | 0 .../axelrod}/strategies/negation.py | 0 .../axelrod}/strategies/oncebitten.py | 0 {axelrod => src/axelrod}/strategies/prober.py | 0 .../axelrod}/strategies/punisher.py | 0 .../axelrod}/strategies/qlearner.py | 0 {axelrod => src/axelrod}/strategies/rand.py | 0 .../axelrod}/strategies/resurrection.py | 0 .../axelrod}/strategies/retaliate.py | 0 .../axelrod}/strategies/revised_downing.py | 0 .../axelrod}/strategies/selfsteem.py | 0 .../axelrod}/strategies/sequence_player.py | 0 .../axelrod}/strategies/shortmem.py | 0 .../axelrod}/strategies/stalker.py | 0 .../axelrod}/strategies/titfortat.py | 0 .../axelrod}/strategies/verybad.py | 0 .../axelrod}/strategies/worse_and_worse.py | 0 .../axelrod}/strategies/zero_determinant.py | 0 .../axelrod}/strategy_transformers.py | 0 {axelrod => src/axelrod}/tournament.py | 0 {axelrod => src/axelrod}/version.py | 0 {axelrod/tests => tests}/__init__.py | 0 .../tests => tests}/integration/__init__.py | 0 .../integration/test_filtering.py | 0 .../integration/test_matches.py | 0 .../tests => tests}/integration/test_names.py | 0 .../integration/test_sample_tournaments.py | 0 .../integration/test_tournament.py | 0 {axelrod/tests => tests}/property.py | 0 .../tests => tests}/strategies/__init__.py | 0 .../strategies/test_adaptive.py | 0 .../strategies/test_adaptor.py | 0 .../strategies/test_alternator.py | 0 .../tests => tests}/strategies/test_ann.py | 0 .../strategies/test_apavlov.py | 0 .../strategies/test_appeaser.py | 0 .../strategies/test_averagecopier.py | 0 .../strategies/test_axelrod_first.py | 0 .../strategies/test_axelrod_second.py | 0 .../strategies/test_backstabber.py | 0 .../strategies/test_better_and_better.py | 0 .../strategies/test_bush_mosteller.py | 0 .../strategies/test_calculator.py | 0 .../strategies/test_cooperator.py | 0 .../tests => tests}/strategies/test_cycler.py | 0 .../tests => tests}/strategies/test_darwin.py | 0 .../tests => tests}/strategies/test_dbs.py | 0 .../strategies/test_defector.py | 0 .../strategies/test_doubler.py | 0 .../strategies/test_evolvable_player.py | 0 .../strategies/test_finite_state_machines.py | 0 .../strategies/test_forgiver.py | 0 .../strategies/test_gambler.py | 0 .../strategies/test_gobymajority.py | 0 .../strategies/test_gradualkiller.py | 0 .../strategies/test_grudger.py | 0 .../tests => tests}/strategies/test_grumpy.py | 0 .../strategies/test_handshake.py | 0 .../strategies/test_headsup.py | 0 .../tests => tests}/strategies/test_hmm.py | 0 .../tests => tests}/strategies/test_human.py | 0 .../tests => tests}/strategies/test_hunter.py | 0 .../strategies/test_inverse.py | 0 .../strategies/test_lookerup.py | 0 .../strategies/test_mathematicalconstants.py | 0 .../strategies/test_memoryone.py | 0 .../strategies/test_memorytwo.py | 0 .../tests => tests}/strategies/test_meta.py | 0 .../tests => tests}/strategies/test_mutual.py | 0 .../strategies/test_negation.py | 0 .../strategies/test_oncebitten.py | 0 .../tests => tests}/strategies/test_player.py | 0 .../tests => tests}/strategies/test_prober.py | 0 .../strategies/test_punisher.py | 0 .../strategies/test_qlearner.py | 0 .../tests => tests}/strategies/test_rand.py | 0 .../strategies/test_resurrection.py | 0 .../strategies/test_retaliate.py | 0 .../strategies/test_revised_downing.py | 0 .../strategies/test_selfsteem.py | 0 .../strategies/test_sequence_player.py | 0 .../strategies/test_shortmem.py | 0 .../strategies/test_stalker.py | 0 .../strategies/test_titfortat.py | 0 .../strategies/test_verybad.py | 0 .../strategies/test_worse_and_worse.py | 0 .../strategies/test_zero_determinant.py | 0 {axelrod/tests => tests}/unit/__init__.py | 0 {axelrod/tests => tests}/unit/test_actions.py | 0 .../unit/test_classification.py | 0 ...est_compute_finite_state_machine_memory.py | 0 .../unit/test_deterministic_cache.py | 0 .../tests => tests}/unit/test_ecosystem.py | 0 {axelrod/tests => tests}/unit/test_eigen.py | 0 {axelrod/tests => tests}/unit/test_filters.py | 0 .../tests => tests}/unit/test_fingerprint.py | 0 {axelrod/tests => tests}/unit/test_game.py | 0 {axelrod/tests => tests}/unit/test_graph.py | 0 {axelrod/tests => tests}/unit/test_history.py | 0 .../unit/test_interaction_utils.py | 0 .../tests => tests}/unit/test_load_data.py | 0 .../tests => tests}/unit/test_makes_use_of.py | 0 {axelrod/tests => tests}/unit/test_match.py | 0 .../unit/test_match_generator.py | 0 .../tests => tests}/unit/test_mock_player.py | 0 {axelrod/tests => tests}/unit/test_moran.py | 0 .../tests => tests}/unit/test_pickling.py | 0 {axelrod/tests => tests}/unit/test_plot.py | 0 .../tests => tests}/unit/test_property.py | 0 {axelrod/tests => tests}/unit/test_random_.py | 0 .../tests => tests}/unit/test_resultset.py | 0 .../unit/test_strategy_transformers.py | 0 .../unit/test_strategy_utils.py | 0 .../tests => tests}/unit/test_tournament.py | 0 {axelrod/tests => tests}/unit/test_version.py | 0 tox.ini | 43 +++++++++++ 185 files changed, 98 insertions(+), 77 deletions(-) delete mode 100644 .github/workflows/config.yml create mode 100644 .github/workflows/tests.yml rename {axelrod => src/axelrod}/__init__.py (100%) rename {axelrod => src/axelrod}/_strategy_utils.py (100%) rename {axelrod => src/axelrod}/action.py (100%) rename {axelrod => src/axelrod}/classifier.py (100%) rename {axelrod => src/axelrod}/compute_finite_state_machine_memory.py (100%) rename {axelrod => src/axelrod}/data/all_classifiers.yml (100%) rename {axelrod => src/axelrod}/data/ann_weights.csv (100%) rename {axelrod => src/axelrod}/data/pso_gambler.csv (100%) rename {axelrod => src/axelrod}/deterministic_cache.py (100%) rename {axelrod => src/axelrod}/ecosystem.py (100%) rename {axelrod => src/axelrod}/eigen.py (100%) rename {axelrod => src/axelrod}/evolvable_player.py (100%) rename {axelrod => src/axelrod}/fingerprint.py (100%) rename {axelrod => src/axelrod}/game.py (100%) rename {axelrod => src/axelrod}/graph.py (100%) rename {axelrod => src/axelrod}/history.py (100%) rename {axelrod => src/axelrod}/interaction_utils.py (100%) rename {axelrod => src/axelrod}/load_data_.py (100%) rename {axelrod => src/axelrod}/makes_use_of.py (100%) rename {axelrod => src/axelrod}/match.py (100%) rename {axelrod => src/axelrod}/match_generator.py (100%) rename {axelrod => src/axelrod}/mock_player.py (100%) rename {axelrod => src/axelrod}/moran.py (100%) rename {axelrod => src/axelrod}/player.py (100%) rename {axelrod => src/axelrod}/plot.py (100%) rename {axelrod => src/axelrod}/random_.py (100%) rename {axelrod => src/axelrod}/result_set.py (100%) rename {axelrod => src/axelrod}/strategies/__init__.py (100%) rename {axelrod => src/axelrod}/strategies/_filters.py (100%) rename {axelrod => src/axelrod}/strategies/_strategies.py (100%) rename {axelrod => src/axelrod}/strategies/adaptive.py (100%) rename {axelrod => src/axelrod}/strategies/adaptor.py (100%) rename {axelrod => src/axelrod}/strategies/alternator.py (100%) rename {axelrod => src/axelrod}/strategies/ann.py (100%) rename {axelrod => src/axelrod}/strategies/apavlov.py (100%) rename {axelrod => src/axelrod}/strategies/appeaser.py (100%) rename {axelrod => src/axelrod}/strategies/averagecopier.py (100%) rename {axelrod => src/axelrod}/strategies/axelrod_first.py (100%) rename {axelrod => src/axelrod}/strategies/axelrod_second.py (100%) rename {axelrod => src/axelrod}/strategies/backstabber.py (100%) rename {axelrod => src/axelrod}/strategies/better_and_better.py (100%) rename {axelrod => src/axelrod}/strategies/bush_mosteller.py (100%) rename {axelrod => src/axelrod}/strategies/calculator.py (100%) rename {axelrod => src/axelrod}/strategies/cooperator.py (100%) rename {axelrod => src/axelrod}/strategies/cycler.py (100%) rename {axelrod => src/axelrod}/strategies/darwin.py (100%) rename {axelrod => src/axelrod}/strategies/dbs.py (100%) rename {axelrod => src/axelrod}/strategies/defector.py (100%) rename {axelrod => src/axelrod}/strategies/doubler.py (100%) rename {axelrod => src/axelrod}/strategies/finite_state_machines.py (100%) rename {axelrod => src/axelrod}/strategies/forgiver.py (100%) rename {axelrod => src/axelrod}/strategies/gambler.py (100%) rename {axelrod => src/axelrod}/strategies/gobymajority.py (100%) rename {axelrod => src/axelrod}/strategies/gradualkiller.py (100%) rename {axelrod => src/axelrod}/strategies/grudger.py (100%) rename {axelrod => src/axelrod}/strategies/grumpy.py (100%) rename {axelrod => src/axelrod}/strategies/handshake.py (100%) rename {axelrod => src/axelrod}/strategies/hmm.py (100%) rename {axelrod => src/axelrod}/strategies/human.py (100%) rename {axelrod => src/axelrod}/strategies/hunter.py (100%) rename {axelrod => src/axelrod}/strategies/inverse.py (100%) rename {axelrod => src/axelrod}/strategies/lookerup.py (100%) rename {axelrod => src/axelrod}/strategies/mathematicalconstants.py (100%) rename {axelrod => src/axelrod}/strategies/memoryone.py (100%) rename {axelrod => src/axelrod}/strategies/memorytwo.py (100%) rename {axelrod => src/axelrod}/strategies/meta.py (100%) rename {axelrod => src/axelrod}/strategies/mutual.py (100%) rename {axelrod => src/axelrod}/strategies/negation.py (100%) rename {axelrod => src/axelrod}/strategies/oncebitten.py (100%) rename {axelrod => src/axelrod}/strategies/prober.py (100%) rename {axelrod => src/axelrod}/strategies/punisher.py (100%) rename {axelrod => src/axelrod}/strategies/qlearner.py (100%) rename {axelrod => src/axelrod}/strategies/rand.py (100%) rename {axelrod => src/axelrod}/strategies/resurrection.py (100%) rename {axelrod => src/axelrod}/strategies/retaliate.py (100%) rename {axelrod => src/axelrod}/strategies/revised_downing.py (100%) rename {axelrod => src/axelrod}/strategies/selfsteem.py (100%) rename {axelrod => src/axelrod}/strategies/sequence_player.py (100%) rename {axelrod => src/axelrod}/strategies/shortmem.py (100%) rename {axelrod => src/axelrod}/strategies/stalker.py (100%) rename {axelrod => src/axelrod}/strategies/titfortat.py (100%) rename {axelrod => src/axelrod}/strategies/verybad.py (100%) rename {axelrod => src/axelrod}/strategies/worse_and_worse.py (100%) rename {axelrod => src/axelrod}/strategies/zero_determinant.py (100%) rename {axelrod => src/axelrod}/strategy_transformers.py (100%) rename {axelrod => src/axelrod}/tournament.py (100%) rename {axelrod => src/axelrod}/version.py (100%) rename {axelrod/tests => tests}/__init__.py (100%) rename {axelrod/tests => tests}/integration/__init__.py (100%) rename {axelrod/tests => tests}/integration/test_filtering.py (100%) rename {axelrod/tests => tests}/integration/test_matches.py (100%) rename {axelrod/tests => tests}/integration/test_names.py (100%) rename {axelrod/tests => tests}/integration/test_sample_tournaments.py (100%) rename {axelrod/tests => tests}/integration/test_tournament.py (100%) rename {axelrod/tests => tests}/property.py (100%) rename {axelrod/tests => tests}/strategies/__init__.py (100%) rename {axelrod/tests => tests}/strategies/test_adaptive.py (100%) rename {axelrod/tests => tests}/strategies/test_adaptor.py (100%) rename {axelrod/tests => tests}/strategies/test_alternator.py (100%) rename {axelrod/tests => tests}/strategies/test_ann.py (100%) rename {axelrod/tests => tests}/strategies/test_apavlov.py (100%) rename {axelrod/tests => tests}/strategies/test_appeaser.py (100%) rename {axelrod/tests => tests}/strategies/test_averagecopier.py (100%) rename {axelrod/tests => tests}/strategies/test_axelrod_first.py (100%) rename {axelrod/tests => tests}/strategies/test_axelrod_second.py (100%) rename {axelrod/tests => tests}/strategies/test_backstabber.py (100%) rename {axelrod/tests => tests}/strategies/test_better_and_better.py (100%) rename {axelrod/tests => tests}/strategies/test_bush_mosteller.py (100%) rename {axelrod/tests => tests}/strategies/test_calculator.py (100%) rename {axelrod/tests => tests}/strategies/test_cooperator.py (100%) rename {axelrod/tests => tests}/strategies/test_cycler.py (100%) rename {axelrod/tests => tests}/strategies/test_darwin.py (100%) rename {axelrod/tests => tests}/strategies/test_dbs.py (100%) rename {axelrod/tests => tests}/strategies/test_defector.py (100%) rename {axelrod/tests => tests}/strategies/test_doubler.py (100%) rename {axelrod/tests => tests}/strategies/test_evolvable_player.py (100%) rename {axelrod/tests => tests}/strategies/test_finite_state_machines.py (100%) rename {axelrod/tests => tests}/strategies/test_forgiver.py (100%) rename {axelrod/tests => tests}/strategies/test_gambler.py (100%) rename {axelrod/tests => tests}/strategies/test_gobymajority.py (100%) rename {axelrod/tests => tests}/strategies/test_gradualkiller.py (100%) rename {axelrod/tests => tests}/strategies/test_grudger.py (100%) rename {axelrod/tests => tests}/strategies/test_grumpy.py (100%) rename {axelrod/tests => tests}/strategies/test_handshake.py (100%) rename {axelrod/tests => tests}/strategies/test_headsup.py (100%) rename {axelrod/tests => tests}/strategies/test_hmm.py (100%) rename {axelrod/tests => tests}/strategies/test_human.py (100%) rename {axelrod/tests => tests}/strategies/test_hunter.py (100%) rename {axelrod/tests => tests}/strategies/test_inverse.py (100%) rename {axelrod/tests => tests}/strategies/test_lookerup.py (100%) rename {axelrod/tests => tests}/strategies/test_mathematicalconstants.py (100%) rename {axelrod/tests => tests}/strategies/test_memoryone.py (100%) rename {axelrod/tests => tests}/strategies/test_memorytwo.py (100%) rename {axelrod/tests => tests}/strategies/test_meta.py (100%) rename {axelrod/tests => tests}/strategies/test_mutual.py (100%) rename {axelrod/tests => tests}/strategies/test_negation.py (100%) rename {axelrod/tests => tests}/strategies/test_oncebitten.py (100%) rename {axelrod/tests => tests}/strategies/test_player.py (100%) rename {axelrod/tests => tests}/strategies/test_prober.py (100%) rename {axelrod/tests => tests}/strategies/test_punisher.py (100%) rename {axelrod/tests => tests}/strategies/test_qlearner.py (100%) rename {axelrod/tests => tests}/strategies/test_rand.py (100%) rename {axelrod/tests => tests}/strategies/test_resurrection.py (100%) rename {axelrod/tests => tests}/strategies/test_retaliate.py (100%) rename {axelrod/tests => tests}/strategies/test_revised_downing.py (100%) rename {axelrod/tests => tests}/strategies/test_selfsteem.py (100%) rename {axelrod/tests => tests}/strategies/test_sequence_player.py (100%) rename {axelrod/tests => tests}/strategies/test_shortmem.py (100%) rename {axelrod/tests => tests}/strategies/test_stalker.py (100%) rename {axelrod/tests => tests}/strategies/test_titfortat.py (100%) rename {axelrod/tests => tests}/strategies/test_verybad.py (100%) rename {axelrod/tests => tests}/strategies/test_worse_and_worse.py (100%) rename {axelrod/tests => tests}/strategies/test_zero_determinant.py (100%) rename {axelrod/tests => tests}/unit/__init__.py (100%) rename {axelrod/tests => tests}/unit/test_actions.py (100%) rename {axelrod/tests => tests}/unit/test_classification.py (100%) rename {axelrod/tests => tests}/unit/test_compute_finite_state_machine_memory.py (100%) rename {axelrod/tests => tests}/unit/test_deterministic_cache.py (100%) rename {axelrod/tests => tests}/unit/test_ecosystem.py (100%) rename {axelrod/tests => tests}/unit/test_eigen.py (100%) rename {axelrod/tests => tests}/unit/test_filters.py (100%) rename {axelrod/tests => tests}/unit/test_fingerprint.py (100%) rename {axelrod/tests => tests}/unit/test_game.py (100%) rename {axelrod/tests => tests}/unit/test_graph.py (100%) rename {axelrod/tests => tests}/unit/test_history.py (100%) rename {axelrod/tests => tests}/unit/test_interaction_utils.py (100%) rename {axelrod/tests => tests}/unit/test_load_data.py (100%) rename {axelrod/tests => tests}/unit/test_makes_use_of.py (100%) rename {axelrod/tests => tests}/unit/test_match.py (100%) rename {axelrod/tests => tests}/unit/test_match_generator.py (100%) rename {axelrod/tests => tests}/unit/test_mock_player.py (100%) rename {axelrod/tests => tests}/unit/test_moran.py (100%) rename {axelrod/tests => tests}/unit/test_pickling.py (100%) rename {axelrod/tests => tests}/unit/test_plot.py (100%) rename {axelrod/tests => tests}/unit/test_property.py (100%) rename {axelrod/tests => tests}/unit/test_random_.py (100%) rename {axelrod/tests => tests}/unit/test_resultset.py (100%) rename {axelrod/tests => tests}/unit/test_strategy_transformers.py (100%) rename {axelrod/tests => tests}/unit/test_strategy_utils.py (100%) rename {axelrod/tests => tests}/unit/test_tournament.py (100%) rename {axelrod/tests => tests}/unit/test_version.py (100%) create mode 100644 tox.ini diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml deleted file mode 100644 index 5826a7784..000000000 --- a/.github/workflows/config.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: CI - -on: - push: - pull_request: - # Run weekly at 00:00 on Sunday. - schedule: - - cron: '0 0 * * 0' - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - max-parallel: 4 - matrix: - os: [ubuntu-latest, windows-latest] - python-version: ["3.9", "3.10", "3.11"] - - steps: - - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install -r requirements/development.txt - - name: Run tests - run: | - python -m pip install coverage - coverage run --source=axelrod -m unittest discover - - name: Report coverage - run: | - coverage report -m --fail-under=100 - - name: Check that documentation builds - run: | - python -m pip install sphinx - python -m pip install sphinx_rtd_theme - python -m pip install mock - python -m pip install numpy - cd docs; make clean; make html; cd ..; - - name: Run doctests - run: | - python doctests.py - - name: Check that all strategies are indexed - run: | - python run_strategy_indexer.py - - name: Check that strategies are added to axelrod.all_strategies - run: | - python -m pip install pylint - python -m pylint --disable=all --enable=unused-import axelrod/strategies/_strategies.py - - name: Check that installs - run: | - python setup.py install - cd .. - python -c "import axelrod" - - format-check: - needs: build - runs-on: ${{ matrix.os }} - strategy: - max-parallel: 4 - matrix: - os: [ubuntu-latest] - python-version: ["3.11"] - steps: - - name: Check imports are sorted - run: | - python -m pip install "isort==4.3.21" - python -m isort --check-only --recursive axelrod/. - - name: Check format - run: | - python -m pip install black=="22.10.0" - python -m black -l 80 . --check - diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..92c740362 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,31 @@ +name: CI + +on: [push, pull_request] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + max-parallel: 4 + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + python-version: ["3.11", "3.12"] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: update pip + run: | + python -m pip install --upgrade pip + + - name: install tox + run: | + python -m pip install tox tox-gh-actions + + - name: run tox + run: | + python -m tox diff --git a/pyproject.toml b/pyproject.toml index 5bbc11373..6f78b2891 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,11 +4,34 @@ build-backend = "flit_core.buildapi" [project] name = "axelrod" -authors = [{name = "Vincent Knight", email = "knightva@cardiff.ac.uk"}] +authors = [ + {name = "Vincent Knight", email = "knightva@cardiff.ac.uk"}, + {name = "Marc Harper", email = "marc.harper@gmail.com"}, + {name = "Nikoleta Glynatsi", email = "glynatsi@evolbio.mpg.de"}, + {name = "Owen Campbell", email = "owen.campbell@empiria.co.uk"}, + {name = "TJ Gaffney", email = "gaffney.tj@gmail.com"}, +] readme = "README.rst" license = {file = "LICENSE.txt"} classifiers = ["License :: OSI Approved :: MIT License"] dynamic = ["version", "description"] +requires-python= ">=3.11" +requires = [ + "cloudpickle>=0.2.2", + "fsspec>=0.6.0", + "toolz>=0.8.2", + "dask>=2.9.2", + "matplotlib>=3.0.3", + "numpy>=1.17.4", + "pandas>=1.0.0", + "pyyaml>=5.1", + "scipy>=1.3.3", + "tqdm>=4.39.0", +] + [project.urls] Home = "https://axelrod.readthedocs.io" + +[tool.flit.metadata.requires-extra] +doc = ["sphinx==6.2.1", "sphinx-rtd-theme", "sphinx-togglebutton", "matplotlib", "sphinxcontrib.mermaid"] diff --git a/axelrod/__init__.py b/src/axelrod/__init__.py similarity index 100% rename from axelrod/__init__.py rename to src/axelrod/__init__.py diff --git a/axelrod/_strategy_utils.py b/src/axelrod/_strategy_utils.py similarity index 100% rename from axelrod/_strategy_utils.py rename to src/axelrod/_strategy_utils.py diff --git a/axelrod/action.py b/src/axelrod/action.py similarity index 100% rename from axelrod/action.py rename to src/axelrod/action.py diff --git a/axelrod/classifier.py b/src/axelrod/classifier.py similarity index 100% rename from axelrod/classifier.py rename to src/axelrod/classifier.py diff --git a/axelrod/compute_finite_state_machine_memory.py b/src/axelrod/compute_finite_state_machine_memory.py similarity index 100% rename from axelrod/compute_finite_state_machine_memory.py rename to src/axelrod/compute_finite_state_machine_memory.py diff --git a/axelrod/data/all_classifiers.yml b/src/axelrod/data/all_classifiers.yml similarity index 100% rename from axelrod/data/all_classifiers.yml rename to src/axelrod/data/all_classifiers.yml diff --git a/axelrod/data/ann_weights.csv b/src/axelrod/data/ann_weights.csv similarity index 100% rename from axelrod/data/ann_weights.csv rename to src/axelrod/data/ann_weights.csv diff --git a/axelrod/data/pso_gambler.csv b/src/axelrod/data/pso_gambler.csv similarity index 100% rename from axelrod/data/pso_gambler.csv rename to src/axelrod/data/pso_gambler.csv diff --git a/axelrod/deterministic_cache.py b/src/axelrod/deterministic_cache.py similarity index 100% rename from axelrod/deterministic_cache.py rename to src/axelrod/deterministic_cache.py diff --git a/axelrod/ecosystem.py b/src/axelrod/ecosystem.py similarity index 100% rename from axelrod/ecosystem.py rename to src/axelrod/ecosystem.py diff --git a/axelrod/eigen.py b/src/axelrod/eigen.py similarity index 100% rename from axelrod/eigen.py rename to src/axelrod/eigen.py diff --git a/axelrod/evolvable_player.py b/src/axelrod/evolvable_player.py similarity index 100% rename from axelrod/evolvable_player.py rename to src/axelrod/evolvable_player.py diff --git a/axelrod/fingerprint.py b/src/axelrod/fingerprint.py similarity index 100% rename from axelrod/fingerprint.py rename to src/axelrod/fingerprint.py diff --git a/axelrod/game.py b/src/axelrod/game.py similarity index 100% rename from axelrod/game.py rename to src/axelrod/game.py diff --git a/axelrod/graph.py b/src/axelrod/graph.py similarity index 100% rename from axelrod/graph.py rename to src/axelrod/graph.py diff --git a/axelrod/history.py b/src/axelrod/history.py similarity index 100% rename from axelrod/history.py rename to src/axelrod/history.py diff --git a/axelrod/interaction_utils.py b/src/axelrod/interaction_utils.py similarity index 100% rename from axelrod/interaction_utils.py rename to src/axelrod/interaction_utils.py diff --git a/axelrod/load_data_.py b/src/axelrod/load_data_.py similarity index 100% rename from axelrod/load_data_.py rename to src/axelrod/load_data_.py diff --git a/axelrod/makes_use_of.py b/src/axelrod/makes_use_of.py similarity index 100% rename from axelrod/makes_use_of.py rename to src/axelrod/makes_use_of.py diff --git a/axelrod/match.py b/src/axelrod/match.py similarity index 100% rename from axelrod/match.py rename to src/axelrod/match.py diff --git a/axelrod/match_generator.py b/src/axelrod/match_generator.py similarity index 100% rename from axelrod/match_generator.py rename to src/axelrod/match_generator.py diff --git a/axelrod/mock_player.py b/src/axelrod/mock_player.py similarity index 100% rename from axelrod/mock_player.py rename to src/axelrod/mock_player.py diff --git a/axelrod/moran.py b/src/axelrod/moran.py similarity index 100% rename from axelrod/moran.py rename to src/axelrod/moran.py diff --git a/axelrod/player.py b/src/axelrod/player.py similarity index 100% rename from axelrod/player.py rename to src/axelrod/player.py diff --git a/axelrod/plot.py b/src/axelrod/plot.py similarity index 100% rename from axelrod/plot.py rename to src/axelrod/plot.py diff --git a/axelrod/random_.py b/src/axelrod/random_.py similarity index 100% rename from axelrod/random_.py rename to src/axelrod/random_.py diff --git a/axelrod/result_set.py b/src/axelrod/result_set.py similarity index 100% rename from axelrod/result_set.py rename to src/axelrod/result_set.py diff --git a/axelrod/strategies/__init__.py b/src/axelrod/strategies/__init__.py similarity index 100% rename from axelrod/strategies/__init__.py rename to src/axelrod/strategies/__init__.py diff --git a/axelrod/strategies/_filters.py b/src/axelrod/strategies/_filters.py similarity index 100% rename from axelrod/strategies/_filters.py rename to src/axelrod/strategies/_filters.py diff --git a/axelrod/strategies/_strategies.py b/src/axelrod/strategies/_strategies.py similarity index 100% rename from axelrod/strategies/_strategies.py rename to src/axelrod/strategies/_strategies.py diff --git a/axelrod/strategies/adaptive.py b/src/axelrod/strategies/adaptive.py similarity index 100% rename from axelrod/strategies/adaptive.py rename to src/axelrod/strategies/adaptive.py diff --git a/axelrod/strategies/adaptor.py b/src/axelrod/strategies/adaptor.py similarity index 100% rename from axelrod/strategies/adaptor.py rename to src/axelrod/strategies/adaptor.py diff --git a/axelrod/strategies/alternator.py b/src/axelrod/strategies/alternator.py similarity index 100% rename from axelrod/strategies/alternator.py rename to src/axelrod/strategies/alternator.py diff --git a/axelrod/strategies/ann.py b/src/axelrod/strategies/ann.py similarity index 100% rename from axelrod/strategies/ann.py rename to src/axelrod/strategies/ann.py diff --git a/axelrod/strategies/apavlov.py b/src/axelrod/strategies/apavlov.py similarity index 100% rename from axelrod/strategies/apavlov.py rename to src/axelrod/strategies/apavlov.py diff --git a/axelrod/strategies/appeaser.py b/src/axelrod/strategies/appeaser.py similarity index 100% rename from axelrod/strategies/appeaser.py rename to src/axelrod/strategies/appeaser.py diff --git a/axelrod/strategies/averagecopier.py b/src/axelrod/strategies/averagecopier.py similarity index 100% rename from axelrod/strategies/averagecopier.py rename to src/axelrod/strategies/averagecopier.py diff --git a/axelrod/strategies/axelrod_first.py b/src/axelrod/strategies/axelrod_first.py similarity index 100% rename from axelrod/strategies/axelrod_first.py rename to src/axelrod/strategies/axelrod_first.py diff --git a/axelrod/strategies/axelrod_second.py b/src/axelrod/strategies/axelrod_second.py similarity index 100% rename from axelrod/strategies/axelrod_second.py rename to src/axelrod/strategies/axelrod_second.py diff --git a/axelrod/strategies/backstabber.py b/src/axelrod/strategies/backstabber.py similarity index 100% rename from axelrod/strategies/backstabber.py rename to src/axelrod/strategies/backstabber.py diff --git a/axelrod/strategies/better_and_better.py b/src/axelrod/strategies/better_and_better.py similarity index 100% rename from axelrod/strategies/better_and_better.py rename to src/axelrod/strategies/better_and_better.py diff --git a/axelrod/strategies/bush_mosteller.py b/src/axelrod/strategies/bush_mosteller.py similarity index 100% rename from axelrod/strategies/bush_mosteller.py rename to src/axelrod/strategies/bush_mosteller.py diff --git a/axelrod/strategies/calculator.py b/src/axelrod/strategies/calculator.py similarity index 100% rename from axelrod/strategies/calculator.py rename to src/axelrod/strategies/calculator.py diff --git a/axelrod/strategies/cooperator.py b/src/axelrod/strategies/cooperator.py similarity index 100% rename from axelrod/strategies/cooperator.py rename to src/axelrod/strategies/cooperator.py diff --git a/axelrod/strategies/cycler.py b/src/axelrod/strategies/cycler.py similarity index 100% rename from axelrod/strategies/cycler.py rename to src/axelrod/strategies/cycler.py diff --git a/axelrod/strategies/darwin.py b/src/axelrod/strategies/darwin.py similarity index 100% rename from axelrod/strategies/darwin.py rename to src/axelrod/strategies/darwin.py diff --git a/axelrod/strategies/dbs.py b/src/axelrod/strategies/dbs.py similarity index 100% rename from axelrod/strategies/dbs.py rename to src/axelrod/strategies/dbs.py diff --git a/axelrod/strategies/defector.py b/src/axelrod/strategies/defector.py similarity index 100% rename from axelrod/strategies/defector.py rename to src/axelrod/strategies/defector.py diff --git a/axelrod/strategies/doubler.py b/src/axelrod/strategies/doubler.py similarity index 100% rename from axelrod/strategies/doubler.py rename to src/axelrod/strategies/doubler.py diff --git a/axelrod/strategies/finite_state_machines.py b/src/axelrod/strategies/finite_state_machines.py similarity index 100% rename from axelrod/strategies/finite_state_machines.py rename to src/axelrod/strategies/finite_state_machines.py diff --git a/axelrod/strategies/forgiver.py b/src/axelrod/strategies/forgiver.py similarity index 100% rename from axelrod/strategies/forgiver.py rename to src/axelrod/strategies/forgiver.py diff --git a/axelrod/strategies/gambler.py b/src/axelrod/strategies/gambler.py similarity index 100% rename from axelrod/strategies/gambler.py rename to src/axelrod/strategies/gambler.py diff --git a/axelrod/strategies/gobymajority.py b/src/axelrod/strategies/gobymajority.py similarity index 100% rename from axelrod/strategies/gobymajority.py rename to src/axelrod/strategies/gobymajority.py diff --git a/axelrod/strategies/gradualkiller.py b/src/axelrod/strategies/gradualkiller.py similarity index 100% rename from axelrod/strategies/gradualkiller.py rename to src/axelrod/strategies/gradualkiller.py diff --git a/axelrod/strategies/grudger.py b/src/axelrod/strategies/grudger.py similarity index 100% rename from axelrod/strategies/grudger.py rename to src/axelrod/strategies/grudger.py diff --git a/axelrod/strategies/grumpy.py b/src/axelrod/strategies/grumpy.py similarity index 100% rename from axelrod/strategies/grumpy.py rename to src/axelrod/strategies/grumpy.py diff --git a/axelrod/strategies/handshake.py b/src/axelrod/strategies/handshake.py similarity index 100% rename from axelrod/strategies/handshake.py rename to src/axelrod/strategies/handshake.py diff --git a/axelrod/strategies/hmm.py b/src/axelrod/strategies/hmm.py similarity index 100% rename from axelrod/strategies/hmm.py rename to src/axelrod/strategies/hmm.py diff --git a/axelrod/strategies/human.py b/src/axelrod/strategies/human.py similarity index 100% rename from axelrod/strategies/human.py rename to src/axelrod/strategies/human.py diff --git a/axelrod/strategies/hunter.py b/src/axelrod/strategies/hunter.py similarity index 100% rename from axelrod/strategies/hunter.py rename to src/axelrod/strategies/hunter.py diff --git a/axelrod/strategies/inverse.py b/src/axelrod/strategies/inverse.py similarity index 100% rename from axelrod/strategies/inverse.py rename to src/axelrod/strategies/inverse.py diff --git a/axelrod/strategies/lookerup.py b/src/axelrod/strategies/lookerup.py similarity index 100% rename from axelrod/strategies/lookerup.py rename to src/axelrod/strategies/lookerup.py diff --git a/axelrod/strategies/mathematicalconstants.py b/src/axelrod/strategies/mathematicalconstants.py similarity index 100% rename from axelrod/strategies/mathematicalconstants.py rename to src/axelrod/strategies/mathematicalconstants.py diff --git a/axelrod/strategies/memoryone.py b/src/axelrod/strategies/memoryone.py similarity index 100% rename from axelrod/strategies/memoryone.py rename to src/axelrod/strategies/memoryone.py diff --git a/axelrod/strategies/memorytwo.py b/src/axelrod/strategies/memorytwo.py similarity index 100% rename from axelrod/strategies/memorytwo.py rename to src/axelrod/strategies/memorytwo.py diff --git a/axelrod/strategies/meta.py b/src/axelrod/strategies/meta.py similarity index 100% rename from axelrod/strategies/meta.py rename to src/axelrod/strategies/meta.py diff --git a/axelrod/strategies/mutual.py b/src/axelrod/strategies/mutual.py similarity index 100% rename from axelrod/strategies/mutual.py rename to src/axelrod/strategies/mutual.py diff --git a/axelrod/strategies/negation.py b/src/axelrod/strategies/negation.py similarity index 100% rename from axelrod/strategies/negation.py rename to src/axelrod/strategies/negation.py diff --git a/axelrod/strategies/oncebitten.py b/src/axelrod/strategies/oncebitten.py similarity index 100% rename from axelrod/strategies/oncebitten.py rename to src/axelrod/strategies/oncebitten.py diff --git a/axelrod/strategies/prober.py b/src/axelrod/strategies/prober.py similarity index 100% rename from axelrod/strategies/prober.py rename to src/axelrod/strategies/prober.py diff --git a/axelrod/strategies/punisher.py b/src/axelrod/strategies/punisher.py similarity index 100% rename from axelrod/strategies/punisher.py rename to src/axelrod/strategies/punisher.py diff --git a/axelrod/strategies/qlearner.py b/src/axelrod/strategies/qlearner.py similarity index 100% rename from axelrod/strategies/qlearner.py rename to src/axelrod/strategies/qlearner.py diff --git a/axelrod/strategies/rand.py b/src/axelrod/strategies/rand.py similarity index 100% rename from axelrod/strategies/rand.py rename to src/axelrod/strategies/rand.py diff --git a/axelrod/strategies/resurrection.py b/src/axelrod/strategies/resurrection.py similarity index 100% rename from axelrod/strategies/resurrection.py rename to src/axelrod/strategies/resurrection.py diff --git a/axelrod/strategies/retaliate.py b/src/axelrod/strategies/retaliate.py similarity index 100% rename from axelrod/strategies/retaliate.py rename to src/axelrod/strategies/retaliate.py diff --git a/axelrod/strategies/revised_downing.py b/src/axelrod/strategies/revised_downing.py similarity index 100% rename from axelrod/strategies/revised_downing.py rename to src/axelrod/strategies/revised_downing.py diff --git a/axelrod/strategies/selfsteem.py b/src/axelrod/strategies/selfsteem.py similarity index 100% rename from axelrod/strategies/selfsteem.py rename to src/axelrod/strategies/selfsteem.py diff --git a/axelrod/strategies/sequence_player.py b/src/axelrod/strategies/sequence_player.py similarity index 100% rename from axelrod/strategies/sequence_player.py rename to src/axelrod/strategies/sequence_player.py diff --git a/axelrod/strategies/shortmem.py b/src/axelrod/strategies/shortmem.py similarity index 100% rename from axelrod/strategies/shortmem.py rename to src/axelrod/strategies/shortmem.py diff --git a/axelrod/strategies/stalker.py b/src/axelrod/strategies/stalker.py similarity index 100% rename from axelrod/strategies/stalker.py rename to src/axelrod/strategies/stalker.py diff --git a/axelrod/strategies/titfortat.py b/src/axelrod/strategies/titfortat.py similarity index 100% rename from axelrod/strategies/titfortat.py rename to src/axelrod/strategies/titfortat.py diff --git a/axelrod/strategies/verybad.py b/src/axelrod/strategies/verybad.py similarity index 100% rename from axelrod/strategies/verybad.py rename to src/axelrod/strategies/verybad.py diff --git a/axelrod/strategies/worse_and_worse.py b/src/axelrod/strategies/worse_and_worse.py similarity index 100% rename from axelrod/strategies/worse_and_worse.py rename to src/axelrod/strategies/worse_and_worse.py diff --git a/axelrod/strategies/zero_determinant.py b/src/axelrod/strategies/zero_determinant.py similarity index 100% rename from axelrod/strategies/zero_determinant.py rename to src/axelrod/strategies/zero_determinant.py diff --git a/axelrod/strategy_transformers.py b/src/axelrod/strategy_transformers.py similarity index 100% rename from axelrod/strategy_transformers.py rename to src/axelrod/strategy_transformers.py diff --git a/axelrod/tournament.py b/src/axelrod/tournament.py similarity index 100% rename from axelrod/tournament.py rename to src/axelrod/tournament.py diff --git a/axelrod/version.py b/src/axelrod/version.py similarity index 100% rename from axelrod/version.py rename to src/axelrod/version.py diff --git a/axelrod/tests/__init__.py b/tests/__init__.py similarity index 100% rename from axelrod/tests/__init__.py rename to tests/__init__.py diff --git a/axelrod/tests/integration/__init__.py b/tests/integration/__init__.py similarity index 100% rename from axelrod/tests/integration/__init__.py rename to tests/integration/__init__.py diff --git a/axelrod/tests/integration/test_filtering.py b/tests/integration/test_filtering.py similarity index 100% rename from axelrod/tests/integration/test_filtering.py rename to tests/integration/test_filtering.py diff --git a/axelrod/tests/integration/test_matches.py b/tests/integration/test_matches.py similarity index 100% rename from axelrod/tests/integration/test_matches.py rename to tests/integration/test_matches.py diff --git a/axelrod/tests/integration/test_names.py b/tests/integration/test_names.py similarity index 100% rename from axelrod/tests/integration/test_names.py rename to tests/integration/test_names.py diff --git a/axelrod/tests/integration/test_sample_tournaments.py b/tests/integration/test_sample_tournaments.py similarity index 100% rename from axelrod/tests/integration/test_sample_tournaments.py rename to tests/integration/test_sample_tournaments.py diff --git a/axelrod/tests/integration/test_tournament.py b/tests/integration/test_tournament.py similarity index 100% rename from axelrod/tests/integration/test_tournament.py rename to tests/integration/test_tournament.py diff --git a/axelrod/tests/property.py b/tests/property.py similarity index 100% rename from axelrod/tests/property.py rename to tests/property.py diff --git a/axelrod/tests/strategies/__init__.py b/tests/strategies/__init__.py similarity index 100% rename from axelrod/tests/strategies/__init__.py rename to tests/strategies/__init__.py diff --git a/axelrod/tests/strategies/test_adaptive.py b/tests/strategies/test_adaptive.py similarity index 100% rename from axelrod/tests/strategies/test_adaptive.py rename to tests/strategies/test_adaptive.py diff --git a/axelrod/tests/strategies/test_adaptor.py b/tests/strategies/test_adaptor.py similarity index 100% rename from axelrod/tests/strategies/test_adaptor.py rename to tests/strategies/test_adaptor.py diff --git a/axelrod/tests/strategies/test_alternator.py b/tests/strategies/test_alternator.py similarity index 100% rename from axelrod/tests/strategies/test_alternator.py rename to tests/strategies/test_alternator.py diff --git a/axelrod/tests/strategies/test_ann.py b/tests/strategies/test_ann.py similarity index 100% rename from axelrod/tests/strategies/test_ann.py rename to tests/strategies/test_ann.py diff --git a/axelrod/tests/strategies/test_apavlov.py b/tests/strategies/test_apavlov.py similarity index 100% rename from axelrod/tests/strategies/test_apavlov.py rename to tests/strategies/test_apavlov.py diff --git a/axelrod/tests/strategies/test_appeaser.py b/tests/strategies/test_appeaser.py similarity index 100% rename from axelrod/tests/strategies/test_appeaser.py rename to tests/strategies/test_appeaser.py diff --git a/axelrod/tests/strategies/test_averagecopier.py b/tests/strategies/test_averagecopier.py similarity index 100% rename from axelrod/tests/strategies/test_averagecopier.py rename to tests/strategies/test_averagecopier.py diff --git a/axelrod/tests/strategies/test_axelrod_first.py b/tests/strategies/test_axelrod_first.py similarity index 100% rename from axelrod/tests/strategies/test_axelrod_first.py rename to tests/strategies/test_axelrod_first.py diff --git a/axelrod/tests/strategies/test_axelrod_second.py b/tests/strategies/test_axelrod_second.py similarity index 100% rename from axelrod/tests/strategies/test_axelrod_second.py rename to tests/strategies/test_axelrod_second.py diff --git a/axelrod/tests/strategies/test_backstabber.py b/tests/strategies/test_backstabber.py similarity index 100% rename from axelrod/tests/strategies/test_backstabber.py rename to tests/strategies/test_backstabber.py diff --git a/axelrod/tests/strategies/test_better_and_better.py b/tests/strategies/test_better_and_better.py similarity index 100% rename from axelrod/tests/strategies/test_better_and_better.py rename to tests/strategies/test_better_and_better.py diff --git a/axelrod/tests/strategies/test_bush_mosteller.py b/tests/strategies/test_bush_mosteller.py similarity index 100% rename from axelrod/tests/strategies/test_bush_mosteller.py rename to tests/strategies/test_bush_mosteller.py diff --git a/axelrod/tests/strategies/test_calculator.py b/tests/strategies/test_calculator.py similarity index 100% rename from axelrod/tests/strategies/test_calculator.py rename to tests/strategies/test_calculator.py diff --git a/axelrod/tests/strategies/test_cooperator.py b/tests/strategies/test_cooperator.py similarity index 100% rename from axelrod/tests/strategies/test_cooperator.py rename to tests/strategies/test_cooperator.py diff --git a/axelrod/tests/strategies/test_cycler.py b/tests/strategies/test_cycler.py similarity index 100% rename from axelrod/tests/strategies/test_cycler.py rename to tests/strategies/test_cycler.py diff --git a/axelrod/tests/strategies/test_darwin.py b/tests/strategies/test_darwin.py similarity index 100% rename from axelrod/tests/strategies/test_darwin.py rename to tests/strategies/test_darwin.py diff --git a/axelrod/tests/strategies/test_dbs.py b/tests/strategies/test_dbs.py similarity index 100% rename from axelrod/tests/strategies/test_dbs.py rename to tests/strategies/test_dbs.py diff --git a/axelrod/tests/strategies/test_defector.py b/tests/strategies/test_defector.py similarity index 100% rename from axelrod/tests/strategies/test_defector.py rename to tests/strategies/test_defector.py diff --git a/axelrod/tests/strategies/test_doubler.py b/tests/strategies/test_doubler.py similarity index 100% rename from axelrod/tests/strategies/test_doubler.py rename to tests/strategies/test_doubler.py diff --git a/axelrod/tests/strategies/test_evolvable_player.py b/tests/strategies/test_evolvable_player.py similarity index 100% rename from axelrod/tests/strategies/test_evolvable_player.py rename to tests/strategies/test_evolvable_player.py diff --git a/axelrod/tests/strategies/test_finite_state_machines.py b/tests/strategies/test_finite_state_machines.py similarity index 100% rename from axelrod/tests/strategies/test_finite_state_machines.py rename to tests/strategies/test_finite_state_machines.py diff --git a/axelrod/tests/strategies/test_forgiver.py b/tests/strategies/test_forgiver.py similarity index 100% rename from axelrod/tests/strategies/test_forgiver.py rename to tests/strategies/test_forgiver.py diff --git a/axelrod/tests/strategies/test_gambler.py b/tests/strategies/test_gambler.py similarity index 100% rename from axelrod/tests/strategies/test_gambler.py rename to tests/strategies/test_gambler.py diff --git a/axelrod/tests/strategies/test_gobymajority.py b/tests/strategies/test_gobymajority.py similarity index 100% rename from axelrod/tests/strategies/test_gobymajority.py rename to tests/strategies/test_gobymajority.py diff --git a/axelrod/tests/strategies/test_gradualkiller.py b/tests/strategies/test_gradualkiller.py similarity index 100% rename from axelrod/tests/strategies/test_gradualkiller.py rename to tests/strategies/test_gradualkiller.py diff --git a/axelrod/tests/strategies/test_grudger.py b/tests/strategies/test_grudger.py similarity index 100% rename from axelrod/tests/strategies/test_grudger.py rename to tests/strategies/test_grudger.py diff --git a/axelrod/tests/strategies/test_grumpy.py b/tests/strategies/test_grumpy.py similarity index 100% rename from axelrod/tests/strategies/test_grumpy.py rename to tests/strategies/test_grumpy.py diff --git a/axelrod/tests/strategies/test_handshake.py b/tests/strategies/test_handshake.py similarity index 100% rename from axelrod/tests/strategies/test_handshake.py rename to tests/strategies/test_handshake.py diff --git a/axelrod/tests/strategies/test_headsup.py b/tests/strategies/test_headsup.py similarity index 100% rename from axelrod/tests/strategies/test_headsup.py rename to tests/strategies/test_headsup.py diff --git a/axelrod/tests/strategies/test_hmm.py b/tests/strategies/test_hmm.py similarity index 100% rename from axelrod/tests/strategies/test_hmm.py rename to tests/strategies/test_hmm.py diff --git a/axelrod/tests/strategies/test_human.py b/tests/strategies/test_human.py similarity index 100% rename from axelrod/tests/strategies/test_human.py rename to tests/strategies/test_human.py diff --git a/axelrod/tests/strategies/test_hunter.py b/tests/strategies/test_hunter.py similarity index 100% rename from axelrod/tests/strategies/test_hunter.py rename to tests/strategies/test_hunter.py diff --git a/axelrod/tests/strategies/test_inverse.py b/tests/strategies/test_inverse.py similarity index 100% rename from axelrod/tests/strategies/test_inverse.py rename to tests/strategies/test_inverse.py diff --git a/axelrod/tests/strategies/test_lookerup.py b/tests/strategies/test_lookerup.py similarity index 100% rename from axelrod/tests/strategies/test_lookerup.py rename to tests/strategies/test_lookerup.py diff --git a/axelrod/tests/strategies/test_mathematicalconstants.py b/tests/strategies/test_mathematicalconstants.py similarity index 100% rename from axelrod/tests/strategies/test_mathematicalconstants.py rename to tests/strategies/test_mathematicalconstants.py diff --git a/axelrod/tests/strategies/test_memoryone.py b/tests/strategies/test_memoryone.py similarity index 100% rename from axelrod/tests/strategies/test_memoryone.py rename to tests/strategies/test_memoryone.py diff --git a/axelrod/tests/strategies/test_memorytwo.py b/tests/strategies/test_memorytwo.py similarity index 100% rename from axelrod/tests/strategies/test_memorytwo.py rename to tests/strategies/test_memorytwo.py diff --git a/axelrod/tests/strategies/test_meta.py b/tests/strategies/test_meta.py similarity index 100% rename from axelrod/tests/strategies/test_meta.py rename to tests/strategies/test_meta.py diff --git a/axelrod/tests/strategies/test_mutual.py b/tests/strategies/test_mutual.py similarity index 100% rename from axelrod/tests/strategies/test_mutual.py rename to tests/strategies/test_mutual.py diff --git a/axelrod/tests/strategies/test_negation.py b/tests/strategies/test_negation.py similarity index 100% rename from axelrod/tests/strategies/test_negation.py rename to tests/strategies/test_negation.py diff --git a/axelrod/tests/strategies/test_oncebitten.py b/tests/strategies/test_oncebitten.py similarity index 100% rename from axelrod/tests/strategies/test_oncebitten.py rename to tests/strategies/test_oncebitten.py diff --git a/axelrod/tests/strategies/test_player.py b/tests/strategies/test_player.py similarity index 100% rename from axelrod/tests/strategies/test_player.py rename to tests/strategies/test_player.py diff --git a/axelrod/tests/strategies/test_prober.py b/tests/strategies/test_prober.py similarity index 100% rename from axelrod/tests/strategies/test_prober.py rename to tests/strategies/test_prober.py diff --git a/axelrod/tests/strategies/test_punisher.py b/tests/strategies/test_punisher.py similarity index 100% rename from axelrod/tests/strategies/test_punisher.py rename to tests/strategies/test_punisher.py diff --git a/axelrod/tests/strategies/test_qlearner.py b/tests/strategies/test_qlearner.py similarity index 100% rename from axelrod/tests/strategies/test_qlearner.py rename to tests/strategies/test_qlearner.py diff --git a/axelrod/tests/strategies/test_rand.py b/tests/strategies/test_rand.py similarity index 100% rename from axelrod/tests/strategies/test_rand.py rename to tests/strategies/test_rand.py diff --git a/axelrod/tests/strategies/test_resurrection.py b/tests/strategies/test_resurrection.py similarity index 100% rename from axelrod/tests/strategies/test_resurrection.py rename to tests/strategies/test_resurrection.py diff --git a/axelrod/tests/strategies/test_retaliate.py b/tests/strategies/test_retaliate.py similarity index 100% rename from axelrod/tests/strategies/test_retaliate.py rename to tests/strategies/test_retaliate.py diff --git a/axelrod/tests/strategies/test_revised_downing.py b/tests/strategies/test_revised_downing.py similarity index 100% rename from axelrod/tests/strategies/test_revised_downing.py rename to tests/strategies/test_revised_downing.py diff --git a/axelrod/tests/strategies/test_selfsteem.py b/tests/strategies/test_selfsteem.py similarity index 100% rename from axelrod/tests/strategies/test_selfsteem.py rename to tests/strategies/test_selfsteem.py diff --git a/axelrod/tests/strategies/test_sequence_player.py b/tests/strategies/test_sequence_player.py similarity index 100% rename from axelrod/tests/strategies/test_sequence_player.py rename to tests/strategies/test_sequence_player.py diff --git a/axelrod/tests/strategies/test_shortmem.py b/tests/strategies/test_shortmem.py similarity index 100% rename from axelrod/tests/strategies/test_shortmem.py rename to tests/strategies/test_shortmem.py diff --git a/axelrod/tests/strategies/test_stalker.py b/tests/strategies/test_stalker.py similarity index 100% rename from axelrod/tests/strategies/test_stalker.py rename to tests/strategies/test_stalker.py diff --git a/axelrod/tests/strategies/test_titfortat.py b/tests/strategies/test_titfortat.py similarity index 100% rename from axelrod/tests/strategies/test_titfortat.py rename to tests/strategies/test_titfortat.py diff --git a/axelrod/tests/strategies/test_verybad.py b/tests/strategies/test_verybad.py similarity index 100% rename from axelrod/tests/strategies/test_verybad.py rename to tests/strategies/test_verybad.py diff --git a/axelrod/tests/strategies/test_worse_and_worse.py b/tests/strategies/test_worse_and_worse.py similarity index 100% rename from axelrod/tests/strategies/test_worse_and_worse.py rename to tests/strategies/test_worse_and_worse.py diff --git a/axelrod/tests/strategies/test_zero_determinant.py b/tests/strategies/test_zero_determinant.py similarity index 100% rename from axelrod/tests/strategies/test_zero_determinant.py rename to tests/strategies/test_zero_determinant.py diff --git a/axelrod/tests/unit/__init__.py b/tests/unit/__init__.py similarity index 100% rename from axelrod/tests/unit/__init__.py rename to tests/unit/__init__.py diff --git a/axelrod/tests/unit/test_actions.py b/tests/unit/test_actions.py similarity index 100% rename from axelrod/tests/unit/test_actions.py rename to tests/unit/test_actions.py diff --git a/axelrod/tests/unit/test_classification.py b/tests/unit/test_classification.py similarity index 100% rename from axelrod/tests/unit/test_classification.py rename to tests/unit/test_classification.py diff --git a/axelrod/tests/unit/test_compute_finite_state_machine_memory.py b/tests/unit/test_compute_finite_state_machine_memory.py similarity index 100% rename from axelrod/tests/unit/test_compute_finite_state_machine_memory.py rename to tests/unit/test_compute_finite_state_machine_memory.py diff --git a/axelrod/tests/unit/test_deterministic_cache.py b/tests/unit/test_deterministic_cache.py similarity index 100% rename from axelrod/tests/unit/test_deterministic_cache.py rename to tests/unit/test_deterministic_cache.py diff --git a/axelrod/tests/unit/test_ecosystem.py b/tests/unit/test_ecosystem.py similarity index 100% rename from axelrod/tests/unit/test_ecosystem.py rename to tests/unit/test_ecosystem.py diff --git a/axelrod/tests/unit/test_eigen.py b/tests/unit/test_eigen.py similarity index 100% rename from axelrod/tests/unit/test_eigen.py rename to tests/unit/test_eigen.py diff --git a/axelrod/tests/unit/test_filters.py b/tests/unit/test_filters.py similarity index 100% rename from axelrod/tests/unit/test_filters.py rename to tests/unit/test_filters.py diff --git a/axelrod/tests/unit/test_fingerprint.py b/tests/unit/test_fingerprint.py similarity index 100% rename from axelrod/tests/unit/test_fingerprint.py rename to tests/unit/test_fingerprint.py diff --git a/axelrod/tests/unit/test_game.py b/tests/unit/test_game.py similarity index 100% rename from axelrod/tests/unit/test_game.py rename to tests/unit/test_game.py diff --git a/axelrod/tests/unit/test_graph.py b/tests/unit/test_graph.py similarity index 100% rename from axelrod/tests/unit/test_graph.py rename to tests/unit/test_graph.py diff --git a/axelrod/tests/unit/test_history.py b/tests/unit/test_history.py similarity index 100% rename from axelrod/tests/unit/test_history.py rename to tests/unit/test_history.py diff --git a/axelrod/tests/unit/test_interaction_utils.py b/tests/unit/test_interaction_utils.py similarity index 100% rename from axelrod/tests/unit/test_interaction_utils.py rename to tests/unit/test_interaction_utils.py diff --git a/axelrod/tests/unit/test_load_data.py b/tests/unit/test_load_data.py similarity index 100% rename from axelrod/tests/unit/test_load_data.py rename to tests/unit/test_load_data.py diff --git a/axelrod/tests/unit/test_makes_use_of.py b/tests/unit/test_makes_use_of.py similarity index 100% rename from axelrod/tests/unit/test_makes_use_of.py rename to tests/unit/test_makes_use_of.py diff --git a/axelrod/tests/unit/test_match.py b/tests/unit/test_match.py similarity index 100% rename from axelrod/tests/unit/test_match.py rename to tests/unit/test_match.py diff --git a/axelrod/tests/unit/test_match_generator.py b/tests/unit/test_match_generator.py similarity index 100% rename from axelrod/tests/unit/test_match_generator.py rename to tests/unit/test_match_generator.py diff --git a/axelrod/tests/unit/test_mock_player.py b/tests/unit/test_mock_player.py similarity index 100% rename from axelrod/tests/unit/test_mock_player.py rename to tests/unit/test_mock_player.py diff --git a/axelrod/tests/unit/test_moran.py b/tests/unit/test_moran.py similarity index 100% rename from axelrod/tests/unit/test_moran.py rename to tests/unit/test_moran.py diff --git a/axelrod/tests/unit/test_pickling.py b/tests/unit/test_pickling.py similarity index 100% rename from axelrod/tests/unit/test_pickling.py rename to tests/unit/test_pickling.py diff --git a/axelrod/tests/unit/test_plot.py b/tests/unit/test_plot.py similarity index 100% rename from axelrod/tests/unit/test_plot.py rename to tests/unit/test_plot.py diff --git a/axelrod/tests/unit/test_property.py b/tests/unit/test_property.py similarity index 100% rename from axelrod/tests/unit/test_property.py rename to tests/unit/test_property.py diff --git a/axelrod/tests/unit/test_random_.py b/tests/unit/test_random_.py similarity index 100% rename from axelrod/tests/unit/test_random_.py rename to tests/unit/test_random_.py diff --git a/axelrod/tests/unit/test_resultset.py b/tests/unit/test_resultset.py similarity index 100% rename from axelrod/tests/unit/test_resultset.py rename to tests/unit/test_resultset.py diff --git a/axelrod/tests/unit/test_strategy_transformers.py b/tests/unit/test_strategy_transformers.py similarity index 100% rename from axelrod/tests/unit/test_strategy_transformers.py rename to tests/unit/test_strategy_transformers.py diff --git a/axelrod/tests/unit/test_strategy_utils.py b/tests/unit/test_strategy_utils.py similarity index 100% rename from axelrod/tests/unit/test_strategy_utils.py rename to tests/unit/test_strategy_utils.py diff --git a/axelrod/tests/unit/test_tournament.py b/tests/unit/test_tournament.py similarity index 100% rename from axelrod/tests/unit/test_tournament.py rename to tests/unit/test_tournament.py diff --git a/axelrod/tests/unit/test_version.py b/tests/unit/test_version.py similarity index 100% rename from axelrod/tests/unit/test_version.py rename to tests/unit/test_version.py diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..07d9757b5 --- /dev/null +++ b/tox.ini @@ -0,0 +1,43 @@ +[tox] +isolated_build = True +envlist = py311, py312 + +[gh-actions] +python = + 3.11: py311 + 3.12: py312 + +[flake8] +per-file-ignores = + setup.py: F821 + docs/_build/*: ALL + docs/conf.py: E402 + **/__init__.py: F401 F403 +ignore = + E203 + E501 + W291 + W503 +docstring_style=numpy + +[testenv] +deps = + black + hypothesis + mypy + pytest-cov + pytest-randomly + pytest-sugar +commands = + python -m black --check src/ + python -m black --check tests/ + python -m mypy --ignore-missing-imports src/ + python -m pytest tests --cov=axelrod --cov-fail-under=100 --doctest-glob="*.md" --doctest-glob="*.rst" + python -m flake8 src/ + python -m flake8 tests/ + python run_strategy_indexer.py + +[testenv:docs] +extras = doc +commands = + sphinx-build docs docs/_build/html -W -b html