Releases: yasserfarouk/negmas
Release 0.15.1
Security Updates
- cryptography 46.0.3 → 46.0.5 (fixes CVE-2026-26007)
- pillow 12.1.0 → 12.1.1 (fixes OOB Write vulnerability)
- nbconvert 7.16.6 → 7.17.0 (fixes CVE-2025-53000)
Bug Fixes
- Fix contradictory test assertion in
test_agentk_perceives_timethat expectedrelative_timeto beNoneat the last negotiation step
CI/CD Improvements
- Add GitHub Actions concurrency control to cancel running workflows when a new push is made to the same branch (PRs continue running)
New Features
- Stability criteria system for utility functions with fine-grained caching
- MetaNegotiator classes for ensemble negotiation strategies
- SingletonOutcomeSpace and set operations for outcome spaces
- ExtendedOutcome.best_for() for multi-offer support
- Per-negotiator time and step limits in mechanisms
- LEAVE response type for negotiators to exit without ending negotiation
- allow_none_with_data parameter for information-only messages in SAO
- And many more improvements!
See HISTORY.rst for full details.
Installation
pip install --upgrade negmasv0.15.0
Release 0.15.0
This release focuses on enhancing mechanism capabilities with per-negotiator limits and improving visualization.
Key Features
-
Per-Negotiator Time and Step Limits: Mechanisms now support individual time and step limits for each negotiator, enabling asymmetric negotiation scenarios where different agents have different resources.
-
Offline Negotiation Visualization: New
CompletedRunclass andCompletedRun.plot()method enable visualization of completed negotiations from saved data. -
Scenario Rotation Optimization: New
Scenario.rotate_ufuns()method and optimized tournament performance with efficient scenario statistics rotation. -
Matplotlib Plotting Backend: Scenarios can now be plotted using matplotlib in addition to plotly, providing more flexibility and better performance for static visualizations.
Breaking Changes
Mechanism.nmiis now deprecated in favor ofMechanism.shared_nmito clarify the distinction between shared and per-negotiator interfaces.
New Features
- Per-negotiator time and step limits to mechanisms
CompletedRunclass for representing and persisting completed negotiation runsCompletedRun.plot()method for visualizing completed negotiation runsScenario.rotate_ufuns()method for efficient scenario rotation in tournamentsrecalculate_statsparameter tocartesian_tournamentfor performance optimization- Matplotlib backend support to
Scenario.plot() - Per-negotiation callbacks to
cartesian_tournamentfor monitoring individual negotiations Scenario.normalize_ufuns()for normalizing utility functions to [0, 1] rangeMechanism.to_completed_run()method for creatingCompletedRunfrom mechanism staterational_fractionfield toScenarioInfofor tracking rational outcome percentagesread_onlyproperty to scenario registrycalc_standard_info()andScenario.calc_standard_info()for computing standard scenario metrics- Granular control for pareto frontier serialization in
ScenarioStats.to_dict() - Standardized negotiation save/load format for all mechanism and tournament types
CompletedRun.convert()method for converting between trace formats
Bug Fixes
- Fix race condition in Genius bridge when starting negotiation sessions
- Fix
Mechanism.nmideprecation - now properly useshared_nmithroughout codebase - Ensure per-negotiator
relative_timeis correctly passed to negotiators based on their individual limits - Fix
SAOMechanismnot creatingSAONMIinstances for negotiators (fixes Genius bridge tests) - Fix
ContiguousIssueXML serialization to use efficient integer format - Improve cross-platform path handling for Windows compatibility
- Fix Jupyter notebook test timeouts caused by blocking
fig.show()calls - Fix NaN return value in
compare_ufuns()when using Kendall's tau with constant utility functions - Fix
cartesian_tournament()modifying input scenario objects (now deep copies scenarios)
Documentation
- Add comprehensive migration guide for 0.14 → 0.15 upgrade
- Update publications list with 5 new papers (2024-2025)
- Add documentation for per-negotiator limits
- Add documentation for offline visualization with
CompletedRun - Add documentation for standardized negotiation save/load format
Full Changelog: v0.14.0...v0.15.0
Genius Agents Modularization & Documentation Enhancement"
What's New in v0.13.1
Documentation Improvements
New Negotiators Reference Page
- Comprehensive listing of all 232+ available negotiators
- 36 native SAO negotiators (time-based, MiCRO, tit-for-tat, etc.)
- 35 native GB negotiators
- 196 Genius bridge negotiators organized by ANAC competition year (2010-2019)
New Components Reference Page - Complete listing of all modular negotiation components
- 25+ acceptance policies
- 19+ offering policies
- Genius BOA framework components (acceptance, offering, opponent models)
Expanded Mechanisms Documentation - Detailed overview of all negotiation mechanisms (SAO, GB, ST, MT, GA)
- Mechanism comparison table
- Usage examples and guidelines
Code Improvements
Refactored Genius Negotiators Module
- Reorganized
gnegotiatorsfrom a single 3400+ line file into a well-structured package - Agents now organized by ANAC competition year for better maintainability
- Backward compatible: all existing imports continue to work
Full Changelog
NegMAS v0.12.0
Highlights
This release focuses on compatibility improvements and CI/CD fixes to ensure NegMAS works smoothly across Python versions and build environments.
What's Changed
Python 3.14 Compatibility
- Upgraded dependencies to support Python 3.14
- Fixed numpy/scipy compatibility issues in notebooks
Bug Fixes
- Fixed CLI exit code handling for proper Click behavior
- Fixed IPython import path (
IPython.core.display→IPython.display) - Fixed
scipy.optimize.minimizeresult access for newer numpy versions
Documentation
- Fixed ReadTheDocs build configuration (Python 3.12, Ubuntu 22.04)
- Added missing tutorial images
- Removed deprecated
recommonmarkparser reference
CI/CD
- Updated GitHub Actions workflows for
uv synccompatibility - Changed default branch from
mastertomain - Upgraded
rpds-pyto 0.30.0,ipykernelto 6.29.5 - Added
pillow>=12.1.0andseaborn>=0.13.0to dependencies
Installation
pip install negmas==0.12.0
Full Changelog
https://github.com/yasserfarouk/negmas/compare/v0.11.1...v0.12.0ANAC 2025 first release
This release mostly improves the documentation (slightly), introduces a new signature for the propose() method in SAONegotiator and provide several bugfixes.
Improved CLI
This release contains several bugfixes and speed improvements. Most notably, the negotiate CLI now has a much better documentation which can be accessed as:
negotiate --help
All participants in ANAC 2024 are encouraged to upgrade to this version.
ANAC 2024 Release
This is the first official release for the ANAC 2024 competition.
This release adds Cartesian Tournaments which will be used by the ANL league and includes various bugfixes and performance improvements.
ANAC 2023 first draft release
First release for ANAC 2023
This release includes all the components and interfaces needed to run ANL 2023 and SCML 2023. The most important changes are adding cartesian_tournament() to run simple negotiation tournaments and supporting externally defined actions in all mechanisms to support using RL in SCML 2023.
For participants in ANAC 2023, it is ALWAYS recommended to use the latest version of negmas and whatever other libraries you are using in you development for the competition.
Preparing to support exposition for RL libraries
removing offer from SAO's respond() method.
allowing users to step worlds from the point of view of a set of agents ignoring simulation step boundaries and passing external actions if needed. See World.step() for details.
Generalized Bargaining and Simplified Interfaces
This version adds support for python 3.11 and drops support for python 3.8 and 3.9
We introduce a generalized form of bargaining and prepare for a major release (0.10) in which developing new agents and negotiators will be much simplified by allowing users to just use a single function for negotiators, reducing dependence on controllers and other simplifications.