Releases: AllSpiceIO/py-allspice
v3.8.0
Highlights
- Fix failure when committing releases and assets by @shrik450 in #204
- Properly enforce the log_level param for AllSpice clients @shrik450 in #188
- Fix merging failing on Design Reivews by @shrik450 in #208
- Make
has_actions
patchable on Repository objects by @shrik450 in #202 - Add methods to get and create Issue attachments by @shrik450 in #210
###Other Changes
- Bump ruff from 0.8.1 to 0.8.4 by @dependabot in #201
- Update libcst requirement from ~=1.4.0 to ~=1.6.0 by @dependabot in #206
- Change AllSpice Hub Test org name by @shrik450 in #207
Full Changelog: v3.7.0...v3.8.0
v3.7.0
What's Changed
-
Update system capture test snapshots with added component attributes by @shrik450 in #187
-
Enforce max retries in list_components by @shrik450 in #198
[!CAUTION]
This could potentially break your BOM generation if individual files were
taking too long to render.
Internal Changes
- Update pdoc requirement from ~=14.7 to ~=15.0 by @dependabot in #189
- Update ruff by @kdumontnu in #196
Full Changelog: v3.6.0...v3.7.0
v3.6.0
What's Changed
-
Generate BOMs with Device Sheets and Board Level Annotations on Altium Projects by @shrik450 and @polypour in #182 and #183
Adds support for Altium Device Sheets and Board Level Annotations in
list_components
andgenerate_bom
. To use device sheets located in another repo, pass thedesign_reuse_repositories
argument to those functions. -
Update syrupy requirement from ~=4.6 to ~=4.7 by @dependabot in #179
-
Update pdoc requirement from ~=14.5 to ~=14.7 by @dependabot in #185
v3.5.0
What's Changed
-
Fix many, but not all, typing failures by @shrik450 in #168
This also fixes a few bugs that have been present in the library for a while, such as adding comments failing for issues requested using
Issue.request
. -
Add endpoint to fetch git trees by @shrik450 in #175
The new
Repository.get_tree
method can be used to fetch the tree of a commit in a repository. This is useful if you want to list all files in a commit, and can replace most uses ofRepository.get_git_content
. -
Refactor BOM generation to centralize logic by @shrik450 in #177
This also fixes bugs in the System Capture SDAX BOM generation which prevented sorting and filtering from being applied there.
-
Filter out blank components in list_components by @shrik450 in #176
-
Add column configuration to skip in output by @shrik450 in #178
A new column configuration,
skip_in_output
, can be used to remove a column from the BOM output, which is useful when a column is used for grouping, filtering or sorting but isn't required in the BOM.
v3.4.0
What's Changed
-
Combine multi-part components for OrCAD by @shrik450 in #161
This fixes a correctness issue where multi-part components would be represented as multiple components in the BOM.
-
Implement simple BOM post processing by @shrik450 in #157
This adds suite of configuration options to customize the output of the
utils.bom_generation
module. You can now sort columns, filter rows using regex, specify the separator for grouped columns, and more. See the docs of the bom_generation module for more details. -
Support System Capture SDAX for components list and BOM by @shrik450 in #164
You can now list the components in a System Capture SDAX file using
utils.list_components.list_components
and generate a BOM usingutils.bom_generation.generate_bom
.
v3.3.1
What's Changed
-
Fix Design Review Comments not having an associated repo by @shrik450 in #162
This fixes a bug that made it impossible to make any changes or add
attachments to a comment on a design review.
Internal Changes
- Update ruff requirement from ~=0.4 to ~=0.5 by @dependabot in #156
- Fix CI typecheck failure due to changed cassettes by @shrik450 in #149
- Move test repo sources to AllSpiceTests org by @shrik450 in #160
Full Changelog: v3.3.0...v3.3.1
v3.3.0
What's Changed
-
Combine Altium multi-part components by @shrik450 in #147
Earlier, multi-part Altium components would be represented as multiple
components in bothlist_components
andgenerate_bom
. Now,
list_components
adds a keyword argument:combine_multi_part
. When set to
True
, multi-part components will be combined into one component for each
instance. Ingenerate_bom
, multi-part components are always combined.
Internal Changes
v3.2.0
What's Changed
-
Remove BOM and COGS generation examples by @shrik450 in #116
The packaged actions at https://hub.allspice.io/Actions/generate-bom and
https://hub.allspice.io/Actions/cofactr-cogs are now the source of truth for
these scripts. -
Remove non-BOM components from Altium BOM by @shrik450 in #119
py-allspice now removes Standard (No BOM) components from Altium BOMs.
-
Extract components list function for Altium from BOM by @shrik450 in
#122Now you can:
from allspice.utils.list_components import list_components_for_altium list_components_for_altium(...) # Returns a list of all components in the project
This is useful if you want a list of components for further processing instead
of generating a BOM and reading it as a CSV. -
Automatically add type hints for API Object attributes by @shrik450 in #141
All API objects now have type hints for all attributes present in them! You
can use the type hints to type check your scripts with mypy or pylance, or
for autocomplete in your IDE.
Internal Changes
- Remove invalid flag from pdoc invocation by @shrik450 in #121
- Lint that imports are sorted by @shrik450 in #123
- Update pdoc requirement from ~=14.4 to ~=14.5 by @dependabot in #137
- Remove top-level
__init__.py
by @shrik450 in #133 - Add dependabot config by @shrik450 in #132
- Replace setup.py with pyproject metadata by @shrik450 in #134
- Bump actions/checkout from 3 to 4 by @dependabot in #139
- Bump actions/setup-python from 4 to 5 by @dependabot in #138
Full Changelog: v3.1.0...v3.2.0
v3.1.0
What's Changed
-
Add utils for OrCAD components and BOM by @shrik450 in #107
A new util module has been added:
list_components
. Use this to get a list of
components with all attributes as a list of dictionaries:from allspice.utils import list_components components = list_components_for_orcad(...)
This is useful if you want to perform further processing of your own on the
list of components, e.g. validate whether a component is allowed.Along with this, BOM generation now supports OrCAD schematics! To use it, try
allspice.utils.bom_generation.generate_bom_orcad
.Py-allspice now also ships with a "universal" bom generation function:
allspice.utils.bom_generation.generate_bom
, which will automatically decide
whether to use the altium or orcad bom generation. -
Add version attr to top level module by @shrik450 in #110
Now, you can check which version of py-allspice you are using in a script:
import allspice print(allspice.__version__) # => 3.1.0
-
Remove BOM and COGS generation examples by @shrik450 in #116
These example scripts have been removed, and users are encouraged to refer to
the https://github.com/AllSpiceIO/generate-bom-altium and
https://github.com/AllSpiceIO/cofactr-cogs.
Full Changelog: v3.0.0...v3.1.0
v3.0.0
There are breaking changes in this release, and you may have to update your
scripts to use this version.
Breaking Changes
The main (and only) breaking change in this release is an overhaul of the BOM
generation utility function
allspice.utils.bom_generation.generate_bom_for_altium
. The changes are:
-
generate_bom_for_altium
no longer takes a PcbDoc file as an argument. The
BOM generation logic has been reworked to only use a PrjPcb file as the sole
entrypoint and generate the entire BOM from the schematics.See #83
-
You can now customize the columns of the BOM and how rows are grouped using
thecolumns
andgroup_by
arguments. This replaces the former
attributes_mapping
argument.For example, if you want to have columns "Comment", "Part ID" and
"Manufacturer" in your BOM and group them by the "Part ID", you would pass:generate_bom_for_altium( # ... columns={ "Comment": ["Comment", "Description", "_description"], "Part ID": "_part_id", "Manufacturer": ["Manufacturer", "MFN"], }, group_by=["Part ID"], )
This also shows the
_description
and_part_id
attributes which are
populated from the component itself.See #84
-
BOM generation now supports variants, and you can select which variant to
generate a BOM for using thevariant
argument.See #86
Other changes
The example scripts for BOM generation and COGS generation have also been
updated to work with these new changes.