Commit Graph

595 Commits

Author SHA1 Message Date
Jan Kundrát
71d6a1138c Fix a typo in my e-mail address
This has been around since before 1a104956, but I haven't noticed the
missing `.com`.
2019-08-08 10:53:52 +02:00
Jan Kundrát
2dd4745ef7 Merge pull request #281 from jktjkt/no-convenience-access
Remove property aliases
2019-08-06 09:46:36 +00:00
Jan Kundrát
cd234a909b Remove unimplemented and unused code 2019-08-06 11:22:56 +02:00
Jan Kundrát
c249f44ea1 Remove property aliases
For some reason, the code allowed using "convenience names" for
accessing properties since commit 58ac717f. To me, this looks like an
obvious anti-pattern because accessing a single property via three
different names only makes the code less readable. Let's kill this
"feature".

In case of the `Power` class, the code used "ase" and "nli" on the
majority of places, so let's use these abbreviations instead of their
spelt-out variants.

SpectralInformation was "clean" already, but there were calls to the
`update()` wrapper around the `namedtuple._replace`.  Given that there
were no property aliases, it's safe to just call `_replace()` directly.

In case of the `Pref` class, once again always use `p_span0`, `p_spani`
instead of `p0` and `pi` -- it's a trivial change.
2019-08-06 11:14:28 +02:00
Jan Kundrát
27dcd29074 CI: Attempt to builds docs during regular CI, too
Since ReadTheDocs does not support [1] running as a CI check on GitHub
yet, let's make sure that we at least run sphinx. This would have caught
a recent docs breakage (see parent commit).

[1] https://github.com/readthedocs/readthedocs.org/issues/1340
2019-07-04 00:37:58 +02:00
Jan Kundrát
93986f36c3 docs: Fix docs building
Docs building started failing after our dependency update. The reason is
that the updated sphinx bibtex extension started being a bit stricter in
their interpretation of bibliography files:

  parsing bibtex file /home/jkt/work/TIP/oopt-gnpy/docs/biblio.bib...
  Exception occurred:
    File "/home/jkt/work/TIP/_py/lib64/python3.6/site-packages/pybtex/errors.py", line 78, in report_error
      raise exception
  pybtex.database.input.bibtex.DuplicatePersonField: entry with key bononi_modeling_2012 has a duplicate year field

Fix this by using `date` as field name when a full date is given.
2019-07-04 00:37:23 +02:00
Jan Kundrát
a6ab8055b1 CI: do not attempt to cd twice
I misunderstood how Travis CI works; it's not a subshell, it's something
which affects the other commands. Let's just run everything from the
top-level directory.
2019-07-04 00:28:33 +02:00
Jan Kundrát
31ea479d7f Merge pull request #268 from jktjkt/prune-dependencies
Update and rework dependency handling

fixes #269
2019-06-25 15:25:48 +02:00
Jan Kundrát
89fb2e047b Update dependencies
Pinning dependencies to a specific version is safe in terms of
preventing accidental breakage, but it has a cost of possibly using
outdated dependencies.

Let's see if we can rely on the semantic versioning of our dependencies
here.

I'm doing this instead of other approaches (such as splitting the
top-level deps from "the rest of the dep chain" [1][2]) because I require
additional tools in my venv, such as the python-lnaguage-server. There
would be little point in injecting these into requirements to be used by
other people.

[1] https://www.kennethreitz.org/essays/a-better-pip-workflow
[2] 59eb51c026
2019-06-21 12:13:38 +02:00
Jan Kundrát
8f705e6173 requirements: only list what we really need
Listing all transitive dependencies, including their respective versions
(as done by `pip freeze`, for example) is something which effectively
leads to installing outdated and possibly vulnerable software.

Let's get rid of the transitive dependencies.

Thanks to Esther for noticing.
2019-06-21 11:46:17 +02:00
Jan Kundrát
8f735316f5 Merge pull request #264 from Telecominfraproject/master
Merge master into develop

...so that the docs are updated and synced.
2019-06-19 14:28:45 +02:00
Jan Kundrát
0d7a1871a1 Merge pull request #259 from jktjkt/docs
docs: Show a pretty picture of GNPy in action

