Releases: virgesmith/neworder
Releases · virgesmith/neworder
v1.5.0
Functional changes
- Support for freethreaded python and multithreading. Adds functions:
neworder.freethreaded()returns whether the neworder module has been compiled in freethreaded mode (requires a
freethreaded python interpreter)neworder.thread_id():neworder.log(...)now reports this value.
Other changes
- Updated parallel and option examples with alternative (to MPI) implementations using multithreading.
- Added documentation and tests for multithreaded implementations.
v1.4.4
Maintenance release
- updated python version support
- switched default (linux) MPI implementation to openmpi
Maintenance release v1.4.3
Functional changes
(none)
Other changes
- updated supported python versions
- switch to
uvpackage manager for CI builds - removed unfinished/untested models
- reformatted code
Maintenance release v1.4.2
Functional changes
- add
RunStateenum - update documentation
Other changes
- Update dependencies
- Update CI: python 3.10/3.11/3.12
- linting and formatting
1.4.1
patch to fix documentation
1.4.0
Packaging changes
The package now contains the following optional dependencies/extras:
geospatial: geospatial graph functionality based on nextworkx, osmnx, geopandas etcparallel: MPIdev: for local package development
which can be installed like so, e.g.
pip install neworder[parallel]Functional changes
neworder.geospatial.GeoSpatialGraphis now available - if thegeospatialextra has been selected. (Previously the implementation was in an example)- Changes to the
mpisubmodule:- the functions
rank()andsize()are now attributes:RANKandSIZE. - there is a new
COMMattribute, which is either anmpi4py.MPI.Intracomminstance orNonedepending on whether theparallelextra was installed.
- the functions
- In the
timesubmodule, the following functions are now attributes:never()becomesNEVERdistant_past()becomesDISTANT_PASTfar_future()becomesFAR_FUTURE.
Internal changes
Model.modify()no longer takes an integer argument. Accessneworder.mpi.RANKfrom within the function.- seeder functions no longer take an integer argument. Access
neworder.mpi.RANKfrom within a custom implementation function if necessary. - packaging and CI improvements
v1.3.1
Packaging changes
Conda builds are no longer supported as of this release. Conda users should use pip to install version 1.3 or higher.
Functional changes
- Custom timeline support. Users can now subclass
neworder.Timelineto create their own timeline implementations and use them within their model. - The following timeline attributes that were methods are now properties:
at_end,dt,end,index,nsteps,start,time. Although this is potentially a breaking change, it's not considered significant enough to warrant a major version bump. - The
seederargument to the base model constructor is now optional, and defaults toneworder.MonteCarlo.deterministic_independent_stream.
Internal changes
- Refactoring of
Modelbase class and Timelines to support custom timelines - Changes to CI workflows
Bugfixes
- Security fix for example dependencies
v1.2.1
Functional changes
- Added "infection" example to demonstrate movement on a spatial network. In order to avoid a large increase in package dependencies, the spatial domain implementation (
GeospatialGraph) is contained within the example, not theneworderpackage itself. - Improved and extended "boids" examples, now with 2d and 3d versions
- added functionality to
StateGridto translate positions according to the given edge behaviour - python 3.9 and below are no longer supported
Internal changes
- updates to CI
bugfixes
- fixed display issue with n-body example
v1.2.0
Functional changes
-
The neworder Monte-Carlo engine can now be used directly as a numpy random generator, giving access to all of numpy's random functionality. Create a generator via the
as_npadapter method, e.g.:model = no.Model(no.NoTimeline(), no.MonteCarlo.deterministic_identical_stream) gen = no.as_np(model.mc) normals = gen.normal(size=100)
-
MonteCarlo.state()method now works on OSX (was previously disabled due to an apparent bug in the MT19937 implementation).
Internal
- numerous minor updates
- use C++20 standard
v1.1.1
Functional changes
[none]
Internal
- Fix spurious MSVC17 compiler error on conda.