Commit Graph

237 Commits

Author SHA1 Message Date
Salvador E. Tropea 5be7254594 Now the row number column is a regular column.
Its name is `Row` and you can put everywhere.
No `number_rows` option needed or special cases, is just another column
2020-08-01 18:31:26 -03:00
Salvador E. Tropea 64576e3975 Moved some repeated code in BoM writers.
All the writers computed some stats. Now they are computed in one place
avoiding repetition.
2020-08-01 16:55:33 -03:00
Salvador E. Tropea 6b9be4a2fc Implemented the group_connectors option of the internal BoM 2020-08-01 16:06:54 -03:00
Salvador E. Tropea 0f57ff8b73 Fixed 'component' column isn't always added, so we must test before remove. 2020-08-01 15:35:12 -03:00
Salvador E. Tropea d66410636e Fixed the column rename feature of the internal BoM 2020-08-01 15:17:54 -03:00
Salvador E. Tropea 107c1c1267 Fixed the use of component.ref_suffix
This is an string and can be '?' or a number.
2020-08-01 14:34:56 -03:00
Salvador E. Tropea 2ad4cccf21 Fixed internal BoM "Join" feature. 2020-08-01 13:16:44 -03:00
Salvador E. Tropea 65f9612104 Removed old comment about KiBoM PR number 2020-08-01 13:16:07 -03:00
Salvador E. Tropea ca67cc8ac3 Fixed columns capitalization.
Now the capitalization is preserved, even when internally we match all
using lowercase.
2020-07-31 20:08:12 -03:00
Salvador E. Tropea 8a5c3724a1 Fixed the "References" column
Now plural as in KiBoM.
2020-07-31 20:01:43 -03:00
Salvador E. Tropea 99bec61576 Fixed references sorting.
Also added a test to check it.
2020-07-31 19:52:01 -03:00
Salvador E. Tropea d55846fe85 Added missing empty line (flake8 detail) 2020-07-31 12:01:25 -03:00
Salvador E. Tropea a523c3ceb9 Added debug information about the SCH, PCB and Config used. 2020-07-31 12:00:49 -03:00
Salvador E. Tropea 984b81fea1 Added support for "Description" BoM column.
For this we are loading:
- The KiCad configuration
- The default and project symbol libs tables
- All the used libs
- All the used DCMs
2020-07-31 11:58:07 -03:00
Salvador E. Tropea 956cba7c98 Fixed verbosity levels bigger than 1.
Partially my fault and also a bug in docopt.
2020-07-28 23:09:33 -03:00
Salvador E. Tropea 9d3645fa41 Implemented the 'Sheetpath' column. 2020-07-28 20:05:50 -03:00
Salvador E. Tropea d8ff6c92aa Implemented 'Part Lib' and 'Footprint Lib' columns. 2020-07-28 19:40:56 -03:00
Salvador E. Tropea 544f34c6fc Added native BoM generator.
Based on KiBoM, but reading the data directly from the .sch
Information from the libs not supported yet.
2020-07-27 22:04:01 -03:00
Salvador E. Tropea f824bee832 Added KiCad v5.x schematic support.
It provides extra information, like which files are part of the
Schematic.
Library components not yet implemented.
2020-07-27 22:01:12 -03:00
Salvador E. Tropea 7dc94bf7be Added default output file name pattern.
Can be applied to all outputs.
2020-07-23 18:26:03 -03:00
Salvador E. Tropea d4d88a5c9d Normalized the PCB and SCH file names.
Now the GS members contains the absolute path and various useful parts
of the name are computed and stored in GS to avoid computing them in
each output.
2020-07-23 12:03:42 -03:00
Salvador E. Tropea 43b97db20c Now IBoM output file is coherent with other outputs.
The user can select the IBoM name mechanism, but the default is to use
a name coherent with all the other outputs.
2020-07-22 19:51:35 -03:00
Salvador E. Tropea d48ed3b23b Added a cache to avoid running external scripts many times to check
their versions
2020-07-22 18:48:18 -03:00
Salvador E. Tropea de6835d366 Fixed import no longer used. 2020-07-22 18:34:26 -03:00
Salvador E. Tropea 165d9aa15d Added full KiBoM configuration from the YAML config. 2020-07-22 18:33:53 -03:00
Salvador E. Tropea 97e95ff7c5 Fixed drill output default value not shown in help.
The docstring macro can evaluate attributes.
2020-07-22 18:30:58 -03:00
Salvador E. Tropea a0a97d8cd6 Added a mechanism to keep docstring spaces at the begining.
If dots are used they are converted into spaces (that aren't counted
for the indentation).
2020-07-22 18:28:49 -03:00
Salvador E. Tropea 53d840a5b1 Delayed the outputs configuration until last moment.
Now we set the data tree, but only configure the used outputs.
This gives a chance to setup things like the PCB and SCH meta-data.
2020-07-22 18:26:12 -03:00
Salvador E. Tropea a4c0df7fb5 Fixed flake8 warnings. 2020-07-22 18:16:18 -03:00
Salvador E. Tropea b89d1f481c Fixes in SCH meta-data collection.
- filename destruction
- code not executed
Also a test to cover all the cases.
2020-07-22 18:14:04 -03:00
Salvador E. Tropea d5168c37cd Added filename expansion for SCH related outputs.
pdf_sch_print is the first to support it.
2020-07-13 19:20:25 -03:00
Salvador E. Tropea 3822a39671 Added _pos to all position formats in the ID field. 2020-07-12 18:59:50 -03:00
Salvador E. Tropea 9d10c991da Changed default name for step files (adds -3D) 2020-07-12 18:55:08 -03:00
Salvador E. Tropea 031c69e27c Added `position` output configuration. 2020-07-12 18:46:37 -03:00
Salvador E. Tropea 36eedc9fce Added `drill` output configuration 2020-07-12 17:43:15 -03:00
Salvador E. Tropea b8b1277f5f Drill map file names can be configured. 2020-07-12 17:01:23 -03:00
Salvador E. Tropea b6347d8992 Drill report now uses %i='drill_report' %x='txt' 2020-07-12 16:27:46 -03:00
Salvador E. Tropea bc52d932b0 Changed default file name for pdf_pcb_print
Now %i is the list of layers (suffixes) and %x is PDF.
The default is %f-%i.%x
2020-07-12 16:17:38 -03:00
Salvador E. Tropea f8c339aa3d Simplified the Optionable.expand_filename() usage.
Now the dir concatenation and absolute expansion is done in the
function avoiding repetition.
2020-07-12 16:15:56 -03:00
Salvador E. Tropea acf6bedda8 Defined %i as 'job' for gerber job files. 2020-07-12 15:55:25 -03:00
Salvador E. Tropea 41de8c032c Added `output` option to control the file name to all plot output formats. 2020-07-12 13:00:38 -03:00
Salvador E. Tropea e2854ef524 Added gerber.gerber_job_file option to control the gerber job file name. 2020-07-12 12:28:00 -03:00
Salvador E. Tropea 63999aa009 Preflight filters parsed by Optionable class.
This makes the filters similar to output options.
- Adds coherence to error messages.
- Enable aliases (used the ones suggested by @leoheck)
Additionally now the README.md preflights documentation comes directly
from --help-preflights
2020-07-12 11:52:44 -03:00
Salvador E. Tropea 9fdc02ecea Added aliases for options.
The test case is the pdf_pcb_print.output_name, which is different than
other *.output options. Now output_name is an alias for output.
2020-07-12 09:41:16 -03:00
Salvador E. Tropea 2dab2417e0 Bumped version to 0.5.0 2020-07-11 14:02:09 -03:00
Salvador E. Tropea 52e6bb1b5f Added support for PcbDraw 2020-07-11 13:49:03 -03:00
Salvador E. Tropea c468dd44e1 Removed unused log import 2020-07-09 18:50:29 -03:00
Salvador E. Tropea f72ff3f441 Extra dot in step.metric_units docstring.
Remove dead code in check_eeschema_do()
Fixed the way we read scale stuff from a PCB
Added special checks for check_script and check_version
2020-07-09 12:50:27 -03:00
Salvador E. Tropea 587ef177b3 Added test for corrupted PCB, skip a preflight that isn't in use and output
plugin
2020-07-09 09:54:25 -03:00
Salvador E. Tropea a48e9ecc96 Added tests to cover out_pdf_pcb_print.py, error case left out 2020-07-09 09:20:52 -03:00
Salvador E. Tropea 2ade49bde5 Removed Layer.get_id(), no longer used. 2020-07-08 23:43:08 -03:00
Salvador E. Tropea d4677a2c2e Added tests for:
- Inner layer that doesn't exist
- Technical layers
- Wrong layer group/spec
2020-07-08 23:34:45 -03:00
Salvador E. Tropea 995b6990aa Added HPGL and PS autoscaling tests.
Added test for example in a dir that must be created.
Removed code not used in docstring trim.
2020-07-08 23:16:04 -03:00
Salvador E. Tropea 05460f4541 Added test for wrong boolean 2020-07-08 21:06:35 -03:00
Salvador E. Tropea 1917b4c601 Added more tests for errors 2020-07-08 20:41:16 -03:00
Salvador E. Tropea 307bed3a36 Added more preflight tests 2020-07-08 19:49:33 -03:00
Salvador E. Tropea 38baa62cbe Fixed ERC/DRC error count report. 2020-07-08 19:28:07 -03:00
Salvador E. Tropea 922b853084 Fixed ignore_unconnected.
Also added a test and a test for the error type.
Additionally the BasePreflight now provides default run/apply members.
2020-07-08 16:29:30 -03:00
Salvador E. Tropea 4368364489 Refactored the BaseOutput class to make it more similar to the YAML
Now the options are just an attribute of the outputs.
It means we have a set of classes for the options.
All the output content is parsed by the classes, including the Layers.
Now the layers support a simple string (with interesting shortcuts), a list of
strings or the original list of dicts.
2020-07-08 15:17:24 -03:00
Salvador E. Tropea 1c4c94cfa2 Some super() use clean-up.
Now using Python3 style everywhere.
Added some missing calls to allow more cases of use.
2020-07-05 19:11:52 -03:00
Salvador E. Tropea 45ecb1d02a Added a mechanism to specify suboptions.
Now the legacy drill.map.type and drill.report.filename are specified in this
way.
The BaseOutput class now inherits from Optionable.
Suboptions are just Optionable classes.
Also: added traceback print when an error is reported and we are in debug mode.
2020-07-05 12:40:57 -03:00
Salvador E. Tropea ee11ecf8e7 Added number, variant, conf and separator KiBoM options. 2020-07-02 23:30:57 -03:00
Salvador E. Tropea b48998bb86 Applied abspath to the output path to make is cleaner. 2020-07-02 23:29:53 -03:00
Salvador E. Tropea 4538236574 Now outputs and preflights are loaded as plugins.
They can be added from ~/.config/kiplot/plugins/
Also sorted the preflights in the YAML example and allower -v for
--help-list-outputs, needed to know from where are the plugins loaded.
2020-07-02 12:30:30 -03:00
Salvador E. Tropea 1ca21efe94 Now the docstring for string options can specify a list of allowed values
This reduces the number of setters/getters we need to write.
On the other side the time to validate the YAML is increased.
2020-07-02 09:25:06 -03:00
Salvador E. Tropea ec35d2443f Added option to copy plot options from the PCB to the YAML example.
Also added DXF.metric_units and updated the README.
2020-07-01 20:43:03 -03:00
Salvador E. Tropea 3685e3cb8b Enforced a limit to line_width [0.02,2] mm 2020-07-01 11:21:25 -03:00
Salvador E. Tropea 3a1d5d0652 Added pen_number and pen_speed HPGL options 2020-07-01 11:11:33 -03:00
Salvador E. Tropea d926a5419e Added --example basic tests
Also added support for output directory to --example
2020-06-30 20:43:42 -03:00
Salvador E. Tropea 4ae54f3ded Added --example/-x option to generate a configuration example.
The example contains all the available preflights and outputs.
If the user specifies a PCB the names of the layers are from the provided PCB
2020-06-30 20:09:14 -03:00
Salvador E. Tropea f579d648bf Added check for string in outputs.drill.map/report.
Also support 'None' as Python None.
2020-06-30 19:59:21 -03:00
Salvador E. Tropea 60a2649c0f Moved the dril_marks attribute to a separated class.
Reused by 5 output classes.
2020-06-29 20:10:40 -03:00
Salvador E. Tropea 3c6f4950c7 Now the schematic can be specified separately.
We now test if the PCB and/or SCH are there only when we need them.
2020-06-29 19:25:54 -03:00
Salvador E. Tropea 42d1f14056 Now layers are solved when we really need it.
So we can do some operations (like --list) without loading the board.
Also: now the names for the layers are asked to pcbnew classes (not from file)
2020-06-29 12:55:02 -03:00
Salvador E. Tropea 7cd0afcdb9 Excluded from coverage code in macros.py that we aren't using.
This code covers cases that we aren't using.
2020-06-27 19:18:32 -03:00
Salvador E. Tropea a436aea8e7 Now the README.md is sychronized using the help output.
The --help-outputs and --help are embedded in the README.md
To make it easier to read now options are enclosed in `` and the list of
outputs is sorted.
2020-06-27 18:28:05 -03:00
Salvador E. Tropea c82c2f0c39 Added support for all the missing IBoM options.
Note that variants_blacklist and variants_whitelist needs a fresh IBoM.
These options didn't work and crashed IBoM. It was reported as a result of
the tests included in this commit.
2020-06-27 15:04:35 -03:00
Salvador E. Tropea f70e484780 Excluded from coverage the last line of the with document block
This isn't recorded as executed and I don't know how to inform to coverage
that this is executed. SO I'm just excluding them.
2020-06-26 14:46:09 -03:00
Salvador E. Tropea 7726732df9 Created a decorator to register the preflight options 2020-06-26 14:45:33 -03:00
Salvador E. Tropea 2f0f3f755d Changed the command line parser from argparse to docopt.
This make the code cleaner and better documented.
Now the usage is more clear, and also a little bit more strict.
I'm using a modified docopt because I preffer using args.option instead of
args['--option'], I also fixed a few flake8 issues in docopt.py.
2020-06-26 12:04:56 -03:00
Salvador E. Tropea 43b7e27a22 Documented the output_class macro 2020-06-26 12:02:18 -03:00
Salvador E. Tropea 5ce3da2bcc Added a macro decorator to register output classes. 2020-06-25 11:32:13 -03:00
Salvador E. Tropea 46a20404a4 Added preflights help. 2020-06-25 10:31:23 -03:00
Salvador E. Tropea acd5592a45 Now the map.type and report.filename are deprecated in favor of map and report.
The old mechanism is supported, but removed from examples.
Added a test case for the new mechanism.
Documented the reason for the complex properties.
Added docstrings to these particular cases (with None as default).
2020-06-25 09:37:43 -03:00
Salvador E. Tropea fa1ea5bdc9 Outputs help and options review
- Included properties
- The final dot is placed by the printing code (removed from messages)
- docstrings line lengths limited
- Better HPGL help
- Fixed ibom default output (.html.html)
- pdf_pcb_print to use PCB name when not output name
- Default PS scaling factor to 1 (not 2)
2020-06-25 09:05:46 -03:00
Salvador E. Tropea fb5c32f0ad Added negative numbers support to the document macro. 2020-06-25 08:09:39 -03:00
Salvador E. Tropea 6295b00657 Implemented the `sketch_plot` option. 2020-06-24 12:00:53 -03:00
Salvador E. Tropea 505039332b Made sketch_plot default to false when absent. 2020-06-24 11:59:13 -03:00
Salvador E. Tropea 090aa6b8f1 Removed the "plot" option "check_zone_fills".
Not used and overlapped with the preflight option.
2020-06-24 11:26:08 -03:00
Salvador E. Tropea ac4ae89aba Added command line help for the outputs.
--help-list-outputs list supported outputs
--help-outputs list details for the supported outputs
--help-output OUTPUT shows the help for this particular output
2020-06-24 11:02:17 -03:00
Salvador E. Tropea 89fb93d6d7 Documented the output formats in the source code. 2020-06-24 11:01:43 -03:00
Salvador E. Tropea 458d4ba0a9 Removed flake8 issues 2020-06-23 10:27:11 -03:00
Salvador E. Tropea d68376ba2e Added a small test to gerbers output.
Currently commented.
2020-06-23 10:26:29 -03:00
Salvador E. Tropea 6859f89c9c Copied the experiments implementation to the macros file
Is more robust
2020-06-23 10:25:29 -03:00
Salvador E. Tropea 2bb2bd2034 Added preliminary tests to add "automagic" documenation for the output options 2020-06-22 19:47:37 -03:00
Salvador E. Tropea 20d79d58ad Restricted the YAML support to safe features.
I think it doesn't change anything important, but looks sensitive.
2020-06-21 11:58:35 -03:00
Salvador E. Tropea 19023ef4e6 Added tests to cover 100% of kiplot/config_reader.py
Mostly parser errors.
2020-06-19 23:38:09 -03:00
Salvador E. Tropea 7679604646 Major code refactor
Pro:
- Much easier to add new outputs and pre-flights
- All options are optional
- Much better configuration syntax check
- Access to data is simpler

Cons:
- Much more source code files
- I focused on one application, not multiple instances running on the same
  process.
2020-06-19 15:54:55 -03:00
Salvador E. Tropea c2c221151b Bumped version to 0.4.0. 2020-06-17 15:38:49 -03:00
Salvador E. Tropea b8f8ed53bd Added a mechanism to avoid problems with ibom
This new mechanism should be accepted in the upstream.
So we will be able to use unpatched ibom.
2020-06-17 15:34:43 -03:00