Thanks to Esther for suggesting this, and to Gert and Esther for their reviews.
2019-06-19 11:57:55 +02:00
Jan Kundrát
33832b3d25 docs: Animated invocation of transmission_main_example.py
Tools used:
- [asciinema](https://asciinema.org/) for recording the session
- `$EDITOR` for a few simple fix-ups
- [termtosvg](https://github.com/nbedos/termtosvg) for creating the
resulting SVG so that it's fully self-contained
- pushing the results to the `gh-pages` so that it's available and not
subject to [random filtering and
breakage](https://stackoverflow.com/questions/13808020/include-an-svg-hosted-on-github-in-markdown),
such as the animated SVG not actually animating

I'm still linking to asciinema.org because that site offers nice
cut-and-oaste capabilities, playback control, etc.

Co-Authored-By: Gert Grammel <ggrammel@juniper.net>
2019-06-19 11:54:44 +02:00
Jan Kundrát
e1dc3dc357 docs: no need to cd examples first
The code determines these paths relative to the actual example .py file
already. Given that `pytest` and other bits expect to run from the
top-levle directory, let's remove this misleading instruction from the
docs.
2019-06-17 20:01:36 +02:00
Jan Kundrát
8259124f73 docs: Show a pretty picture of GNPy in action
I do not have a vector image of this one, unfortunately. The data
apparently comes from "someone at TIP", perhaps a hired graphic
designer. It was passed to me by Diego Landa when I asked for the
original dataset.
2019-06-17 19:55:00 +02:00
Jan Kundrát
7ab67194d6 Merge a3778dfe8b into 603ac9d8c5 2019-06-11 08:47:09 +00:00
Jan Kundrát
603ac9d8c5 Merge pull request #257 from jktjkt/fixes
Python: do not use a mutable default value
2019-06-11 10:46:25 +02:00
Jan Kundrát
a3c7811e9d Merge pull request #256 from jktjkt/docs
Documentation fixes (plus an equipment.Fiber.beta2 change)
2019-06-11 10:45:23 +02:00
Jan Kundrát
a3778dfe8b Merge pull request #255 from jktjkt/weekly-calls
Encourage people to join us and to join the VCs
2019-06-11 10:45:00 +02:00
Jan Kundrát
2dff934612 CI: run the examples as well
We are not checking their results or anything, but it is nice to be able
to say "hey, these still work".
2019-06-07 00:02:53 +02:00
Jan Kundrát
89d666948e Fiber: beta2: use a default value directly
Rather than do the None-dance and document the default value within a
docstring, let's use the default value directly. This is safe because
numbers are immutable.
2019-06-06 23:55:16 +02:00
Jan Kundrát
c3499142b0 doc: hyperlinks++ 2019-06-06 23:47:52 +02:00
Jan Kundrát
d8feccc715 Python: do not use a mutable default value
Because default arguments are evaluated *once*, not every time they are
called, a mutable default value is not "reset", and this happens:

>>> from gnpy.core.node import Node
>>> x=Node('123')
>>> y=Node('456')
>>> print(x.metadata)
{'location': Location(latitude=0, longitude=0, city=None, region=None)}
>>> print(y.metadata)
{'location': Location(latitude=0, longitude=0, city=None, region=None)}
>>> y.metadata['foo']=123
>>> print(x.metadata)
{'location': Location(latitude=0, longitude=0, city=None, region=None), 'foo': 123}

This is easily fixable by using an immutable value as a placeholder
here.
2019-06-06 23:29:07 +02:00
Jan Kundrát
16173355f3 docs: random improvements and Sphinxiation 2019-06-06 23:26:12 +02:00
Jan Kundrát
f46134fda5 docs: document the _private methods
This is a reference documentation, so it makes sense for it to be
reasonably complete.
2019-06-06 23:05:42 +02:00
Jan Kundrát
bfecff0412 docs: use a default preset here to prevent extra repetitions 2019-06-06 23:04:34 +02:00
Jan Kundrát
168f1891cf docs: ensure that all modules are documented 2019-06-06 22:55:56 +02:00
Jan Kundrát
862845b4ac docs: minor grammar fixes 2019-06-06 21:51:48 +02:00
Jan Kundrát
b7a5dbff49 Encourage people to join us and to join the VCs
This was suggested by Esther on today's PSE group call.
2019-06-06 18:39:21 +02:00
Jan Kundrát
5be30d89a7 Merge pull request #230 from Orange-OpenSource/build_no_amp_in_roadm
ROADMs can now specify which amplifiers can be used as their preamps and boosters.
2019-06-06 12:47:06 +02:00
Esther Le Rouzic
d94dc51d88 Restrictions on auto-adding amplifiers into ROADMs
This feature is intended to support designs such as OpenROADM where the
line degree integrates a specific preamp/booster pair. In that case, it
does not make sense for our autodesign to "pick an amplifier". The
restrictions can be activated by:

- Listing them in `eqpt_config.json`, so that they are effective for all
ROADM instances.
- On a per-ROADM basis within the Excel sheet or the JSON definitions.

Restrictions apply to an entire ROADM as a whole, not to the individual
degrees.

If a per-degree exception is needed, the amplifier of this degree can be
defined in the equipment sheet or in the network definition.

If no booster amplifier should be placed on a degree, use the `Fused`
node in place of an amplifier.

Signed-off-by: Esther Le Rouzic <esther.lerouzic@orange.com>
Co-authored-by: Jan Kundrát <jan.kundrat@telecominfraproject.com>
2019-06-06 11:58:45 +02:00
Jan Kundrát
22acd88d44 Utility functions for pruning and merging
Co-authored-by: Esther Le Rouzic <esther.lerouzic@orange.com>
2019-06-06 11:42:05 +02:00
Jan Kundrát
2c485efced Merge pull request #252 from Orange-OpenSource/bug_fixes_create_eqpt_sheet
Refactoring and bug fixes in an auxiliary transformation tool.
2019-05-31 16:26:10 +02:00
EstherLerouzic
279d08a0e8 Correct testTopology file
testTopology listed corlay twice in Eqpt although it is a ILA.
should appear only once in node A column

update expected parser results for this change in tests/data

Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
2019-05-31 11:31:46 +01:00
EstherLerouzic
1d4a8998e1 Bug fix on create_eqpt_sheet.py
program was not correctly listing nodes when links duplicate EDFA entries.
I refactored it to make it simpler to understand.

I added coordinates on ../tests/data/testTopology.xls for plot purpose

Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
2019-05-31 11:31:46 +01:00
Jan Kundrát
47a41e7980 Merge pull request #251 from jktjkt/json-parsing-exceptions
Use exceptions instead of `sys.exit()` when reporting configuration errors
2019-05-31 11:24:55 +02:00
Jan Kundrát
ecfc4a8cb2 One fewer exit() in a library scope 2019-05-30 13:58:33 +02:00
Jan Kundrát
2d66b6266b Add a missing FIXME for direct-printing of diagnostics 2019-05-30 12:39:42 +02:00
Jan Kundrát
b7afb5f9d2 Exceptions for errors in network topologies 2019-05-30 12:39:10 +02:00
Jan Kundrát
58c16a59ac Distinguish between "equipment library errors" and other "config errors"
And because no code for these "other config errors" has been merged yet,
this is just a placeholder for future work.
2019-05-30 12:28:47 +02:00
Jan Kundrát
f09789f5ef Refactor color temrinal escaping into a common module
I have no idea which one of the existing pypi modules is best for these,
and given that we're using just two escape codes, I think it makes sense
not to bother with a more capable third-party module just for two magic
strings.
2019-05-30 12:25:53 +02:00
Jan Kundrát
b2e12cd3e0 Use exceptions instead of direct-exit when parsing equipment JSON 2019-05-30 12:06:54 +02:00
Jan Kundrát
71b157a8ba Infrastructure for reporting configuration errors via exceptions
Once the actual config-parsing code start raising these exceptions
instead of directly calling sys.exit(), the user experience would
deteriorate due to raw exception traces. There's little value in the
trace itself, so just wrap the whole config loading with pretty error
formatting.

We still do not point to a specific place where that error is defined
(such as a line/column in a given JSON file) because that information is
already lost by the time we perform these checks.

Also, these checks are largely open-coded ad-hoc stuff. Some required
items are not covered, raising KeyError instead. We should get a formal
schema for these...
2019-05-30 12:06:54 +02:00
Jan Kundrát
783aaa8cb4 Merge remote-tracking branch 'origin/master' into develop 2019-05-27 12:27:23 +02:00
Jan Kundrát
768bd8af19 Merge pull request #247 from jktjkt/rst-fixes
docs: fix RST formatting and introduce CI coverage
2019-05-27 12:26:42 +02:00
Jan Kundrát
3894f52194 CI: test the RST files for validity
fixes #245
2019-05-27 12:08:02 +02:00
Jan Kundrát
dcfa9edb1c docs: Fix JSON syntax 2019-05-27 11:36:02 +02:00
Jan Kundrát
4ebdb5629c docs: specify code-block highlighter 2019-05-27 11:35:56 +02:00
Jan Kundrát
75b0668fc2 docs: Fix JSON syntax -- standard ASCII quotes 2019-05-27 11:35:52 +02:00
Jan Kundrát
5fe94ed463 docs: specify a correct markup language for JSON snippets
Some of these are "pseudo-JSON" with `...` etc, so one has to use `none`
for these.
2019-05-27 11:35:49 +02:00