Recent Releases of signac
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).
- Python
Published by cbkerr 11 months ago
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
$notquery expressions on command line (#970).
Removed
- Unused
ruamel.yamldependency (#981).
- Python
Published by cbkerr about 2 years ago
signac - 2.1.0
What's Changed
- Fix README example init command. by @bdice in https://github.com/glotzerlab/signac/pull/913
- Remove inaccurate guidance about doc filters being removed in 3.0. by @bdice in https://github.com/glotzerlab/signac/pull/916
- Add more descriptive error if
spandidare not provided by @cbkerr in https://github.com/glotzerlab/signac/pull/915 - Use synced_collections. by @bdice in https://github.com/glotzerlab/signac/pull/924
- Remove numcodecs from docs. by @bdice in https://github.com/glotzerlab/signac/pull/925
- CI: No longer test latest packages on Python 3.8 by @b-butler in https://github.com/glotzerlab/signac/pull/938
Full Changelog: https://github.com/glotzerlab/signac/compare/v2.0.0...v2.1.0
- Python
Published by csadorf over 2 years ago
signac - 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).
- Python
Published by bdice almost 3 years ago
signac - 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).
- Python
Published by b-butler over 3 years ago
signac - 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
- Corrected docstrings for
Job.update_statepointandProject.update_statepoint(#506, #563).
- Python
Published by b-butler over 4 years ago
signac - 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
- Implemented
JobsCursor.__contains__check (#449). - Added documentation for
JobsCursorclass (#475).
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).
- Python
Published by bdice about 5 years ago
signac - 1.5.1
Added
- Support for h5py version 3 (#411).
- Added pyupgrade to pre-commit hooks (#413).
- Code is formatted with
blackandisortpre-commit hooks (#415). - Added macOS to CircleCI testing pipeline (#281, #414).
- Official support for Python 3.9 (#417).
Changed
- Optimized internal function
_mkdir_p(#421). - Optimized performance of job initialization (#422).
- Optimized performance of buffer storage (#428).
- Optimized performance of creating/loading synced data structures (#429).
- Python
Published by bdice about 5 years ago
signac - 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).
- Python
Published by bdice over 5 years ago
signac - 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).
Removed
- Removed vendored
tqdmmodule and replaced it with a requirement (#289). - Removed support for
rapidjsonas an alternative JSON library (#285, #287). - Removed tuple of keys implementation of nested dictionaries (#272, #296).
- Python
Published by bdice almost 6 years ago
signac - 1.3.0
Added
- Official support for Python 3.8 (#258).
- Add properties
Project.idandJob.id(#250). - Add
signac.diff_jobsfunction 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_idmethod inProjectandJobclasses in favor of theidproperty, 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).
- Python
Published by bdice about 6 years ago
signac - 1.2.0
Added
- Keep signac shell command history on a per-project basis (#134, #194).
- Add
read_json()andto_json()methods toCollectionclass (#104, #200).
Fixed
- Fix issue where shallow copies of instances of
Jobwould behave incorrectly (#153, #207). - Fix issue causing a failure of the automatic conversion of valid key types (#168, #205).
- Improve the "dots in keys" error message to make it easier to fix related issues (#170, #205).
- Update the
__repr__and__repr_html__implementations of theProject,Job, andJobsCursorclasses (#193). - Reduce the logging verbosity about a missing default host key in the configuration (#201).
- Fix issue with incorrect detection of dict-like files managed with the
DictManagerclass (e.g.job.stores) (#203). - Fix issue with generating views from the command line for projects with only one job (#208, #211).
- Fix issue with heterogeneous types in state point values that are lists (#209, #210).
- Python
Published by csadorf over 6 years ago
signac - 1.1.0
Added
- Add command line options
--spand--docforsignac findthat allow users to display key-value pairs of the state point and document in combination with the job id (#97, #146). - Improve the representation (return value of
repr()) of instances ofH5GroupandSyncedAttrDict.
Fixed
- Fix: Searches for whole numbers will match all numerically matching integers regardless of whether they are stored as decimals or whole numbers (#169).
- Fix: Passing an instance of dict to
H5Store.setdefault()will return an instance ofH5Groupinstead of a dict (#180). - Fix error with storing numpy arrays and scalars in a synced dictionary (e.g.
job.statepoint,job.document) (#184). - Fix issue with
ResourceWarningoriginating from unclosed instance ofCollection(#186). - Fix issue with using the
get_project()function with a relative path andsearch=False(#191).
Removed
- Support for Python version 3.4 (no longer tested).
- Python
Published by csadorf almost 7 years ago
signac - v1.0.0
Highlights
- Native integration of HDF5 files with the
H5StoreandH5StoreManager, which are exposed as thejob.data,job.stores,project.data, andproject.storesproperties respectively. - The newly added
signac.get_job()function makes it easier to obtain instances ofJobby calling the function from within a job's workspace directory or by directly providing the path to the job's workspace directory. This is especially useful for interactive work or when accessing jobs which are outside of the current project. - Simplified export of project and job data to pandas dataframes via the
to_dataframe()function. - Projects and job search results are displayed nicely in Jupyter Notebooks.
- Support for compressed Collection files.
Added
- Official support for Python 3.7.
- The
H5StoreandH5StoreManagerclasses, which are useful for storing (numerical) array-like data with an HDF5-backend. These classes are exposed within the root namespace. - The
job.dataandproject.dataproperties which present an instance ofH5Storeto access numerical data within the job workspace and project root directory. - The
job.storesandproject.storesproperties, which present an instance ofH5StoreManagerto manage multiple instances ofH5Storeto store numerical array-like data within the project workspace and project root directory. - The
signac.get_job()and thesignac.Project.get_job()functions that allow users to get a job handle by switching into or providing the job's workspace directory. - The
jobvariable is automatically set when opening asignac shellfrom within a job's workspace directory. - Add the
signac shell -coption which allows the direct specification of Python commands to be executed within the shell. - Automatic cast of
numpyarrays to lists when storing them within aJSONDict, e.g., ajob.statepointorjob.document. - Enable
Collectionclass to manage collections stored in compressed files (gzip, zip, etc.). - Enable deleting of
JSONDictkeys through the attribute interface, e.g.,del job.doc.foo. - Pretty HTML representation of instances of
ProjectandJobsCursortargeted at Jupyter Notebooks (requires pandas, automatically enabled when installed). - The
to_dataframe()function to export the job state point and document data of aProjector aJobsCursor, e.g., the result ofProject.find_jobs(), as apandas.Dataframe(requires pandas).
Changed
- Dots (
.) in keys are no longer allowed forJSONDictandCollectionkeys (previously deprecated). - The
JSONDictmodule is exposed in the root namespace, which is useful for storing text-serializable data with a JSON-backend similar to thejob.statepointorjob.document, etc. - The
Job.init()method returns the job to allow one-line job creation and initialization. - The
searchargument was added to thesignac.get_project()function, which when True (the default), will cause signac to search for a project within and above a specified root directory, not only within the root directory. The behavior without any arguments remains unchanged.
Fixed
- Fix
Collection.update()behavior such that existing documents with identical primary key are updated. Previously, aKeyErrorwould be raised. - Fix issue where the
Job.move()would trigger a confusingDestinationExistsexception when trying to move jobs across devices / file systems. - Fix issue that caused failures when the
python-rapidjsonpackage is installed. Thepython-rapidjsonpackage is used as the primary JSON-backend when installed. - Fix issue where schema with multiple keys would subset incorrectly if the list of jobs or statepoints was provided as an iterator rather than a sequence.
Removed
- Removes the obsolete and deprecated
core.search_enginemodule. - The previously deprecated
Project.find_statepoints()andProject.find_job_documents()functions have been removed. - The
Project.find_jobs()no longer accepts the obsoleteindexargument.
- Python
Published by csadorf almost 7 years ago
signac -
Fixed
- Ensure that the next() function can be called for a JobsIterator, e.g., project.find().
- Pickling issue that occurs when a _SyncedDict (job.statepoint, job.document, etc.) contains a list.
- Issue with the readline module that would cause signac shell to fail on Windows operating systems.
- Python
Published by csadorf about 7 years ago