Releases: glotzerlab/signac
Releases · glotzerlab/signac
v2.3.0
[2.3.0] -- 2025-04-14
Added
- Implemented
JobsCursor.__getitem__(#1017).
Fixed
- Support for Numpy 2.0 in tests (#997).
- Use
tool.setuptoolskey inpyproject.toml(#1020). - Define build command in
asv.conf.jsonto enable support for asv 0.6.2 and later (#1021). - Documentation build process (#1001).
Changed
- Improved performance of
Project.detect_schema()(#1026).
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
$notquery expressions on command line (#970).
Removed
- Unused
ruamel.yamldependency (#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
spandidare 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).
H5Storerelated errors are now included in the public API (#775).- Users can now access the project to which a job belongs with the
Job.projectattribute (#808).
Changed
- Functions raising
AssertionErrornow raiseRuntimeError(#612). - State points and documents require keys to be of type
str(#719). - The keyword
_idof 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_projectandProject.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_configwill 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
rootparameter topathin thesignac.get_projectandsignac.init_projectfunctions and correspondingProjectmethods (#757, #758). - The prefix argument to
$ signac viewis 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
signacnamespace (#756, #868). - The
calc_idfunction has been moved from thehashingmodule to thejobmodule (#873). - Tests are run with all warnings treated as errors (#871).
- The contents of the
syncutilmodule 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.copytreemethod (#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
dbsubpackage, theconnection,crypt, andhostsubmodules in thecommonsubpackage, and all associated configuration information (#576, #596). - The
JobSearchIndexclass (#587). - The ability to pass indexes to various
Projectmethods (#599). - The following
JobsCursormethods:groupbydoc,next(#601, #604). - The
Project.configproperty is no longer mutable. Use the command line$ signac configto modify configuration (#608, #246, #244). - The config module and all its functions, all of which have been made private (#674, #753, #789, #847, #877).
Projectsubclasses can no longer define aJobsubclass to use (#588, #693).- The
Collectionclass (#664, #667, #683). - The
projectCLI subcommand (#752). - The
--workspaceoption for the command linejobsubcommand (#752). - The ability to call
Project.workspace, it is strictly a property now (#752). ProjectSchema.__call__,ProjectSchema.detect(#752).- The
--doc-filteroption for several command line subcommands (#613, #795). - The public API of the
synced_collectionsubpackage (#807, #790). - The warnings module (#815).
- The signac.common.validate module (#853).
- The
Configclass (#860). - The
DictManagerclass (#858). - The
signac.testingmodule (#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.pathandJob.pathproperties (#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
FutureWarninginstead 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.workspaceis now a property, not a method (#685).- Continuous integration uses GitHub Actions instead of CircleCI (#776, #788).
- Raise errors in testing when
DeprecatedWarnings orFutureWarnings are raised (#713). - Change GitHub PR to check for uncompleted tasks (i.e. unchecked checkboxes) (#686).
Deprecated
Projectmethodsread_statepoints,write_statepoints, anddump_statepointsare deprecated (#579, #197).Project.indexmethod is deprecated (#591, #588).JobSearchIndexclass is deprecated (#600).indexargument is deprecated inProjectmethods (#602, #588).signac.citemodule is deprecated (#611, #592).- The
configmodule and all its methods are deprecated (#675, #753, #814). - Accessing
Project.workspaceas a method, it should be accessed as a property (#685). Project.num_jobs(#685).ProjectSchema.__call__,ProjectSchema.detect(#685).
Fixed
H5Store.modereturns the file mode (#607).- User-provided path functions now raise an error if not unique (#666).
Collectionclass 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
KeyErrorfrom 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
deprecationpackage (#687, #718). - Removed unused
_extractutility function to avoid CVE-2007-4559 (#829).
1.7.0
This release adds SyncedCollections, a new, performant, and flexible approach to syncing job state points and documents with an underlying resource. Thanks to all who contributed! 🎨
Added
- New
SyncedCollectionclass and subclasses to replaceJSONDictwith 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_writeparameter 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
Collectionindex 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_filterarguments, which are replaced by namespaced filters. Due to their long history,doc_filterarguments 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.pyare deprecated in favor of the newSyncedCollectionclasses 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
H5Storeinitialization (#443). - State points are loaded lazily when
Jobis opened by id (#238, #239). - Optimized
JobandProjectclasses 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.copytreemethod (#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 inProjectSchemaclass (#314, #324). - Allow grouping by variables that are not present in all jobs in the project in
JobsCursor.groupby(#321, #323). - Added parameters
usecolsandflattento 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 verifycommand (previously broken) (#301, #302). - Warnings now appear when raised by the
signacCLI (#317, #308). - Fix dots in synchronization error messages (#375, #376).
Deprecated
- Deprecate the
create_access_modulesmethod inProject, to be removed in 2.0 (#303, #308). - The
MainCrawlerclass has replaced theMasterCrawlerclass. 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/--mergeforsignac sync(#280, #230).
Changed
- Workspace directory is created when
Projectis initialized (#267, #271). - Changed testing framework from
unittesttopytest(#212, #275). - Refactored internal use of deprecated
get_statepointfunction (#227, #282).
Fixed
- Fixed issues on Windows with
H5Store, project import/export, and operations that move files (#264, #266). - Calling
itemsorvalueson_SyncedDictobjects does not mutate nested dictionaries (#234, #269). - Fixed issue with
project.dataaccess from separate instances ofH5StoreManager(#274, #278). - Fixed error when launching
signac shellif permissions are denied for.signac_shell_history(#279).