Releases: glotzerlab/signac
Releases · glotzerlab/signac
v2.2.0
[2.2.0] -- 2024-02-13
Added
- Official support for Python 3.12 (#957).
Job.cached_statepoint
- cached and read only access to job state points. Faster thanJob.statepoint
(#975).
Changed
- Restrict allowable tar file features in Python 3.12 (#957).
- Linked views now can contain spaces and other characters except directory separators (#926).
- Linked views now can be created on Windows, if 'Developer mode' is enabled (#430, #958).
- Increase performance for many usage patterns (#975).
Fixed
- Fixed parsing of
$not
query expressions on command line (#970).
Removed
- Unused
ruamel.yaml
dependency (#981).
2.1.0
What's Changed
- Fix README example init command. by @bdice in #913
- Remove inaccurate guidance about doc filters being removed in 3.0. by @bdice in #916
- Add more descriptive error if
sp
andid
are not provided by @cbkerr in #915 - Use synced_collections. by @bdice in #924
- Remove numcodecs from docs. by @bdice in #925
- CI: No longer test latest packages on Python 3.8 by @b-butler in #938
Full Changelog: v2.0.0...v2.1.0
2.0.0
[2.0.0] -- 2023-03-30
Added
- Official support for Python 3.11 (#875).
H5Store
related errors are now included in the public API (#775).- Users can now access the project to which a job belongs with the
Job.project
attribute (#808).
Changed
- Functions raising
AssertionError
now raiseRuntimeError
(#612). - State points and documents require keys to be of type
str
(#719). - The keyword
_id
of the Job constructor has been renamed toid_
(#681). - The signac schema to use version 2. This update involves a number of changes:
- The project configuration is now stored at .signac/config instead of signac.rc or .signacrc (#678).
- Schema versions are now identified by simple integers rather than semantic versioning style versions (#688).
- Projects no longer have names and are identified solely by their root directories. This change also affects a number of public APIs where names are including, most prominently
signac.init_project
andProject.init_project
. Projects can now be constructed with just a root directory rather than a preloaded config (#677, #684, #706). - Project workspaces are no longer configurable, but are instead always defined as a subdirectory of the Project's root directory called
workspace
(#714).
- Rather than searching upwards until the root,
load_config
will only load configuration files in the specified directory, which is assumed to be a project directory, as well as the user's home directory (#711). - Changed the
root
parameter topath
in thesignac.get_project
andsignac.init_project
functions and correspondingProject
methods (#757, #758). - The prefix argument to
$ signac view
is now optional and can be provided with-p/--prefix
(#653, #774). - Tests are run with
xfail_strict = True
(#850). - Detection of an invalid config will raise an error rather than a debug log (#855).
- The package namespace has been flattened so that most functionality is directly available in the
signac
namespace (#756, #868). - The
calc_id
function has been moved from thehashing
module to thejob
module (#873). - Tests are run with all warnings treated as errors (#871).
- The contents of the
syncutil
module have been moved intosync
(#869). - The project now leverages a fully pyproject.toml-driven build (#878).
Removed
- The pre-SyncedCollection synchronized dictionary classes, including SyncedDict, SyncedAttrDict, and JSONDict (#577).
- The old custom JSON encoder and dumps wrapper (#577).
- The MPIPool and the filesystems.py module (#575).
- The following Project methods:
get_id
,build_job_search_index
,build_job_statepoint_index
,find_job_ids
,reset_statepoint
,update_statepoint
,create_access_module
,index
,dump_statepoints
,get_statepoint
,read_statepoints
,write_statepoints
,groupbydoc
,root_directory
,num_jobs
(#574, #593, #599, #601, #752). - The following Job methods:
get_id
,workspace
,ws
,reset_statepoint
(#578, #752). - The
syncutil.copytree
method (#581). - All Crawlers, including
RegexFileCrawler
,MainCrawler
,MasterCrawler
,SignacProjectCrawler
, andBaseCrawler
, in addition to all associated functionality in indexing.py (#580). - The cite.py module (#594).
- The following types of exceptions:
AuthenticationError
,ExportError`,
FetchError,
PermissionsError`` (#595, #596). - All MongoDB database functionality, including the
db
subpackage, theconnection
,crypt
, andhost
submodules in thecommon
subpackage, and all associated configuration information (#576, #596). - The
JobSearchIndex
class (#587). - The ability to pass indexes to various
Project
methods (#599). - The following
JobsCursor
methods:groupbydoc
,next
(#601, #604). - The
Project.config
property is no longer mutable. Use the command line$ signac config
to modify configuration (#608, #246, #244). - The config module and all its functions, all of which have been made private (#674, #753, #789, #847, #877).
Project
subclasses can no longer define aJob
subclass to use (#588, #693).- The
Collection
class (#664, #667, #683). - The
project
CLI subcommand (#752). - The
--workspace
option for the command linejob
subcommand (#752). - The ability to call
Project.workspace
, it is strictly a property now (#752). ProjectSchema.__call__
,ProjectSchema.detect
(#752).- The
--doc-filter
option for several command line subcommands (#613, #795). - The public API of the
synced_collection
subpackage (#807, #790). - The warnings module (#815).
- The signac.common.validate module (#853).
- The
Config
class (#860). - The
DictManager
class (#858). - The
signac.testing
module (#863). - Zenodo is no longer updated (#903).
1.8.0
[1.8.0] -- 2022-10-05
Added
- Official support for Python 3.10 (#631).
- Benchmarks can be run using the
asv
(airspeed velocity) tool (#629). - Continuous integration tests run in parallel with
pytest-xdist
(#705). - The
Project.path
andJob.path
properties (#685).
Changed
- Schema migration is now performed on directories rather than signac projects and supports a wider range of schemas (#654).
- Deprecated features now use
FutureWarning
instead ofDeprecationWarning
, which is hidden by default (#687, #691, #692). - Project names have a default in anticipation of removing names entirely. Project names will be removed in signac 2.0 (#644).
Project.workspace
is now a property, not a method (#685).- Continuous integration uses GitHub Actions instead of CircleCI (#776, #788).
- Raise errors in testing when
DeprecatedWarning
s orFutureWarning
s are raised (#713). - Change GitHub PR to check for uncompleted tasks (i.e. unchecked checkboxes) (#686).
Deprecated
Project
methodsread_statepoints
,write_statepoints
, anddump_statepoints
are deprecated (#579, #197).Project.index
method is deprecated (#591, #588).JobSearchIndex
class is deprecated (#600).index
argument is deprecated inProject
methods (#602, #588).signac.cite
module is deprecated (#611, #592).- The
config
module and all its methods are deprecated (#675, #753, #814). - Accessing
Project.workspace
as a method, it should be accessed as a property (#685). Project.num_jobs
(#685).ProjectSchema.__call__
,ProjectSchema.detect
(#685).
Fixed
H5Store.mode
returns the file mode (#607).- User-provided path functions now raise an error if not unique (#666).
Collection
class no longer raises an error when searching by a primary key that does not exist (#676).- Relative paths on Windows are not used if the current directory has no common prefix (#777).
get_project()
now raises an error if provided a root directory that does not exist (#779, #792).- Catch internally raised warnings on use of deprecated password cache (#754).
- Catch
KeyError
from multithreading error (#710). - Tests now properly show raised warnings (#603).
Removed
- Removed upper bound of Python 4 on
python_requires
(#780, #781). - Dropped support for Python 3.6 and Python 3.7 (#715) following the recommended support schedules of NEP 29.
- Dropped dependency on
deprecation
package (#687, #718). - Removed unused
_extract
utility function to avoid CVE-2007-4559 (#829).
1.7.0
This release adds SyncedCollection
s, a new, performant, and flexible approach to syncing job state points and documents with an underlying resource. Thanks to all who contributed! 🎨
Added
- New
SyncedCollection
class and subclasses to replaceJSONDict
with more general support for different types of resources (such as MongoDB collections or Redis databases) and more complete support for different data types synchronized with files (#196, #234, #249, #316, #383, #397, #465, #484, #529, #530). This change introduces a minor-backwards incompatible change; for users making direct use of signac buffering, theforce_write
parameter is no longer respected. If the argument is passed, a warning will now be raised to indicate that it is ignored and will be removed in signac 2.0. - Unified querying for state point and document filters using 'sp' and 'doc' as prefixes (#332, #514). This change introduces a minor backwards-incompatible change to the
Collection
index schema ('statepoint'->'sp'), but this does not affect any APIs, only indexes saved to file using a previous version of signac. Indexing APIs will be removed in signac 2.0.
Changed
- Optimized internal path joins to speed up project iteration (#515).
Deprecated
doc_filter
arguments, which are replaced by namespaced filters. Due to their long history,doc_filter
arguments will still be accepted in signac 2.0 and will only be removed in 3.0 (#516).- The modules
signac.core.attrdict
,signac.core.json
,signac.core.jsondict
, andsignac.core.synceddict.py
are deprecated in favor of the newSyncedCollection
classes and will be removed in signac 2.0 (#483).
Fixed
1.6.0
This release focuses on performance improvements and better docs. Large projects should see massive speedups (4-7x on an SSD) for iterating over the project and working with signac-flow. Now you can scale up your science! 🎨
Added
Changed
- Optimized job hash and equality checks (#442, #455).
- Optimized
H5Store
initialization (#443). - State points are loaded lazily when
Job
is opened by id (#238, #239). - Optimized
Job
andProject
classes to cache internal properties and initialize on access (#451). - Python 3.6 is only tested with oldest dependencies (#474).
- Improved documentation for updating and resetting state points (#444).
Deprecated
- Deprecate
syncutil.copytree
method (#439).
Fixed
- Zero-dimensional NumPy arrays can be used in state points and documents (#449).
1.5.1
1.5.0
Added
- Type annotations are validated during continuous integration (#313).
- Added
_repr_html_
method inProjectSchema
class (#314, #324). - Allow grouping by variables that are not present in all jobs in the project in
JobsCursor.groupby
(#321, #323). - Added parameters
usecols
andflatten
to allow selection of columns and flattening of nested data when converting signac data into a pandas DataFrame (#327, #330). - Added support for pre-commit hooks (#355, #358).
- Expanded CLI documentation (#187, #359, #377).
Changed
- Docstrings are now written in numpydoc style.
Fixed
- Fix the
signac config verify
command (previously broken) (#301, #302). - Warnings now appear when raised by the
signac
CLI (#317, #308). - Fix dots in synchronization error messages (#375, #376).
Deprecated
- Deprecate the
create_access_modules
method inProject
, to be removed in 2.0 (#303, #308). - The
MainCrawler
class has replaced theMasterCrawler
class. Both classes are deprecated (#342).
Removed
- Dropped support for Python 3.5 (#340). The signac project will follow the NEP 29 deprecation policy going forward.
- Removed dependency on
pytest-subtests
(#379).
1.4.0
Added
- Added Windows to platforms tested with continuous integration (#264, #266).
- Add command line option
-m/--merge
forsignac sync
(#280, #230).
Changed
- Workspace directory is created when
Project
is initialized (#267, #271). - Changed testing framework from
unittest
topytest
(#212, #275). - Refactored internal use of deprecated
get_statepoint
function (#227, #282).
Fixed
- Fixed issues on Windows with
H5Store
, project import/export, and operations that move files (#264, #266). - Calling
items
orvalues
on_SyncedDict
objects does not mutate nested dictionaries (#234, #269). - Fixed issue with
project.data
access from separate instances ofH5StoreManager
(#274, #278). - Fixed error when launching
signac shell
if permissions are denied for.signac_shell_history
(#279).
Removed
1.3.0
Added
- Official support for Python 3.8 (#258).
- Add properties
Project.id
andJob.id
(#250). - Add
signac.diff_jobs
function to compare two or more state points (#248, #247). - Add function to initialize a sample data space for testing purposes (#215).
- Add schema version to ensure compatibility and enable migrations in future package versions (#165, #253).
Changed
- Implemented
Project.__contains__
check in constant time (#231).
Fixed
- Attempting to create a linked view for a Project on Windows now raises an informative error message (#214, #236).
- Project configuration is initialized using ConfigObj, allowing the configuration to include commas and special characters (#251, #252).
Deprecated
- Deprecate the
get_id
method inProject
andJob
classes in favor of theid
property, to be removed in 2.0 (#250). - In-memory modification of the project configuration, to be removed in 2.0 (#246).
Removed
- Dropped support for Python 2.7 (#232).