Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v2.0.0 [How Not to Be Seen] #671

Merged
merged 494 commits into from
Sep 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
494 commits
Select commit Hold shift + click to select a range
58a4db8
Fix py10 errors
evhub Oct 31, 2021
3f4005b
Improve testing framework
evhub Oct 31, 2021
9067e35
Reenable failing test
evhub Oct 31, 2021
cc8eda7
Fix assert rewriting
evhub Oct 31, 2021
212d413
Further fix assert rewriting
evhub Oct 31, 2021
8740b85
Rollback use of call_with_import
evhub Nov 1, 2021
1bdd189
Fix tests
evhub Nov 1, 2021
51e9568
Support return types in match funcs
evhub Nov 1, 2021
a0a27e1
Fix pipe test
evhub Nov 1, 2021
be6d0eb
Fix py2 error
evhub Nov 1, 2021
c2922fb
Further fix py2 tests
evhub Nov 1, 2021
d66afe6
Add infix op patterns
evhub Nov 1, 2021
c4c2b77
Fix failing tests
evhub Nov 1, 2021
29a63d6
Improve performance
evhub Nov 1, 2021
6d48827
Add debug profiling
evhub Nov 1, 2021
bd46243
Add --profile
evhub Nov 2, 2021
27a6911
Further improve performance
evhub Nov 2, 2021
f35ec4f
More performance optimizations
evhub Nov 2, 2021
69e0b12
Disable failing test
evhub Nov 2, 2021
f08af60
Improve packrat cache handling
evhub Nov 3, 2021
3591df3
Implement profiling results
evhub Nov 3, 2021
0887492
Fix jupyter error
evhub Nov 3, 2021
9d2c963
Add data inheritance test
evhub Nov 3, 2021
e98e39b
More perf tuning
evhub Nov 4, 2021
e0648f7
Fix pypy error
evhub Nov 4, 2021
ef33374
Fix mypy error
evhub Nov 5, 2021
2fe62fc
Fix jupyter errors
evhub Nov 5, 2021
9fa243c
Remove failing jupyter test
evhub Nov 5, 2021
14bb80e
Improve tests, docs
evhub Nov 5, 2021
adac32b
Set version to v1.6.0
evhub Nov 5, 2021
ff5465f
Add back docs sidebar
evhub Nov 6, 2021
d99603e
Improve docs sidebar
evhub Nov 6, 2021
2c3d1d0
Add backports extra
evhub Nov 6, 2021
402a6a0
Fix requirements
evhub Nov 6, 2021
35aa059
Use readthedocs latest instead of master
evhub Nov 6, 2021
4eae556
Switch sphinx themes
evhub Nov 6, 2021
c40e2ba
Switch to celery theme
evhub Nov 6, 2021
f49abd0
Improve docs
evhub Nov 6, 2021
e579541
Try switching back to bootstrap
evhub Nov 6, 2021
f45becf
Try yet another theme
evhub Nov 6, 2021
698e084
Attempt to fix list spacing
evhub Nov 6, 2021
3a383dc
More docs changes
evhub Nov 6, 2021
44e1f95
Turn on develop
evhub Nov 6, 2021
28afbb8
Set develop version to alpha v2
evhub Nov 6, 2021
709f295
Add combinators
evhub Nov 6, 2021
0e21610
Fix combinators
evhub Nov 7, 2021
68126bf
Slight documentation tweak
evhub Nov 7, 2021
a83d482
Change precedence of ..
evhub Nov 7, 2021
7210daf
Fix mypy error
evhub Nov 7, 2021
a409895
Document combinators
evhub Nov 7, 2021
dead2ea
Switch to new getitem op func notations
evhub Nov 7, 2021
37861c0
Add implicit op func partials
evhub Nov 7, 2021
da060a7
Fix tests
evhub Nov 7, 2021
cbcac3d
Remove special exec statement handling
evhub Nov 7, 2021
1cb5830
Start changing pattern-matching
evhub Nov 8, 2021
612cd4a
Fix format string issues
evhub Nov 8, 2021
7cad35b
Continue implementing new pattern-matching logic
evhub Nov 8, 2021
c3d5828
More pattern-matching implementation
evhub Nov 8, 2021
5178c1c
Finish changing over to new pattern-matching rules
evhub Nov 9, 2021
a7f25b3
Fix lots of bugs
evhub Nov 9, 2021
bfb7b46
Add identity check pattern
evhub Nov 9, 2021
36a24b9
Fix test errors
evhub Nov 9, 2021
226e327
Fix external tests
evhub Nov 9, 2021
b68de7e
Always warn on dict patterns
evhub Nov 9, 2021
453afa0
Improve docs/error msgs
evhub Nov 9, 2021
6a23d84
Fix py310 test
evhub Nov 9, 2021
2cecef4
Add match_if
evhub Nov 10, 2021
7a402f2
Add (,)
evhub Nov 10, 2021
e1fc228
Improve test
evhub Nov 10, 2021
c8ab8c8
Add some random tests
evhub Nov 12, 2021
4273ed6
Support negation in more places
evhub Nov 12, 2021
eb663c8
Add a small test
evhub Nov 13, 2021
145f77d
Improve documentation
evhub Nov 14, 2021
2c95ec1
Add collectby built-in
evhub Nov 17, 2021
3966ee4
Bump develop version
evhub Nov 17, 2021
f1ed80d
Improve highlighting, docstrings
evhub Nov 18, 2021
57e2170
Add anonymous namedtuples
evhub Nov 18, 2021
0364bd8
Add _namedtuple_of
evhub Nov 18, 2021
54df41e
Improve (assert)
evhub Nov 18, 2021
7b84d07
Improve docs
evhub Nov 18, 2021
6f31553
Fix mypy errors
evhub Nov 18, 2021
dddbb2e
Improve (-)
evhub Nov 18, 2021
2e097e7
Improve iter_getitem
evhub Nov 18, 2021
aeea8e7
Add codeql and improve .$[]
evhub Nov 19, 2021
a0eced7
Clean up docs
evhub Nov 19, 2021
ab31e82
Further document data
evhub Nov 27, 2021
70ea030
Fix overflow error
evhub Nov 27, 2021
49b37e2
Fix syntax error
evhub Nov 27, 2021
375cec0
Improve unicode operators
evhub Nov 27, 2021
eb3029f
Fix error message
evhub Nov 27, 2021
b351075
Further fix OverflowError
evhub Nov 28, 2021
538eac3
Fix string processing
evhub Nov 28, 2021
6ccd8e3
Improve error message
evhub Nov 28, 2021
7929a97
Allow pos args after star args
evhub Nov 30, 2021
7fc5551
Add some tests
evhub Dec 3, 2021
a56c994
Fix tco parsing
evhub Dec 4, 2021
f9a8639
Update docs
evhub Dec 4, 2021
ad21951
Start implementing array literals
evhub Dec 5, 2021
d6ca4ba
Improve multi dim arrs
evhub Dec 5, 2021
a3bd023
Fix mypy errors
evhub Dec 5, 2021
9e6674c
Finish multidimensional array literals
evhub Dec 6, 2021
09c5e11
Fix array literal highlighting
evhub Dec 6, 2021
3beec93
Fix mypy test
evhub Dec 6, 2021
691cb34
Improve array literal highlighting
evhub Dec 6, 2021
3bd31bc
Substantially improve error messages
evhub Dec 6, 2021
86987cf
Further improve error messages
evhub Dec 7, 2021
af77896
Further improve parse err msgs
evhub Dec 7, 2021
b07ed9d
Finish improving error messages
evhub Dec 7, 2021
3880339
Clean up test
evhub Dec 7, 2021
62a4e06
Improve documentation
evhub Dec 7, 2021
6b12de8
Add logo
evhub Dec 7, 2021
42472ce
Add logo
evhub Dec 7, 2021
3659242
Add match for
evhub Dec 8, 2021
64ec230
Change scan, fix test failures
evhub Dec 8, 2021
05f31d0
Move, fix tests
evhub Dec 8, 2021
45cd9fa
Register deque as a Sequence
evhub Dec 8, 2021
9c38531
Improve, fix tests
evhub Dec 8, 2021
a787ca1
Fix Python 2 tests
evhub Dec 8, 2021
d02455b
Further fix py2 test
evhub Dec 8, 2021
a1ec2af
Fix error locations
evhub Dec 8, 2021
541436a
Fix docs links
evhub Dec 8, 2021
25cb351
Allow := chaining
evhub Dec 9, 2021
628993a
Further improve error messages
evhub Dec 9, 2021
c191830
Improve docs
evhub Dec 9, 2021
4b8874e
Add some new performance optimizations
evhub Dec 10, 2021
48557b1
Add kernel install option
evhub Dec 11, 2021
90df4e7
Add anything parser
evhub Dec 14, 2021
b73df38
Add xonsh xontrib
evhub Dec 15, 2021
a712ac8
Fix xonsh highlighting
evhub Dec 15, 2021
32096d7
Fix xonsh on py35
evhub Dec 15, 2021
31f4ead
Fix test error
evhub Dec 15, 2021
a8ea552
Fix py10 test
evhub Dec 15, 2021
c69f6aa
Fix mypy test errors
evhub Dec 15, 2021
6c20c71
Further fix mypy test
evhub Dec 16, 2021
7602503
Fix mypy snip test str
evhub Dec 16, 2021
3379b2f
Improve xontrib
evhub Dec 16, 2021
b978775
Update reqs
evhub Dec 17, 2021
be5a790
Fix comment handling
evhub Dec 17, 2021
7646c83
Add some tests
evhub Dec 18, 2021
b3ef25f
Fix watcher
evhub Dec 20, 2021
27c9e04
Fix data ._replace
evhub Dec 30, 2021
0758441
Fix minor bugs
evhub Jan 1, 2022
007dc1f
Add flip nargs
evhub Jan 3, 2022
54322de
Improve sequence pattern syntax
evhub Jan 4, 2022
3ad5819
Fix py2 errors
evhub Jan 4, 2022
cf12f20
Fix literal eval
evhub Jan 4, 2022
0927a3d
Fix eval_now
evhub Jan 4, 2022
5861573
Minor cleanups
evhub Jan 4, 2022
143c7dc
Further fix eval_now
evhub Jan 11, 2022
1beff83
Fix some mypy errors
evhub Jan 11, 2022
c214911
Fix more mypy errors
evhub Jan 12, 2022
73780d6
Make reformatting stricter
evhub Jan 12, 2022
577e704
Improve bad ref errors
evhub Jan 12, 2022
911b06f
Fix replproc error recovery
evhub Jan 12, 2022
f2905f3
Improve untcoable func detection
evhub Jan 12, 2022
d381da4
Fix multiprocessing issue
evhub Jan 13, 2022
8fb90fe
Fix py<37 error
evhub Jan 13, 2022
f66a2d1
Improve error messages
evhub Jan 14, 2022
9e33962
Add support for search patterns
evhub Jan 15, 2022
8df798e
Add iterable search patterns
evhub Jan 17, 2022
40992fd
Fix tests
evhub Jan 17, 2022
6d5e211
Fix inspect warning
evhub Jan 17, 2022
20876f5
Fix tre issues
evhub Jan 18, 2022
fe648bd
Fix univ target errors
evhub Jan 19, 2022
32ec290
Document late-bound match defaults
evhub Jan 19, 2022
2d4bbb4
Fix test errors
evhub Jan 19, 2022
77ec416
Improve interpreter
evhub Jan 19, 2022
05fb18e
Prevent data types from add/mul as tuples
evhub Jan 21, 2022
7ed1ae1
Improve lnwrapper error messages
evhub Jan 21, 2022
2bf5899
Allow line num to decrease
evhub Jan 22, 2022
d633f46
Fix mypy error
evhub Jan 22, 2022
c8984ba
Improve convenience API
evhub Jan 24, 2022
91fedb9
Fix convenience.setup
evhub Jan 24, 2022
ab32857
Improve groupsof
evhub Jan 25, 2022
70e1d65
Improve iter getitem
evhub Jan 25, 2022
9020c18
Improve 3.11 support
evhub Jan 25, 2022
8173108
Bump reqs
evhub Jan 27, 2022
8409d07
Improve tests, docs
evhub Jan 28, 2022
ab60a7b
Add (raise) and fix tco/tre issues
evhub Feb 2, 2022
41b9f75
Improve line numbering
evhub Feb 2, 2022
464ac41
Add strict class/data patterns
evhub Feb 3, 2022
d29cbe8
Replace match_if with single-arg infix checks
evhub Feb 4, 2022
1d1910f
Fix mypy cache
evhub Feb 4, 2022
058733e
Add universal super() support
evhub Feb 12, 2022
d874832
Fix py2 error
evhub Feb 12, 2022
3d74d07
Further fix py2
evhub Feb 12, 2022
e5c7803
Fix super
evhub Feb 16, 2022
e6d2a95
Fix constants
evhub Feb 16, 2022
703de17
Add classmethod super test
evhub Feb 16, 2022
143500a
Remove debug output
evhub Feb 19, 2022
efed055
Make anon namedtuples pickleable
evhub Feb 24, 2022
d5031e8
Fix py2 errors
evhub Feb 24, 2022
75cc352
Improve docs
evhub Feb 28, 2022
a6e191c
Make addpattern more flexible
evhub Mar 24, 2022
84e2cda
Fix dotted names in class/data patterns
evhub Mar 24, 2022
d04bf9e
Fix py2 error
evhub Mar 25, 2022
34bc588
Remove bad assert
evhub Mar 25, 2022
1dcfd9e
Remove normcase
evhub Mar 28, 2022
79ebbcb
Fix bug with new ipykernel
evhub Apr 22, 2022
117f0e2
Fix appveyor error
evhub Apr 23, 2022
d53eea4
Fix papermill
evhub Apr 23, 2022
cfac93f
Make printing more process safe
evhub Apr 24, 2022
3eda8cf
Fix Makefile
evhub Apr 25, 2022
6b70397
environ.get -> getenv
evhub Apr 25, 2022
084bea6
Improve docs
evhub Apr 26, 2022
28eba34
Improve stmt lambda match errs
evhub Apr 27, 2022
8da483e
Rename minor util
evhub Apr 27, 2022
71109b2
Add where test
evhub Apr 29, 2022
2928afc
Add Tuple type syntax
evhub May 27, 2022
04bdd5d
Fix mypy issues
evhub May 27, 2022
cba732a
Fix mypy test
evhub May 27, 2022
86863a7
Further improve mypy
evhub May 28, 2022
869a7e2
Further improve mypy
evhub May 28, 2022
d3aef63
Fix ellipses in types
evhub May 28, 2022
cd269da
Improve typing compliance
evhub May 29, 2022
7645dd6
Revert typing change
evhub May 29, 2022
7aff165
Add __coconut__.npt
evhub May 29, 2022
72b8c43
Fix typo (see #666)
evhub Jul 18, 2022
4ee0b93
Slightly improve split_args_list
evhub Aug 12, 2022
ceb76ba
Add typing_extensions backporting
evhub Sep 21, 2022
dde4b78
Fix deps
evhub Sep 21, 2022
3716ee9
Fix typing_extensions version
evhub Sep 21, 2022
ea1a005
Support f_strings in pattern-matching
evhub Sep 22, 2022
c4135ed
Support f$(x=?) syntax
evhub Sep 22, 2022
eefe9a2
Universalize matmul
evhub Sep 22, 2022
770c23b
Update docs
evhub Sep 22, 2022
e595b9a
Improve docstrings
evhub Sep 22, 2022
78dbcc7
Fix broken tests
evhub Sep 22, 2022
faddb79
Disable codeql on develop
evhub Sep 22, 2022
6275763
Fix py2 tests
evhub Sep 22, 2022
91743b6
Bump reqs
evhub Sep 22, 2022
4e4db44
Minor fixes
evhub Sep 22, 2022
e96fbd7
Add async support to fmap
evhub Sep 24, 2022
b8aee86
Change fmap and improve mypy
evhub Sep 24, 2022
fefeafd
Fix py2 header
evhub Sep 24, 2022
d1a1258
Fix MYPYPATH
evhub Sep 24, 2022
7964e43
Improve fmap performance
evhub Sep 24, 2022
5c744cf
Improve exec usage
evhub Sep 24, 2022
33124c9
Allow async yield def
evhub Sep 24, 2022
37f115e
Improve async tests
evhub Sep 24, 2022
2c1128a
Improve numpy tests
evhub Sep 24, 2022
4bdfbd6
Support infix implicit partials
evhub Sep 24, 2022
ac64c00
Improve jax support
evhub Sep 24, 2022
465bb83
Allow custom multidim arrs
evhub Sep 24, 2022
bef83ed
Attempt to fix appveyor
evhub Sep 25, 2022
a96e94c
More appveyor fixes
evhub Sep 25, 2022
561beb8
Fix count
evhub Sep 25, 2022
a360e3d
Prepare for release
evhub Sep 26, 2022
3673311
Update release process
evhub Sep 26, 2022
a17c703
Merge branch 'master' into develop
evhub Sep 26, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 7 additions & 10 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,18 @@ environment:
- PYTHON: "C:\\Python35"
PYTHON_VERSION: "3.5.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Python36"
PYTHON_VERSION: "3.6.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Python37"
PYTHON_VERSION: "3.7.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Python38"
PYTHON_VERSION: "3.8.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Python39"
PYTHON_VERSION: "3.9.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Python310"
PYTHON_VERSION: "3.10.x"
PYTHON_ARCH: "64"

install:
- "SET PATH=%APPDATA%\\Python;%APPDATA%\\Python\\Scripts;%PYTHON%;%PYTHON%\\Scripts;c:\\MinGW\\bin;%PATH%"
# pywinpty installation fails without prior rust installation on some Python versions
- curl -sSf -o rustup-init.exe https://win.rustup.rs
- rustup-init.exe -yv --default-toolchain stable --default-host i686-pc-windows-msvc
- "SET PATH=%APPDATA%\\Python;%APPDATA%\\Python\\Scripts;%PYTHON%;%PYTHON%\\Scripts;c:\\MinGW\\bin;%PATH%;C:\\Users\\appveyor\\.cargo\\bin"
- "copy c:\\MinGW\\bin\\mingw32-make.exe c:\\MinGW\\bin\\make.exe"
- python -m pip install --user --upgrade setuptools pip
- python -m pip install .[tests]
Expand Down
70 changes: 70 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches: [ master, gh-pages ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master, gh-pages ]
schedule:
- cron: '17 11 * * 3'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support

steps:
- name: Checkout repository
uses: actions/checkout@v2

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,15 @@ dmypy.json
# PEP 582
__pypackages__/

# VSCode
.vscode

# Coconut
tests/dest/
coconut/tests/dest/
docs/
pyprover/
pyston/
pyprover/
bbopt/
coconut-prelude/
index.rst
vprof.json
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: git://github.com/pre-commit/pre-commit-hooks.git
rev: v4.0.1
rev: v4.1.0
hooks:
- id: check-added-large-files
- id: fix-byte-order-marker
Expand Down Expand Up @@ -30,7 +30,7 @@ repos:
args:
- --ignore=W503,E501,E265,E402,F405,E305,E126
- repo: https://github.com/pre-commit/mirrors-autopep8
rev: v1.5.7
rev: v1.6.0
hooks:
- id: autopep8
args:
Expand All @@ -40,6 +40,6 @@ repos:
- --experimental
- --ignore=W503,E501,E722,E402
- repo: https://github.com/asottile/add-trailing-comma
rev: v2.2.0
rev: v2.2.1
hooks:
- id: add-trailing-comma
114 changes: 58 additions & 56 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,71 +105,73 @@ After you've tested your changes locally, you'll want to add more permanent test
+ Contains the main entry point for Coconut's Jupyter kernel.
- `root.py`
+ Contains the implementation of Coconut's Jupyter kernel, made by subclassing the IPython kernel.
- stubs
- tests
- `__init__.py`
+ Imports everything in `main_test.py`.
- `__main__.py`
+ When run, compiles all of the test source code, but _does not run any tests_. To run the tests, the command `make test`, or a `pytest` command to run a specific test, is necessary.
- `main_test.py`
+ Contains `TestCase` subclasses that run all of the commands for testing the Coconut files in `src`.
- src
- `extras.coco`
+ Directly imports and calls functions in the Coconut package, including from `convenience.py` and icoconut.
- `runnable.coco`
+ Makes sure the argument `--arg` was passed when running the file.
- `runner.coco`
+ Runs `main` from `cocotest/agnostic/main.py`.
- cocotest
+ _Note: Files in the folders below all get compiled into the top-level cocotest directory. The folders are only for differentiating what files to compile on what Python version._
- agnostic
- `__init__.coco`
+ Contains a docstring that `main.coco` asserts exists.
- `main.coco`
+ Contains the main test entry point as well as many simple, one-line tests.
- `specific.coco`
+ Tests to be run only on a specific Python version, but not necessarily only under a specific `--target`.
- `suite.coco`
+ Tests objects defined in `util.coco`.
- `tutorial.coco`
+ Tests all the examples in `TUTORIAL.md`.
- `util.coco`
+ Contains objects used in `suite.coco`.
- python2
- `py2_test.coco`
+ Tests to be run only on Python 2 with `--target 2`.
- python3
- `py3_test.coco`
+ Tests to be run only on Python 3 with `--target 3`.
- python35
- `py35_test.coco`
+ Tests to be run only on Python 3.5 with `--target 3.5`.
- python36
- `py36_test.coco`
+ Tests to be run only on Python 3.6 with `--target 3.6`.
- coconut-stubs
- `__coconut__.pyi`
+ A MyPy stub file for specifying the type of all the objects defined in Coconut's package header (which is saved as `__coconut__.py`).
- tests
- `__init__.py`
+ Imports everything in `main_test.py`.
- `__main__.py`
+ When run, compiles all of the test source code, but _does not run any tests_. To run the tests, the command `make test`, or a `pytest` command to run a specific test, is necessary.
- `main_test.py`
+ Contains `TestCase` subclasses that run all of the commands for testing the Coconut files in `src`.
- src
- `extras.coco`
+ Directly imports and calls functions in the Coconut package, including from `convenience.py` and icoconut.
- `runnable.coco`
+ Makes sure the argument `--arg` was passed when running the file.
- `runner.coco`
+ Runs `main` from `cocotest/agnostic/main.py`.
- cocotest
+ _Note: Files in the folders below all get compiled into the top-level cocotest directory. The folders are only for differentiating what files to compile on what Python version._
- agnostic
- `__init__.coco`
+ Contains a docstring that `main.coco` asserts exists.
- `main.coco`
+ Contains the main test entry point as well as many simple, one-line tests.
- `specific.coco`
+ Tests to be run only on a specific Python version, but not necessarily only under a specific `--target`.
- `suite.coco`
+ Tests objects defined in `util.coco`.
- `tutorial.coco`
+ Tests all the examples in `TUTORIAL.md`.
- `util.coco`
+ Contains objects used in `suite.coco`.
- python2
- `py2_test.coco`
+ Tests to be run only on Python 2 with `--target 2`.
- python3
- `py3_test.coco`
+ Tests to be run only on Python 3 with `--target 3`.
- python35
- `py35_test.coco`
+ Tests to be run only on Python 3.5 with `--target 3.5`.
- python36
- `py36_test.coco`
+ Tests to be run only on Python 3.6 with `--target 3.6`.

## Release Process

1. Preparation:
1. Run `make check-reqs` and update dependencies as necessary
1. Run `make format`
1. Make sure `make test-basic`, `make test-py2`, and `make test-easter-eggs` are passing
1. Check changes in [`compiled-cocotest`](https://github.com/evhub/compiled-cocotest), [`pyprover`](https://github.com/evhub/pyprover), and [`coconut-prelude`](https://github.com/evhub/coconut-prelude)
1. Check [Codebeat](https://codebeat.co/a/evhub/projects) and [LGTM](https://lgtm.com/dashboard) for `coconut` and `compiled-cocotest`
1. Make sure [`coconut-develop`](https://pypi.python.org/pypi/coconut-develop) package looks good
1. Run `make docs` and ensure local documentation looks good
1. Make sure [develop documentation](http://coconut.readthedocs.io/en/develop/) looks good
2. Make sure [Github Actions](https://github.com/evhub/coconut/actions) and [AppVeyor](https://ci.appveyor.com/project/evhub/coconut) are passing
3. Turn off `develop` in `root.py`
4. Set `root.py` to new version number
5. If major release, set `root.py` to new version name
2. Run `make format`
3. Make sure `make test`, `make test-py2`, and `make test-easter-eggs` are passing
4. Ensure that `coconut --watch` can successfully compile files when they're modified
5. Check changes in [`compiled-cocotest`](https://github.com/evhub/compiled-cocotest), [`pyprover`](https://github.com/evhub/pyprover), and [`coconut-prelude`](https://github.com/evhub/coconut-prelude)
6. Check [Codebeat](https://codebeat.co/a/evhub/projects) and [LGTM](https://lgtm.com/dashboard) for `coconut` and `compiled-cocotest`
7. Make sure [`coconut-develop`](https://pypi.python.org/pypi/coconut-develop) package looks good
8. Run `make docs` and ensure local documentation looks good
9. Make sure [develop documentation](http://coconut.readthedocs.io/en/develop/) looks good
10. Make sure [Github Actions](https://github.com/evhub/coconut/actions) and [AppVeyor](https://ci.appveyor.com/project/evhub/coconut) are passing
11. Turn off `develop` in `root.py`
12. Set `root.py` to new version number
13. If major release, set `root.py` to new version name

2. Pull Request:
1. Create a pull request to merge `develop` into `master`
2. Link contributors on pull request
3. Wait until everything is passing
1. Move unresolved issues to new milestone
2. Create a pull request to merge `develop` into `master`
3. Link contributors on pull request
4. Wait until everything is passing

3. Release:
1. Release a new version of [`sublime-coconut`](https://github.com/evhub/sublime-coconut) if applicable
Expand Down