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.setuptools key in pyproject.toml (#1020).
  • Define build command in asv.conf.json to 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 than Job.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).

- 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 sp and id are 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).
  • 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 raise RuntimeError (#612).
  • State points and documents require keys to be of type str (#719).
  • The keyword _id of the Job constructor has been renamed to id_ (#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 and Project.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 to path in the signac.get_project and signac.init_project functions and corresponding Project 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 the hashing module to the job module (#873).
  • Tests are run with all warnings treated as errors (#871).
  • The contents of the syncutil module have been moved into sync (#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, and BaseCrawler, 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, the connection, crypt, and host submodules in the common 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 a Job subclass to use (#588, #693).
  • The Collection class (#664, #667, #683).
  • The project CLI subcommand (#752).
  • The --workspace option for the command line job 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).

- 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.path and Job.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 of DeprecationWarning, 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 DeprecatedWarnings or FutureWarnings are raised (#713).
  • Change GitHub PR to check for uncompleted tasks (i.e. unchecked checkboxes) (#686).

Deprecated

  • Project methods read_statepoints, write_statepoints, and dump_statepoints are deprecated (#579, #197).
  • Project.index method is deprecated (#591, #588).
  • JobSearchIndex class is deprecated (#600).
  • index argument is deprecated in Project 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).

- 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 SyncedCollection class and subclasses to replace JSONDict 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, the force_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, and signac.core.synceddict.py are deprecated in favor of the new SyncedCollection classes and will be removed in signac 2.0 (#483).

Fixed

  • Corrected docstrings for Job.update_statepoint and Project.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 JobsCursor class (#475).

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 and Project 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).

- 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 black and isort pre-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 in ProjectSchema 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 and flatten 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

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 in Project, to be removed in 2.0 (#303, #308).
  • The MainCrawler class has replaced the MasterCrawler 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).

- 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/--merge for signac sync (#280, #230).

Changed

  • Workspace directory is created when Project is initialized (#267, #271).
  • Changed testing framework from unittest to pytest (#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 or values on _SyncedDict objects does not mutate nested dictionaries (#234, #269).
  • Fixed issue with project.data access from separate instances of H5StoreManager (#274, #278).
  • Fixed error when launching signac shell if permissions are denied for .signac_shell_history (#279).

Removed

  • Removed vendored tqdm module and replaced it with a requirement (#289).
  • Removed support for rapidjson as 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.id and Job.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 in Project and Job classes in favor of the id 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).

- 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() and to_json() methods to Collection class (#104, #200).

Fixed

  • Fix issue where shallow copies of instances of Job would 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 the Project, Job, and JobsCursor classes (#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 DictManager class (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 --sp and --doc for signac find that 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 of H5Group and SyncedAttrDict.

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 of H5Group instead 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 ResourceWarning originating from unclosed instance of Collection (#186).
  • Fix issue with using the get_project() function with a relative path and search=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 H5Store and H5StoreManager, which are exposed as the job.data, job.stores, project.data, and project.stores properties respectively.
  • The newly added signac.get_job() function makes it easier to obtain instances of Job by 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 H5Store and H5StoreManager classes, which are useful for storing (numerical) array-like data with an HDF5-backend. These classes are exposed within the root namespace.
  • The job.data and project.data properties which present an instance of H5Store to access numerical data within the job workspace and project root directory.
  • The job.stores and project.stores properties, which present an instance of H5StoreManager to manage multiple instances of H5Store to store numerical array-like data within the project workspace and project root directory.
  • The signac.get_job() and the signac.Project.get_job() functions that allow users to get a job handle by switching into or providing the job's workspace directory.
  • The job variable is automatically set when opening a signac shell from within a job's workspace directory.
  • Add the signac shell -c option which allows the direct specification of Python commands to be executed within the shell.
  • Automatic cast of numpy arrays to lists when storing them within a JSONDict, e.g., a job.statepoint or job.document.
  • Enable Collection class to manage collections stored in compressed files (gzip, zip, etc.).
  • Enable deleting of JSONDict keys through the attribute interface, e.g., del job.doc.foo.
  • Pretty HTML representation of instances of Project and JobsCursor targeted at Jupyter Notebooks (requires pandas, automatically enabled when installed).
  • The to_dataframe() function to export the job state point and document data of a Project or a JobsCursor, e.g., the result of Project.find_jobs(), as a pandas.Dataframe (requires pandas).

Changed

  • Dots (.) in keys are no longer allowed for JSONDict and Collection keys (previously deprecated).
  • The JSONDict module is exposed in the root namespace, which is useful for storing text-serializable data with a JSON-backend similar to the job.statepoint or job.document, etc.
  • The Job.init() method returns the job to allow one-line job creation and initialization.
  • The search argument was added to the signac.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, a KeyError would be raised.
  • Fix issue where the Job.move() would trigger a confusing DestinationExists exception when trying to move jobs across devices / file systems.
  • Fix issue that caused failures when the python-rapidjson package is installed. The python-rapidjson package 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_engine module.
  • The previously deprecated Project.find_statepoints() and Project.find_job_documents() functions have been removed.
  • The Project.find_jobs() no longer accepts the obsolete index argument.

- 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