[BUG] Unhandled type <class 'str'>

To Reproduce
Steps to reproduce the behavior:
$ python addition.py
addition_method_gm_N_1_pretrain_0_exploration_False_run_0_210826_015053743282
Training  for 1 epoch(s)
Epoch 1
Traceback (most recent call last):
  File "/data/home/fchua/deepproblog/src/deepproblog/examples/MNIST/addition.py", line 66, in <module>
    train = train_model(model, loader, 1, log_iter=100, profile=0)
  File "/data/home/fchua/deepproblog/src/deepproblog/train.py", line 200, in train_model
    train_object.train(loader, stop_condition, **kwargs)
  File "/data/home/fchua/deepproblog/src/deepproblog/train.py", line 128, in train
    loss = self.get_loss(batch, loss_function)
  File "/data/home/fchua/deepproblog/src/deepproblog/train.py", line 39, in get_loss
    result = self.model.solve(batch)
  File "/data/home/fchua/deepproblog/src/deepproblog/model.py", line 106, in solve
    return self.solver.solve(batch)
  File "/data/home/fchua/deepproblog/src/deepproblog/solver.py", line 80, in solve
    acs: List[ArithmeticCircuit] = [self.cache.get(q) for q in batch]
  File "/data/home/fchua/deepproblog/src/deepproblog/solver.py", line 80, in <listcomp>
    acs: List[ArithmeticCircuit] = [self.cache.get(q) for q in batch]
  File "/data/home/fchua/deepproblog/src/deepproblog/utils/cache.py", line 52, in get
    return self.first(item)
  File "/data/home/fchua/deepproblog/src/deepproblog/solver.py", line 67, in build_ac
    ground = self.engine.ground(q, label=LogicFormula.LABEL_QUERY)
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/approximate_engine.py", line 124, in ground
    return self.engine.ground(
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/engine.py", line 59, in ground
    proofs = self.get_proofs(term, sp)
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/engine.py", line 88, in get_proofs
    res = program.query(query_str, profile=profile)
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/swi_program.py", line 321, in query
    out_partial[k] = [p for p in term2list(parse(result[0][k]))]
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/swip.py", line 99, in parse
    return pyswip_to_term(to_parse)
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/swip.py", line 50, in pyswip_to_term
    e, vars2 = pyswip_to_term(o, True)
  File "/data/home/fchua/deepproblog/src/deepproblog/engines/prolog_engine/swip.py", line 62, in pyswip_to_term
    raise Exception(
Exception: Unhandled type <class 'str'> from object -(10, -(addition(tensor(train(0)), tensor(train(1)), 5), and(["-(digit(tensor(train(0)), 2), ::(3, nn(mnist_net, ['tensor(train(0))'], 2), digit(tensor(train(0)), 2), ad(0, 2, ['tensor(train(0))'])))", "-(digit(tensor(train(1)), 3), ::(4, nn(mnist_net, ['tensor(train(1))'], 3), digit(tensor(train(1)), 3), ad(0, 3, ['tensor(train(1))'])))", '-(is(5, +(2, 3)), builtin)'])))

Desktop (please complete the following information):

OS: Linux Ubuntu 18.04
Python Version: 3.9

Additional context
pyswip is installed from master branch, otherwise pyswip has a bug in the last release.

Just in case someone else ends up doing my mistake of running pacman -S python-pyswip instead of pip install git+https://github.com/ML-KLUeuven/pyswip.git#egg=PySwip, you will get the same error. Not sure it has anything to do with PySDD.

I have the same problem as freddycct and could not solve it by installing this PySwip fork (https://github.com/ML-KULeuven/pyswip), or re-installing PySDD.
I am using Pop!_OS 20.04 and a this virtual environment:
# packages in environment at /home/david/anaconda3/envs/dplg2:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main
_openmp_mutex             4.5                       1_gnu
blas                      1.0                         mkl
bzip2                     1.0.8                h7b6447c_0
ca-certificates           2021.10.26           h06a4308_2
certifi                   2021.10.8        py39h06a4308_2
cudatoolkit               10.2.89              hfd86e86_1
cysignals                 1.11.2                   pypi_0    pypi
cython                    0.29.28                  pypi_0    pypi
deepproblog               2.0.0                    pypi_0    pypi
ffmpeg                    4.3                  hf484d3e_0    pytorch
freetype                  2.11.0               h70c0345_0
giflib                    5.2.1                h7b6447c_0
gmp                       6.2.1                h2531618_2
gnutls                    3.6.15               he1e5248_0
intel-openmp              2021.4.0          h06a4308_3561
jpeg                      9d                   h7f8727e_0
lame                      3.100                h7b6447c_0
lcms2                     2.12                 h3be6417_0
ld_impl_linux-64          2.35.1               h7274673_9
libffi                    3.3                  he6710b0_2
libgcc-ng                 9.3.0               h5101ec6_17
libgomp                   9.3.0               h5101ec6_17
libiconv                  1.15                 h63c8f33_5
libidn2                   2.3.2                h7f8727e_0
libpng                    1.6.37               hbc83047_0
libstdcxx-ng              9.3.0               hd4cf53a_17
libtasn1                  4.16.0               h27cfd23_0
libtiff                   4.2.0                h85742a9_0
libunistring              0.9.10               h27cfd23_0
libuuid                   1.0.3                h7f8727e_2
libuv                     1.40.0               h7b6447c_0
libwebp                   1.2.2                h55f646e_0
libwebp-base              1.2.2                h7f8727e_0
lz4-c                     1.9.3                h295c915_1
mkl                       2021.4.0           h06a4308_640
mkl-service               2.4.0            py39h7f8727e_0
mkl_fft                   1.3.1            py39hd3c417c_0
mkl_random                1.2.2            py39h51133e4_0
ncurses                   6.3                  h7f8727e_2
nettle                    3.7.3                hbbd107a_1
numpy                     1.21.2           py39h20f2e39_0
numpy-base                1.21.2           py39h79a1101_0
olefile                   0.46               pyhd3eb1b0_0
openh264                  2.1.1                h4ff587b_0
openssl                   1.1.1m               h7f8727e_0
pillow                    8.4.0            py39h5aabda8_0
pip                       21.2.4           py39h06a4308_0
problog                   2.2.2                    pypi_0    pypi
pysdd                     0.2.10                   pypi_0    pypi
pyswip                    0.2.11                   pypi_0    pypi
python                    3.9.7                h12debd9_1
pytorch                   1.10.2          py3.9_cuda10.2_cudnn7.6.5_0    pytorch
pytorch-mutex             1.0                        cuda    pytorch
readline                  8.1.2                h7f8727e_1
setuptools                58.0.4           py39h06a4308_0
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.37.2               hc218d9a_0
tk                        8.6.11               h1ccaba5_0
torchaudio                0.10.2               py39_cu102    pytorch
torchvision               0.11.3               py39_cu102    pytorch
typing_extensions         <IP_ADDRESS>           pyh06a4308_0
tzdata                    2021e                hda174b7_0
wheel                     0.37.1             pyhd3eb1b0_0
xz                        5.2.5                h7b6447c_0
zlib                      1.2.11               h7f8727e_4
zstd                      1.4.9                haebb681_0

This is the error message:
addition_method_gm_N_1_pretrain_0_exploration_False_run_0_220224_220424427817
Training  for 1 epoch(s)
Epoch 1
Traceback (most recent call last):
  File "/home/david/ProjektXAI/deepproblog/src/deepproblog/examples/MNIST/addition.py", line 66, in <module>
    train = train_model(model, loader, 1, log_iter=100, profile=0)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/train.py", line 200, in train_model
    train_object.train(loader, stop_condition, **kwargs)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/train.py", line 128, in train
    loss = self.get_loss(batch, loss_function)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/train.py", line 39, in get_loss
    result = self.model.solve(batch)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/model.py", line 106, in solve
    return self.solver.solve(batch)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/solver.py", line 80, in solve
    acs: List[ArithmeticCircuit] = [self.cache.get(q) for q in batch]
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/solver.py", line 80, in <listcomp>
    acs: List[ArithmeticCircuit] = [self.cache.get(q) for q in batch]
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/utils/cache.py", line 52, in get
    return self.first(item)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/solver.py", line 67, in build_ac
    ground = self.engine.ground(q, label=LogicFormula.LABEL_QUERY)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/approximate_engine.py", line 124, in ground
    return self.engine.ground(
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/engine.py", line 59, in ground
    proofs = self.get_proofs(term, sp)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/engine.py", line 88, in get_proofs
    res = program.query(query_str, profile=profile)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/swi_program.py", line 321, in query
    out_partial[k] = [p for p in term2list(parse(result[0][k]))]
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/swip.py", line 99, in parse
    return pyswip_to_term(to_parse)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/swip.py", line 50, in pyswip_to_term
    e, vars2 = pyswip_to_term(o, True)
  File "/home/david/anaconda3/envs/dplg2/lib/python3.9/site-packages/deepproblog/engines/prolog_engine/swip.py", line 62, in pyswip_to_term
    raise Exception(
Exception: Unhandled type <class 'str'> from object -(10, -(addition(tensor(train(0)), tensor(train(1)), 5), and(["-(digit(tensor(train(0)), 2), ::(3, nn(mnist_net, ['tensor(train(0))'], 2), digit(tensor(train(0)), 2), ad(0, 2, ['tensor(train(0))'])))", "-(digit(tensor(train(1)), 3), ::(4, nn(mnist_net, ['tensor(train(1))'], 3), digit(tensor(train(1)), 3), ad(0, 3, ['tensor(train(1))'])))", '-(is(5, +(2, 3)), builtin)'])))

What version of SWIPL are you using?

I am using SWIPL version 8.4.2

Are you sure its using our forked version of PySwip? The list still specifies pypi as the channel.

I experience the same issue as @dtafler . Re-installing PySDD does not seem to work and I am sure that the forked version of PySwip is being used. I have tried with SWIPL version 8.4.0 and 8.4.2 on both Windows and Ubuntu 20.04.
I have discovered that running addition_noisy.py seems to work and that no error is given when running addition.py if the 'gm' method is removed from the parameters variable.

For people still struggling with this issue, how did you install the forked version? The command on that was shown on the readme was not correct. The correct way to install it is to download the source code and do a pip install .


[JS] factorial, factorial recursive and Readme

added the factorial.js and updated the readme

Great job, thanks for the contrib :+1:


Sync promotion in Passwords and Bookmarks

Task/Issue URL: https://app.asana.com/0/72649045549333/1207997744789992/f
Description
Feature flag and data storage for sync promotions.
Steps to test this PR

QA-optional for this branch of the stack

#4892
#4891  👈
develop

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @CDRussell and the rest of your teammates on  Graphite

Merge activity

Aug 29, 11:58 AM EDT: @CDRussell started a stack merge that includes this pull request via Graphite.


Canonical URLs wrong in dirhtml build

Hi all, I've just been made aware that the canonical URLs in one of my docsites are not matching the page URLs, which is causing issues with our SEO. Basically, the fact that these docs are created using the dirhtml build option means that the page URLs are ending in /, but the canonicals in the source HTML are showing as ending in index.html or .html, so that's the page type that Google is displaying in search, instead of the URL we want.

It's an upstream issue with Sphinx (https://github.com/sphinx-doc/sphinx/issues/9730) that has been open for over two years now.
Some themes are choosing to fix the issue themselves (Furo - https://github.com/pradyunsg/furo/issues/682, Sphinx awesome theme - https://github.com/kai687/sphinxawesome-theme/pull/1262) and I was wondering if pydata-sphinx-theme might choose to do the same. Unfortunately, I can't find any workarounds documented that aren't at the theme level and this is outside my area of expertise as a technical writer, so I thought I would ask here. Thank you!

The fix in https://github.com/pradyunsg/furo/pull/727/files looks simple enough. Whoever gets around to copy-pasting it here: we should probably list @davidism as co-author on the commit.

I've been exploring both Furo and Pydata as new base themes for Pallets projects, so I definitely wouldn't mind seeing my fix make it into here as well. A co-authored-by credit is a nice thought, thank you.


store: Bugix double-dip connection deadlock in deployment_synced

Commit message: s/Bugix/Bugfix

Commit message: s/Bugix/Bugfix

Fixed


Powered by Datahub Cloud same as Powered by Obsidian Publish

Description
See this example https://minimal.guide/guides/image-gallery
Acceptance

[ ] Remove the current

[ ] Make it the same as Powered by Obsidian Publish

Or a floating button like this:

@olayway maybe on the right side because of the sidebar possibility. wdyt?

@olayway @popovayoana @Daniellappv , What dot you think of this:
When we have TOC:

On smaller screens

@willy1989cv Looks great imo! Just instead of "Powered by" let's stick with "Built with".

FIXED


 The block value instructs the browser to briefly hide the text until the font has fully downloaded. More accurately, the browser draws the text with an invisible placeholder then swaps it with the custom font face as soon as it loads.

Thanks for the PR. Released in 0.6.0

You're welcome. Cool package.
Glad to contribute.
пн, 5 квіт. 2021 о 22:28 Ravindra Marella @.***> пише:

Thanks for the PR. Released in 0.6.0
https://github.com/marella/material-icons/releases/tag/v0.6.0
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/marella/material-icons/pull/21#issuecomment-813597771,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEJWJOL2HFRFZHSHDCFNQE3THIFMFANCNFSM42LHXUNA
.

--
С уважением, Алексей.


app_folder_name should not be recursive

Hi, thank you for the plugin. I'm facing an issue. The wrong build.gradle is chosen because it has a similar path.

[17:07:42]: The get_version_code plugin is looking inside your project folder (android/app)!
[17:07:42]: new version code = 38
[17:07:42]:  -> Found a build.gradle file at path: (node_modules/react-native/local-cli/templates/HelloWorld/android/app/build.gradle)!

Here is my simplelane
increment_version_code(
      app_folder_name: "android/app",
      version_code: options[:build_number]
)

The version 0.4.1 should fix your issue.
You can now set the gradle_file_path property to specify the gradle file you want to use.


organize cjxl/djxl help a bit

Currently the help screens for cjxl/djxl are one long list and making the help more verbose shows more options in random places, which makes it hard to distinguish the basic options from the more advanced ones.
This reorders the options and adds some structure to it.
For cjxl, I made five tiers of options (so you need four -v to see them all). The first tier is always shown in the help screen and each additional -v 'unlocks' another tier.

Basic options
Advanced options
Expert options
Options for experimentation / benchmarking
Modular mode options

Those last two tiers should not really be useful for normal users, they're intended more for encoder development than for actual use.
The full cjxl help looks like this then:
$ cjxl -v -v -v -v
JPEG XL encoder v0.9.0 87202f32 [SSE4,SSSE3,SSE2]
Usage: tools/cjxl INPUT OUTPUT [OPTIONS...]
 INPUT
    the input can be PNG, APNG, GIF, JPEG, EXR, PPM, PFM, PAM, PGX, or JXL
 OUTPUT
    the compressed JXL output file

Basic options:
 -d DISTANCE, --distance=DISTANCE
    Target visual distance in JND units, lower = higher quality.
    0.0 = mathematically lossless. Default for already-lossy input (JPEG/GIF).
    1.0 = visually lossless. Default for other input.
    Recommended range: 0.5 .. 3.0. Allowed range: 0.0 ... 25.0. Mutually exclusive with --quality.
 -q QUALITY, --quality=QUALITY
    Quality setting, higher value = higher quality. This is internally mapped to --distance.
    100 = mathematically lossless. 90 = visually lossless.
    Quality values roughly match libjpeg quality.
    Recommended range: 68 .. 96. Allowed range: 0 .. 100. Mutually exclusive with --distance.
 -e EFFORT, --effort=EFFORT
    Encoder effort setting. Range: 1 .. 9.
    Default: 7. Higher numbers allow more computation at the expense of time.
    For lossless, generally it will produce smaller files.
    For lossy, higher effort should more accurately reach the target quality.
 -V, --version
    Print encoder library version number and exit.
 --quiet
    Be more silent
 -v, --verbose
    Verbose output; can be repeated and also applies to help (!).

Advanced options:
 -a A_DISTANCE, --alpha_distance=A_DISTANCE
    Target visual distance for the alpha channel, lower = higher quality.
    0.0 = mathematically lossless. 1.0 = visually lossless.
    Default is to use the same value as for the color image.
    Recommended range: 0.5 .. 3.0. Allowed range: 0.0 ... 25.0.
 -p, --progressive
    Enable (more) progressive/responsive decoding.
 --group_order=0|1
    Order in which 256x256 groups are stored in the codestream for progressive rendering.
    0 = scanline order, 1 = center-first order. Default: 0.
 --container=0|1
    0 = Do not encode using container format (strip Exif/XMP/JPEG bitstream reconstruction data).
    1 = Force using container format. Default: use only if needed.
 --compress_boxes=0|1
    Disable/enable Brotli compression for metadata boxes. Default is 1 (enabled).
 --brotli_effort=B_EFFORT
    Brotli effort setting. Range: 0 .. 11.
    Default: 9. Higher number is more effort (slower).
 -m 0|1, --modular=0|1
    Use modular mode (default = encoder chooses, 0 = enforce VarDCT, 1 = enforce modular mode).
 -j 0|1, --lossless_jpeg=0|1
    If the input is JPEG, losslessly transcode JPEG, rather than using reencode pixels.
 --num_threads=N
    Number of worker threads (-1 == use machine default, 0 == do not use multithreading).
 --photon_noise_iso=ISO_FILM_SPEED
    Adds noise to the image emulating photographic film or sensor noise.
    Higher number = grainier image, e.g. 100 gives a low amount of noise,
    3200 gives a lot of noise. Default is 0.
 --intensity_target=N
    Upper bound on the intensity level present in the image, in nits.
    Default is 0, which means 'choose a sensible default value based on the color encoding.
 -x key=value, --dec-hints=key=value
    This is useful for 'raw' formats like PPM that do not contain colorspace information.
    The key 'color_space' indicates an enumerated ColorEncoding, for example:
      -x color_space=RGB_D65_SRG_Per_SRG is sRGB with perceptual rendering intent
      -x color_space=RGB_D65_202_Rel_PeQ is Rec.2100 PQ with relative rendering intent
    The key 'icc_pathname' refers to a binary file containing an ICC profile.

Expert options:
 --jpeg_store_metadata=0|1
    If --lossless_jpeg=1, store JPEG reconstruction metadata in the JPEG XL container.
    This allows reconstruction of the JPEG codestream. Default: 1.
 --codestream_level=K
    The codestream level. Either `-1`, `5` or `10`.
 --faster_decoding=0|1|2|3|4
    0 = default, higher values improve decode speed at the expense of quality or density.
 --premultiply=-1|0|1
    Force premultiplied (associated) alpha.
 --keep_invisible=0|1
    disable/enable preserving color of invisible pixels (default: 1 if lossless, 0 if lossy).
 --center_x=-1..XSIZE
    Determines the horizontal position of center for the center-first group order.
    Default -1 means 'middle of the image', values [0..xsize) set this to a particular coordinate.
 --center_y=-1..YSIZE
    Determines the vertical position of center for the center-first group order.
    Default -1 means 'middle of the image', values [0..ysize) set this to a particular coordinate.
 --progressive_ac
    Use the progressive mode for AC.
 --qprogressive_ac
    Use the progressive mode for AC with shift quantization.
 --progressive_dc=num_dc_frames
    Progressive-DC setting. Valid values are: -1, 0, 1, 2.
 --resampling=-1|1|2|4|8
    Resampling for color channels. Default of -1 applies resampling only for very low quality.
    1 = downsampling (1x1), 2 = 2x2 downsampling, 4 = 4x4 downsampling, 8 = 8x8 downsampling.
 --ec_resampling=-1|1|2|4|8
    Resampling for extra channels. Same as --resampling but for extra channels like alpha.
 --already_downsampled
    Do not downsample before encoding, but still signal that the decoder should upsample.
 --epf=-1|0|1|2|3
    Edge preserving filter level, 0-3. Default -1 means encoder chooses, 0-3 set a strength.
 --gaborish=0|1
    Force disable/enable the gaborish filter. Default is 'encoder chooses'
 --override_bitdepth=BITDEPTH
    Default is zero (use the input image bit depth); if nonzero, override the bit depth

Options for experimentation / benchmarking:
 --jpeg_reconstruction_cfl=0|1
    Enable/disable chroma-from-luma (CFL) for lossless JPEG reconstruction.
 --num_reps=N
    How many times to compress. (For benchmarking).
 --disable_output
    No output file will be written (for benchmarking)
 --dots=0|1
    Force disable/enable dots generation. (not provided = default, 0 = disable, 1 = enable).
 --patches=0|1
    Force disable/enable patches generation. (not provided = default, 0 = disable, 1 = enable).
 --frame_indexing=INDICES
    INDICES is of the form '^(0*|1[01]*)'. The i-th position indicates whether the
    i-th frame will be indexed in the frame index box.
 --allow_expert_options
    Allow specifying advanced options; this allows setting effort to 10, for
    somewhat better lossless compression at the cost of a massive speed hit.

Modular mode options:
 -I PERCENT, --iterations=PERCENT
    Percentage of pixels used to learn MA trees. Higher values use
    more encoder memory and can result in better compression. Default of -1 means
    the encoder chooses. Zero means no MA trees are used.
 -C K, --modular_colorspace=K
    Color transform: -1 = default (try several per group, depending
    on effort), 0 = RGB (none), 1-41 = fixed RCT (6 = YCoCg).
 -g K, --modular_group_size=K
    Group size: -1 = default (let the encoder choose),
    0 = 128x128, 1 = 256x256, 2 = 512x512, 3 = 1024x1024.
 -P K, --modular_predictor=K
    Predictor(s) to use: 0=zero, 1=left, 2=top, 3=avg0, 4=select,
    5=gradient, 6=weighted, 7=topright, 8=topleft, 9=leftleft, 10=avg1, 11=avg2, 12=avg3,
    13=toptop predictive average, 14=mix 5 and 6, 15=mix everything.
    Default is 14 at effort < 9 and 15 at effort 9.
 -E K, --modular_nb_prev_channels=K
    Number of extra (previous-channel) MA tree properties to use.
 --modular_palette_colors=K
    Use palette if number of colors is smaller than or equal to this.
 --modular_lossy_palette
    Use delta palette in a lossy way; it is recommended to also
    set --modular_palette_colors=0 with this option to use the default palette only.
 -X PERCENT, --pre-compact=PERCENT
    Use global channel palette if the number of sample values is smaller
    than this percentage of the nominal range.
 -Y PERCENT, --post-compact=PERCENT
    Use local (per-group) channel palette if the number of sample values is
    smaller than this percentage of the nominal range.
 -R K, --responsive=K
    Do the Squeeze transform, 0=false, 1=true (default: 1 if lossy, 0 if lossless)
 -h, --help
    Prints this help message.

For djxl, I reduced it to three tiers of options:

Basic options
Advanced options
Options for experimentation / benchmarking

That last tier should not really be useful for normal users.
The full djxl help screen looks like this then:
$ djxl -v -v
JPEG XL decoder v0.9.0 87202f32 [SSE4,SSSE3,SSE2]
Usage: tools/djxl INPUT OUTPUT [OPTIONS...]
 INPUT
    The compressed input file (JXL). Use '-' for input from stdin.
 OUTPUT
    The output can be PNG, APNG, JPEG, EXR, PPM, PFM, or PAM. Use '-' for output to stdout.
    The output format is selected based on the extension or a prefix (e.g. 'png:-')

Basic options:
 -V, --version
    Print version number and exit.
 --quiet
    Silence output (except for errors).
 -v, --verbose
    Verbose output; can be repeated and also applies to help (!).

Advanced options:
 --num_threads=N
    Number of worker threads (-1 == use machine default, 0 == do not use multithreading).
 --bits_per_sample=N
    Sets the output bit depth. The value 0 (default for PNM) means the original (input) bit depth.
    The value -1 (default for other codecs) means it depends on the output format capabilities
    and the input bit depth (e.g. decoding a 12-bit image to PNG will produce a 16-bit PNG).
 --display_nits=N
    If set to a non-zero value, tone maps the image the given peak display luminance.
 --color_space=COLORSPACE_DESC
    Sets the desired output color space of the image. For example:
      --color_space=RGB_D65_SRG_Per_SRG is sRGB with perceptual rendering intent
      --color_space=RGB_D65_202_Rel_PeQ is Rec.2100 PQ with relative rendering intent
 -s 1|2|4|8, --downsampling=1|2|4|8
    If the input JXL stream is contains hints for target downsampling ratios,
    only decode what is needed to produce an image intended for this downsampling ratio.
 --allow_partial_files
    Allow decoding of truncated files.
 -j, --pixels_to_jpeg
    By default, if the input JXL is a recompressed JPEG file, djxl reconstructs that JPEG file.
    This flag causes the decoder to instead decode to pixels and encode a new (lossy) JPEG.
 -q N, --jpeg_quality=N
    Sets the JPEG output quality, default is 95. Setting this option implies --pixels_to_jpeg.

Options for experimentation / benchmarking:
 --num_reps=N
    Sets the number of times to decompress the image. Useful for benchmarking. Default is 1.
 --disable_output
    No output file will be written (for benchmarking)
 --norender_spotcolors
    Disables rendering of spot colors.
 --preview_out=FILENAME
    If specified, writes the preview image to this file.
 --icc_out=FILENAME
    If specified, writes the ICC profile of the decoded image to this file.
 --orig_icc_out=FILENAME
    If specified, writes the ICC profile of the original image to this file
    This can be different from the ICC profile of the decoded image if --color_space was specified.
 --metadata_out=FILENAME
    If specified, writes metadata info to a JSON file. Used by the conformance test script
 --print_read_bytes
    Print total number of decoded bytes.
 -h, --help
    Prints this help message.

Might it be a good idea to get some spacing before
-h, --help
   Prints this help message.

or put it somewhere further at the top?
Also I think it would be good to mention somewhere when adding the -v  stabilizes (after 2 or 4 times). I think it is a bit silly for users to have to manually try out if '-v -v -v -v' yields the same output as -v -v -v -v -v `, and we should just tell them. Is there currently a difference between '-v' and '-v -v' for anything other than the help?
Other than that LGTM

Updated it a bit. Now there's a newline before the -h text, and the text itself has been updated. When all options were shown, it now says that explicitly:
 -h, --help
    Prints this help message. All options are shown above.

while otherwise it says:
 -h, --help
    Prints this help message. Add -v to see more options.

Also the actual verbosity (when doing something other than showing help) has been made to depend on -v:
$ cjxl t.png t.jxl
JPEG XL encoder v0.9.0 a25a6d9c [SSE4,SSSE3,SSE2]
Encoding [VarDCT, d1.000, effort: 7]
Compressed to 1104609 bytes (1.685 bpp).
$ djxl t.jxl t.png
JPEG XL decoder v0.9.0 a25a6d9c [SSE4,SSSE3,SSE2]
Decoded to pixels.

versus
$ cjxl t.png t.jxl -v
JPEG XL encoder v0.9.0 a25a6d9c [SSE4,SSSE3,SSE2]
Read 2048x2560 image, 8117032 bytes, 110.4 MP/s
Encoding [VarDCT, d1.000, effort: 7]
Compressed to 1104212 bytes (1.685 bpp).
2048 x 2560, 4.03 MP/s [4.03, 4.03], 1 reps, 4 threads.
$ djxl t.jxl t.png -v
JPEG XL decoder v0.9.0 a25a6d9c [SSE4,SSSE3,SSE2]
Read 1104212 compressed bytes.
Decoded to pixels.
Wrote output to t.png
2048 x 2560, 70.47 MP/s [70.47, 70.47], 1 reps, 4 threads.

Part of me wonders if having the MP/s in the default verbosity of cjxl and djxl could be better. Then the average user knows the size, the efficiency and the speed of the operation at a glance, instead of just turning the effort up not realising the difference it makes.
On a side note, the MP/s has a minimum of 0.01Mp/s. Might be worth adding an extra decimal or two with the extra verbosity option for using effort 9/10

 -h, --help
    Prints this help message. All options are shown above.

while otherwise it says:
 -h, --help
    Prints this help message. Add -v to see more options.

This still leaves the user guessing how many times -v can be added. Perhaps writing
>     Prints this help message. Add -v (up to a total number of 4 times) to see more options.

or something like this would be easier

Maybe
-h, --help      Prints this help message. Add -v multiple times to see more options. (Basic, Advanced, Expert, Benchmarking, Modular Settings)

Why would you ever want to see more than the essential, but fewer than all options? I can't imagine seriously investigating the tool and saying "I'll just add two -vs and see what I get." One essential and one verbose level is quite justified: for a quick start relying on defaults, or for getting your hands dirty. With the improved readability, you can just skip over sections you're not interested in while having confidence you haven't missed anything.
If we must, something like https://github.com/libjxl/libjxl/pull/2593#issuecomment-1602523050 is what I imagined as an attempt at efficient communication, but sparing the user needing to count the number of sections.
-h, --help
     Prints this help message. Add multiple -v flags to include these sections:
     0 Basic, 1 Advanced, 2 Expert, 3 Benchmarking, 4 Modular Settings

Still, the granularity is awkward. It's not intuitive why I should want advanced options and not expert, or how many -vs I'll need next time when I want to reference a particular option.

"Expert options:"
"--allow_expert_options"
The naming here is a bit unfortunate.

By the way, the usage is including the path:
Usage: tools/djxl INPUT OUTPUT [OPTIONS...]
For mpv, ffmpeg, etc. no matter how you call them (/usr/bin/mpv or just mpv), they don't include the path:
Usage: mpv [options] [url|path/]filename usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Is this intentional?

Both ways of doing it (showing a fixed name vs showing the actual argv[0] name) seem to be used. For example this is what libjpeg-turbo's cjpeg help looks like:
$ /usr/bin/cjpeg --help
usage: /usr/bin/cjpeg [switches] [inputfile]
Switches (names may be abbreviated):
  -quality N[,...]   Compression quality (0..100; 5-95 is most useful range,
                     default is 75)
  -grayscale     Create monochrome JPEG file
  -rgb           Create RGB JPEG file
  -optimize      Optimize Huffman table (smaller file, but slow compression)
  -progressive   Create progressive JPEG file
  -targa         Input file is Targa format (usually not needed)
Switches for advanced users:
  -arithmetic    Use arithmetic coding
  -dct int       Use accurate integer DCT method (default)
  -dct fast      Use less accurate integer DCT method [legacy feature]
  -dct float     Use floating-point DCT method [legacy feature]
  -icc FILE      Embed ICC profile contained in FILE
  -restart N     Set restart interval in rows, or in blocks with B
  -smooth N      Smooth dithered input (N=1..100 is strength)
  -maxmemory N   Maximum memory to use (in kbytes)
  -outfile name  Specify name for output file
  -memdst        Compress to memory instead of file (useful for benchmarking)
  -report        Report compression progress
  -strict        Treat all warnings as fatal
  -verbose  or  -debug   Emit debug output
  -version       Print version information and exit
Switches for wizards:
  -baseline      Force baseline quantization tables
  -qtables FILE  Use quantization tables given in FILE
  -qslots N[,...]    Set component quantization tables
  -sample HxV[,...]  Set component sampling factors
  -scans FILE    Create multi-scan JPEG per script FILE

I don't have a strong preference but I think using the argv[0] name like we do has some minor advantages, e.g. if you have multiple versions in different locations, or if you want to rename the binary for some reason (say you want to call it png2jxl instead of cjxl).

Why would you ever want to see more than the essential, but fewer than all options?

Long help output that requires you to use | less or scroll up is not very convenient imo, especially if the options you're most likely to need are closer to the top. Some of the options like --disable_output and --num_reps are just not useful at all for people who just want to use the tools. Splitting it up in multiple tiers helps to avoid polluting the screen with output that is likely not useful anyway.
For cjxl, the tiers are something like this:

Basic: the essentials (quality and effort). These options are fundamental, since encoding is all about the trade-off between quality, compression and speed. So this is about the core functionality of the tool.
Advanced: additional options that you don't really need to set, i.e. the defaults should be fine for 95% of use cases, but you still sometimes might need them. This is still about functionality: what kind of bitstream to produce, how many threads to use, etc.
Expert: these options are not really about functionality anymore but more about influencing internal encoder choices (though some are arguably a bit of both). For 99.9% of use cases, there is no need whatsoever to use these options.
Experimentation / benchmarking: these options are not really meant for users but rather for encoder devs. These options could be removed or work differently in the future. They might evolve into something that will become an Advanced or Expert option (e.g. frame indexing, but then it will be something more user-friendly then than what it is now)
Modular mode options: this is not about functionality at all and only about influencing internal encoder choices (specifically for modular mode). Not meant for users, almost impossible to know what these options even mean if you don't have a good understanding of how the format works. The goal is that 'effort' is the only thing the user has to set and the encoder then makes choices that make sense.

For djxl there are only 3 tiers:

Basic: the basic usage is just djxl INPUT OUTPUT and besides knowing what output formats are available and how to specify them, there isn't really anything else you need for most use cases.
Advanced: these are basically all the options meant for users.
Experimentation / benchmarking: these options are not useful for users. They are only really there for benchmarking, conformance testing, and experimentation.

So basically cjxl / djxl gives a quick start guide, and cjxl -v / djxl -v gives the more detailed options. Any additional -v are things you very likely don't need, and that would e.g. very likely not be exposed or configurable in applications that use libjxl (say in a "save as jxl" dialog box in Gimp or Photoshop).


ada php83, drop php80

php80 is out of security fix, completely EOL.
8.3 has been released.
support accordingly.

done


Images are stretched at low breakpoints

Hi there,
Thanks for your work and your useful extension!
Just have an issue with resized image on responsive websites.
Let's say I resize an image, how can I ensure the image is not stretched when the screen width is lower than the resizing dimensions?
Wouldn't it be better to have some kind of failover putting the height to "auto" and the width at 100% once the screen size is too narrow? Or maintain the ratio depending on the screen size?
For me the 1st option would be kind of useful, and would stay in line with the default Image extension behaviour.
Example of the issue:
Image not resized on large screen :
Image not resized on a narrow screen :
Image resized on large screen :
Image resized on a narrow screen: it's stretched as it adapts the width, not the height
Or have I missed something when implementing the extension?

Thank you for reporting the bug!
I missed a case when the browser width changes. I have fixed this issue and released v1.1.8.
If you encounter any bugs or have any feedback, please feel free to report them.
Thanks :) @le-dav


 It will take 12-15 seconds to recompile compared to just over 1 second on beta 6.
Steps to Reproduce
Upgrade the Angular test app in this project to the latest and greatest and then run ng serve and make any changes.
Related Code
My sample:
https://github.com/Tiberriver256/ionic/tree/master/angular/test/testapp
Expected Behavior
I would love to have it back down near 1 second as it makes the developer experience not very fun waiting so long. I have a different project that is larger than the testapp and I'm getting upwards of 40-50 seconds to recompile.
Hopefully it's just something I am doing wrong. Thank you!

Could be a duplicate of #15844 although upgrading to Node 10 does not improve it much. I tried Node 8, 10 and 11 and all still way slower than it was previously.

Can confirm on beta.16 - Fork this repository and build the latest version of ionic - the build time to recompile decrease by 50 percent.

We updates to Angular 7 and TS 3.0, that's the only relevant change i can think of

Possibly related:
https://github.com/angular/angular-cli/issues/12646

Going to close since it does not seem related with ionic!


Support debian 12

Hi @EnricoMi
on debian12 pip outside of virtual environments is not supported anymore, so the first pip install call in the composite/action.yml fails.
As far as I found out only python3 3.11 is available on debian12
Setup
docker image: debian:bookworm-slim
installed packages:

python3-full
python3-pip

root@f676d2dc4a1c:/_setup# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Error
received error message:
root@172b694a026a:/_setup# python3 -m pip install virtualenv
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Proposal
python3-virtualenv has to be preinstalled on debian12 so the virtualenv is created and the pip commands are executed inside of it.
This also should be backwards compatible so users without preinstalled python3-virtualenv can still use it in prior versions.
apt-get update
apt-get install -y python3-virtualenv
python3 -m virtualenv enricomi-publish-action-venv
source enricomi-publish-action-venv/bin/activate

(enricomi-publish-action-venv)> python3 -m pip wheel # pip works in venv

Thanks for considering this or any better approach to fix this,
Max

Duplicate of #558?
Feel free to close this if tracked in the other issue.

Can you test #558 in your Debian 12 environment?
uses: EnricoMi/publish-unit-test-result-action/composite@check-venv-installed

Hi @EnricoMi,
worked on the first try. 🎉
We will now wait for the new release to properly adress the version instead of the commit / branch.
Thank you so much for the fast response and integration.

@suppHorter I have modified the check-venv-installed branch, can you test that one again to see it still works for you?

Hi @EnricoMi,
I could successfully test it. ✅
Thanks for your effort.

Hi @EnricoMi,
do you have a rough estimation when we can expect the new release?

Fixed in #558. Thanks for reporting!

This has just been released.


Umbraco 10

Now that v10 is being released soon, we need to support that. Don't think we want to multi target (yet). So, should create a new version 2.0.0 for v10

Fixed with the release of 2.0.0


Add passenger_enabled deployment option

This should be added, otherwise the redirect is served from nginx instead of passenger

Hi Kit,
I don't see a difference in the access logs (/var/app/support/logs/access.log) or response headers when this is added. Passenger access log doesn't show any entry for the redirected requests. Where can I see a change in behavior?
Thanks,
-Michael

hey michael,
what I noticed was that nginx would return 301 on the original http request. The https request would come back into the location / directive, but this time as passenger_enabled is off by default, nginx would try to serve the request itself (and fail) rather than hand it off to passenger.

I see! Thanks for clarifying.
-Michael


Propagation of roles and permissions from Keycloak to Superset

Problem Description
I was able to set up authentication via Keycloak thanks to a couple of Stackoverflow answers and quite satisfied with the outcome. As of now, I'm able to manage users completely via Keycloak, every newly created user in Keycloak is given the role of an admin by default (handled by the OIDC Custom Security Manager script) and requires either the user to sign in to Superset and downgrade his role (to Gamma) or have the admin do this for him and this isn't a very graceful solution to managing users in a production environment.
Proposed Solution
I was wondering it would be great if there was a way to manage Superset's roles and permissions via Keycloak as well since doing so will allow an admin to manage access to Superset from a single location as I believe this would require deep modifications to Superset's source code.
Any ideas/suggestions are welcomed :)

.pinned

Working on that to ...

Thanks @aciccioli please keep us posted

Since this isn't implemented, can it be reopend?

Any updates @aciccioli or @nawazxy  as of yet. I am also facing the same issue. I can create roles from Keycloak and it reflects in superset but, I can't add permissions to it. Please @aciccioli , @nawazxy  update us with the solution.

Any update on the above topic?


moodle: 3.8.1 -> 3.8.2 [20.03]

(cherry picked from commit e3e53adc35d1a45d3849d6246a3dc9c2ec296122)

Motivation for this change
backport of https://github.com/NixOS/nixpkgs/pull/82302
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg test moodle


Pre DNS validation fails with No TXT records found

Describe the bug
Pre DNS validation fails with No TXT records found. The record gets created. I am able to verify the TXT record in the Hetzner DNS Console. The DNS validation fails however.
To Reproduce
C:\Program Files\win-acme>wacs --test --validationmode dns-01 --validation script --dnscreatescript ./Company.Tool.Hetzner.DNS.exe --dnsdeletescript ./Company.Tool.Hetzner.DNS.exe --dnscreatescriptarguments "create {Identifier} {RecordName} {Token} HETZNER_API_TOKEN" --dnsdeletescriptarguments "delete {Identifier} {RecordName} {Token} HETZNER_API_TOKEN" --verbose
 [DBUG] Logging at level Verbose
 [VERB] W3SVC detected and running
 [VERB] No FTPSVC detected
 [VERB] Looking for settings.json in C:\Program Files\win-acme\
 [DBUG] Use existing configuration folder C:\ProgramData\win-acme
 [DBUG] Use existing configuration folder C:\ProgramData\win-acme\acme-staging-v02.api.letsencrypt.org
 [DBUG] Use existing log folder C:\ProgramData\win-acme\acme-staging-v02.api.letsencrypt.org\Log
 [DBUG] Use existing cache folder C:\ProgramData\win-acme\acme-staging-v02.api.letsencrypt.org\Certificates
 [DBUG] secrets.json not found
 [DBUG] Renewal period: 55 days
 [VERB] Sending e-mails False
 [VERB] Arguments: --test --validationmode dns-01 --validation script --dnscreatescript ./Company.Tool.Hetzner.DNS.exe --dnsdeletescript ./Company.Tool.Hetzner.DNS.exe --dnscreatescriptarguments "create {Identifier} {RecordName} {Token} HETZNER_API_TOKEN" --dnsdeletescriptarguments "delete {Identifier} {RecordName} {Token} HETZNER_API_TOKEN" --verbose
 [VERB] ExePath: C:\Program Files\win-acme\wacs.exe
 [VERB] ResourcePath: C:\Program Files\win-acme\
 [VERB] PluginPath: C:\Program Files\win-acme\

 [INFO] A simple Windows ACMEv2 client (WACS)
 [INFO] Software version <IP_ADDRESS>1 (release, pluggable, standalone, 64-bit)
 [INFO] Connecting to https://acme-staging-v02.api.letsencrypt.org/...
 [DBUG] [HTTP] Send GET to https://acme-staging-v02.api.letsencrypt.org/directory
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "6hFRYGEVkto": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-staging-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf",
    "website": "https://letsencrypt.org/docs/staging-environment/"
  },
  "newAccount": "https://acme-staging-v02.api.letsencrypt.org/acme/new-acct",
  "newNonce": "https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce",
  "newOrder": "https://acme-staging-v02.api.letsencrypt.org/acme/new-order",
  "renewalInfo": "https://acme-staging-v02.api.letsencrypt.org/draft-ietf-acme-ari-01/renewalInfo/",
  "revokeCert": "https://acme-staging-v02.api.letsencrypt.org/acme/revoke-cert"
}
 [INFO] Connection OK!
 [DBUG] Running with administrator credentials
 [DBUG] IIS version 10.0
 [WARN] Scheduled task not configured yet
 [INFO] Please report issues at https://github.com/win-acme/win-acme
 [VERB] Unicode display test: Chinese/語言 Russian/язык Arab/لغة

 N: Create certificate (default settings)
 M: Create certificate (full options)
 R: Run renewals (0 currently due)
 A: Manage renewals (0 total)
 O: More options...
 Q: Quit

 Please choose from the menu: n

 [INFO] Running in mode: Interactive, Simple, Test
 [VERB] Autofac: creating PluginFrontend<TargetPluginOptions> scope with parent wacs
 [VERB] Autofac: creating PluginFrontend<TargetPluginOptions> scope with parent wacs
 [VERB] Autofac: creating PluginFrontend<TargetPluginOptions> scope with parent wacs
 [DBUG] Scanning IIS sites
 [DBUG] Scanning IIS bindings for host names

 Please select which website(s) should be scanned for host names. You may
 input one or more site identifiers (comma-separated) to filter by those
 sites, or alternatively leave the input empty to scan *all* websites.

 1: identity.company.de (1 binding)

 Site identifier(s) or <Enter> to choose all: 1

 [VERB] 1 named bindings found in IIS
 [DBUG] Filtering based on binding type
 [DBUG] Filtering by site(s) [1]
 [VERB] 1 bindings remaining after site filter
 [VERB] No host filter applied
 [VERB] 1 matching binding found

 1: identity.company.de (Site 1)

 Listed above are the bindings found on the selected site(s). By default all
 of them will be included, but you may either pick specific ones by typing the
 host names or identifiers (comma-separated) or filter them using one of the
 options from the menu.

 P: Pick bindings based on a search pattern
 A: Pick *all* bindings

 Binding identifiers(s) or menu option: a

 [VERB] 1 named bindings found in IIS
 [DBUG] Filtering based on binding type
 [DBUG] Filtering by site(s) [1]
 [VERB] 1 bindings remaining after site filter
 [VERB] No host filter applied
 [VERB] 1 matching binding found
 [VERB] 1 named bindings found in IIS
 [DBUG] Filtering based on binding type
 [DBUG] Filtering by site(s) [1]
 [VERB] 1 bindings remaining after site filter
 [VERB] No host filter applied
 [VERB] 1 matching binding found

 1: identity.company.de (Site 1)

 Continue with this selection? (y*/n) - yes

 [VERB] Autofac: creating PluginBackend<ITargetPlugin> scope with parent wacs
 [DBUG] Scanning IIS bindings for host names
 [VERB] 1 named bindings found in IIS
 [DBUG] Filtering based on binding type
 [DBUG] Filtering by site(s) [1]
 [VERB] 1 bindings remaining after site filter
 [VERB] No host filter applied
 [VERB] 1 matching binding found
 [DBUG] Scanning IIS sites
 [INFO] Source generated using plugin IIS: identity.company.de
 [VERB] Autofac: creating Target scope with parent PluginBackend<ITargetPlugin>
 [VERB] Autofac: creating PluginFrontend<OrderPluginOptions> scope with parent target
 [VERB] W3SVC detected and running
 [VERB] No FTPSVC detected
 [VERB] Autofac: creating PluginFrontend<OrderPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<OrderPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<OrderPluginOptions> scope with parent target
 [VERB] Global validation option not found for identity.company.de
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] Parsed value for --dnscreatescript: ./Company.Tool.Hetzner.DNS.exe

Description:         Path to script that creates the validation TXT record.
Argument:            ./Company.Tool.Hetzner.DNS.exe (press <Enter> to use this)

 DnsCreateScript: <Enter>

 1: Using the same script
 2: Using a different script
 3: Do not delete

 How to delete records after validation: 1

{Identifier}:        Domain that's being validated, e.g. sub.example.com
{RecordName}:        Full name of the TXT record that is required, e.g.
                     _acme-challenge.sub.example.com
{ZoneName}:          Registerable domain, e.g. example.com
{NodeName}:          Full subdomain, e.g. _acme-challenge.sub
{Token}:             Token that should be the content of the TXT record
{vault://json/mysecret}: Secret from the vault

 [VERB] Parsed value for --dnscreatescriptarguments: create {Identifier} {RecordName} {Token} HETZNER_API_TOKEN

Description:         Default parameters passed to the script are "create
                     {Identifier} {RecordName} {Token}", but that can be
                     customized using this argument.
Default:             create {Identifier} {RecordName} {Token}
Argument:            create {Identifier} {RecordName} {Token}
                     HETZNER_API_TOKEN (press <Enter> to use
                     this)

 DnsCreateScriptArguments: <Enter>

 [VERB] Parsed value for --dnsdeletescriptarguments: delete {Identifier} {RecordName} {Token} HETZNER_API_TOKEN

Description:         Default parameters passed to the script are "delete
                     {Identifier} {RecordName} {Token}", but that can be
                     customized using this argument.
Default:             delete {Identifier} {RecordName} {Token}
Argument:            delete {Identifier} {RecordName} {Token}
                     HETZNER_API_TOKEN (press <Enter> to use
                     this)

 DnsDeleteScriptArguments: <Enter>

 1: Run everything one by one
 2: Allow multiple instances of the script to run at the same time
 3: Allow multiple records to be validated at the same time
 4: Allow both modes of parallelism

 Enable parallel execution?: 1

 [VERB] Autofac: creating PluginFrontend<CsrPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<CsrPluginOptions> scope with parent target
 [VERB] Flag --ocsp-must-staple not present
 [VERB] Flag --reuse-privatekey not present
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] No value provided for --certificatestore
 [VERB] Flag --keepexisting not present
 [VERB] No value provided for --acl-fullcontrol
 [VERB] No value provided for --certificatestore
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<StorePluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target
 [VERB] No value provided for --sslport
 [VERB] No value provided for --sslipaddress
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target
 [VERB] Autofac: creating PluginFrontend<InstallationPluginOptions> scope with parent target

 [VERB] Constructing ACME protocol client...
 [VERB] Getting service directory...
 [DBUG] [HTTP] Send GET to https://acme-staging-v02.api.letsencrypt.org/directory
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "DlwLluDITNg": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-staging-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf",
    "website": "https://letsencrypt.org/docs/staging-environment/"
  },
  "newAccount": "https://acme-staging-v02.api.letsencrypt.org/acme/new-acct",
  "newNonce": "https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce",
  "newOrder": "https://acme-staging-v02.api.letsencrypt.org/acme/new-order",
  "renewalInfo": "https://acme-staging-v02.api.letsencrypt.org/draft-ietf-acme-ari-01/renewalInfo/",
  "revokeCert": "https://acme-staging-v02.api.letsencrypt.org/acme/revoke-cert"
}
 [DBUG] Loading signer from C:\ProgramData\win-acme\acme-staging-v02.api.letsencrypt.org\Signer_v2
 [DBUG] Loading account from C:\ProgramData\win-acme\acme-staging-v02.api.letsencrypt.org\Registration_v2
 [VERB] Using existing ACME account
 [DBUG] Using default account...
 [VERB] Autofac: creating Execution scope with parent wacs
 [VERB] Autofac: creating PluginBackend<ITargetPlugin> scope with parent Execution
 [VERB] W3SVC detected and running
 [VERB] No FTPSVC detected
 [DBUG] Scanning IIS bindings for host names
 [VERB] 1 named bindings found in IIS
 [DBUG] Filtering based on binding type
 [DBUG] Filtering by site(s) [1]
 [VERB] 1 bindings remaining after site filter
 [VERB] No host filter applied
 [VERB] 1 matching binding found
 [DBUG] Scanning IIS sites
 [INFO] Plugin IIS generated source identity.company.de with 1 identifiers
 [VERB] Autofac: creating Split scope with parent PluginBackend<ITargetPlugin>
 [VERB] Autofac: creating PluginBackend<IOrderPlugin> scope with parent Split
 [INFO] Plugin Single created 1 order
 [VERB] Checking [IIS] identity.company.de, (any host)
 [VERB] Autofac: creating Order scope with parent PluginBackend<ITargetPlugin>
 [VERB] Autofac: creating PluginBackend<ICsrPlugin> scope with parent order-main
 [DBUG] Reading certificate cache
 [DBUG] No cache files found for renewal
 [VERB] Order Main should run: True
 [VERB] Obtain order details for Main
 [DBUG] Refreshing cached order
 [DBUG] Refreshing order...
 [DBUG] [HTTP] Send HEAD to https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Empty response
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/order/118047584/10874846244
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvb3JkZXIvMTE4MDQ3NTg0LzEwODc0ODQ2MjQ0Iiwibm9uY2UiOiJYNWtMaFhlekdNSktTb0hDbjJJVnN1eXhtQ3NHZzUyeS10R0tEeWdzU2FmUzc4MURrb2siLCJraWQiOiJodHRwczovL2FjbWUtc3RhZ2luZy12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMTE4MDQ3NTg0In0","payload":"","signature":"QLJq1_q8aC9QEAX2xyXfd6QJelH9TobMPAf7iyKetKCghUCNxTM1rz86Xo1DXDWV-ITD45t6puC8DwwEOIs1hA"}
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "status": "pending",
  "expires": "2023-09-19T10:36:56Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "identity.company.de"
    }
  ],
  "authorizations": [
    "https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/8244510584"
  ],
  "finalize": "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/118047584/10874846244"
}
 [WARN] Cached order has status pending, discarding
 [VERB] Creating order for identifiers: ["identity.company.de"] (notAfter: null)
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/new-order
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvbmV3LW9yZGVyIiwibm9uY2UiOiJYNWtMaFhlenVlanU1Mzg4MF9UNUdUTU9Dd2FsV01heXRjQW03LTFiRGU2VDItcTVFVmciLCJraWQiOiJodHRwczovL2FjbWUtc3RhZ2luZy12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMTE4MDQ3NTg0In0","payload":"eyJpZGVudGlmaWVycyI6W3sidHlwZSI6ImRucyIsInZhbHVlIjoiYXNpZGVudGl0eS5hcy1nbWJoLmRlIn1dfQ","signature":"ZsYnGbwlrvPkBnzgx-QbYv-LyP2b_5f2Ts8mr4RICuJgfZjns7lW6WqbcDXtG1qOgZmfCv31I3TYQ87T5AtIyw"}
 [VERB] [HTTP] Request completed with status Created
 [VERB] [HTTP] Response content: {
  "status": "pending",
  "expires": "2023-09-19T10:36:56Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "identity.company.de"
    }
  ],
  "authorizations": [
    "https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/8244510584"
  ],
  "finalize": "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/118047584/10874923024"
}
 [VERB] Order https://acme-staging-v02.api.letsencrypt.org/acme/order/118047584/10874923024 created
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/8244510584
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYXV0aHotdjMvODI0NDUxMDU4NCIsIm5vbmNlIjoiSlNDR21LY0pEVF9xRG9BZjYwWGVzaHR2NC1zZFM5eU9OTkFHWVVpelMzeW92V0RDRV9nIiwia2lkIjoiaHR0cHM6Ly9hY21lLXN0YWdpbmctdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hY2N0LzExODA0NzU4NCJ9","payload":"","signature":"GtxvO0WHQ9k9WxA8wcyVTMynWTcejROvegIVQRHtbO2O43f7m1tirjAy6DisdHLkr8l-UheW1suoObQmhl0XUw"}
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "identifier": {
    "type": "dns",
    "value": "identity.company.de"
  },
  "status": "pending",
  "expires": "2023-09-19T10:36:56Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/aQ7z9A",
      "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg",
      "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/K_p0Pg",
      "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0"
    }
  ]
}
 [VERB] Autofac: creating Target scope with parent PluginBackend<ICsrPlugin>
 [VERB] Autofac: creating PluginFrontend<ValidationPluginOptions> scope with parent target
 [VERB] W3SVC detected and running
 [VERB] No FTPSVC detected
 [VERB] Autofac: creating PluginBackend<IValidationPlugin> scope with parent PluginBackend<ICsrPlugin>
 [VERB] Handle authorization 1/1
 [VERB] Autofac: creating PluginBackend<IValidationPlugin> scope with parent PluginBackend<ICsrPlugin>
 [INFO] [identity.company.de] Authorizing...
 [VERB] [identity.company.de] Initial authorization status: pending
 [VERB] [identity.company.de] Challenge types available: ["http-01", "dns-01", "tls-alpn-01"]
 [VERB] [identity.company.de] Initial challenge status: pending
 [INFO] [identity.company.de] Authorizing using dns-01 validation (DnsScript)
 [DBUG] Querying name servers for company.de
 [VERB] Found nsRecords: ["hydrogen.ns.hetzner.com.", "oxygen.ns.hetzner.com.", "helium.ns.hetzner.de."]
 [VERB] Querying IP for name server hydrogen.ns.hetzner.com.
 [VERB] Name server IP <IP_ADDRESS> identified
 [VERB] Querying IP for name server oxygen.ns.hetzner.com.
 [VERB] Name server IP <IP_ADDRESS> identified
 [VERB] Querying IP for name server helium.ns.hetzner.de.
 [VERB] Name server IP <IP_ADDRESS> identified
 [DBUG] Querying name servers for identity.company.de
 [VERB] No specific name servers identified for identity.company.de
 [DBUG] Querying name servers for _acme-challenge.identity.company.de
 [VERB] No specific name servers identified for _acme-challenge.identity.company.de
 [VERB] Query CNAME for _acme-challenge.identity.company.de at <IP_ADDRESS>
 [DBUG] [identity.company.de] Attempting to create DNS record under _acme-challenge.identity.company.de...
 [INFO] Script ./Company.Tool.Hetzner.DNS.exe starting with parameters create identity.company.de _acme-challenge.identity.company.de UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA HETZNER_API_TOKEN
 [DBUG] Process launched: ./Company.Tool.Hetzner.DNS.exe (ID: 784)
 [VERB] Waiting for process to finish...
 [VERB] Process output without data received
 [VERB] Process error without data received
 [INFO] Script finished
 [VERB] Waiting for process to finish...
 [DBUG] [identity.company.de] Record UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA successfully created
 [VERB] Starting commit stage
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 1/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 2/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 3/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 4/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 5/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 6/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 7/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 8/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 9/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] Will retry in 30 seconds (retry 10/10)...
 [DBUG] [identity.company.de] Looking for TXT value UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA...
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [DBUG] [identity.company.de] [<IP_ADDRESS>] Getting TXT records...
 [WARN] [identity.company.de] [<IP_ADDRESS>] No TXT records found
 [INFO] [identity.company.de] Preliminary validation failed on all nameservers
 [INFO] It looks like validation is going to fail, but we will try now anyway...
 [VERB] Commit was succesful
 [DBUG] [identity.company.de] Submitting challenge answer
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvY2hhbGwtdjMvODI0NDUxMDU4NC9yWVRzZGciLCJub25jZSI6Ilg1a0xoWGV6UnRQOHFsZW8tSjV1UEthMmlvTWxodFNMd250Nl9mWU41WG80aTY4VFlvZyIsImtpZCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYWNjdC8xMTgwNDc1ODQifQ","payload":"e30","signature":"sSHo_cHqQhR-m9cpFyutrk0k9p86os9BEbkzciJdR2yh4mVX8nQzIAh79iC1UC6xdmqVYUJPD1JugFEq1kGBUQ"}
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg",
  "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0"
}
 [DBUG] Refreshing authorization (1/15)
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvY2hhbGwtdjMvODI0NDUxMDU4NC9yWVRzZGciLCJub25jZSI6IkpTQ0dtS2NKMzl5QnNUajhLcWtzZG5zR05MQUVPQUwzYnRhX1h0ZU1tWVI5cXI4UHZZVSIsImtpZCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYWNjdC8xMTgwNDc1ODQifQ","payload":"","signature":"GpfCEMakK5IivldOx3XpMt6ZVWgi7sEtXA7McJ3Eu311R9SmrYL2mLY0tN15TOlnU-O5bySVmoJdo4QFh180ow"}
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "type": "dns-01",
  "status": "invalid",
  "error": {
    "type": "urn:ietf:params:acme:error:dns",
    "detail": "DNS problem: NXDOMAIN looking up TXT for _acme-challenge.identity.company.de - check that a DNS record exists for this domain",
    "status": 400
  },
  "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg",
  "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0",
  "validated": "2023-09-12T10:46:49Z"
}
 [EROR] [identity.company.de] Authorization result: invalid
 [EROR] [identity.company.de] {"type":"urn:ietf:params:acme:error:dns","detail":"DNS problem: NXDOMAIN looking up TXT for _acme-challenge.identity.company.de - check that a DNS record exists for this domain","status":400,"instance":null}
 [VERB] Starting post-validation cleanup
 [INFO] Script ./Company.Tool.Hetzner.DNS.exe starting with parameters delete identity.company.de _acme-challenge.identity.company.de UQIDEz0nbxhUzTFTcwJBdakxX2HYXkI3BEd64DNwcDA HETZNER_API_TOKEN
 [DBUG] Process launched: ./Company.Tool.Hetzner.DNS.exe (ID: 5792)
 [VERB] Waiting for process to finish...
 [VERB] Process output without data received
 [VERB] Process error without data received
 [INFO] Script finished
 [VERB] Waiting for process to finish...
 [VERB] Post-validation cleanup was succesful
 [INFO] [identity.company.de] Deactivating pending authorization
 [DBUG] [HTTP] Send POST to https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/8244510584
 [VERB] [HTTP] Request content: {"protected":"eyJhbGciOiJFUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYXV0aHotdjMvODI0NDUxMDU4NCIsIm5vbmNlIjoiWDVrTGhYZXpfVFF0VU54Z2dqM0tPMncxbUZheFZoYlRkcngxSmxnWWMzdlVsT3dNQm1RIiwia2lkIjoiaHR0cHM6Ly9hY21lLXN0YWdpbmctdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hY2N0LzExODA0NzU4NCJ9","payload":"eyJzdGF0dXMiOiJkZWFjdGl2YXRlZCJ9","signature":"de4UjQS---ct5ip0YzlNJiMGN59RYQBJlfjOUGcPLwK6G2vneh4NlwrxRPUE29Bd6J7Lx7MPc03-IJWDu1LLoA"}
 [VERB] [HTTP] Request completed with status OK
 [VERB] [HTTP] Response content: {
  "identifier": {
    "type": "dns",
    "value": "identity.company.de"
  },
  "status": "deactivated",
  "expires": "2023-09-19T10:36:56Z",
  "challenges": [
    {
      "type": "dns-01",
      "status": "invalid",
      "error": {
        "type": "urn:ietf:params:acme:error:dns",
        "detail": "DNS problem: NXDOMAIN looking up TXT for _acme-challenge.identity.company.de - check that a DNS record exists for this domain",
        "status": 400
      },
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/8244510584/rYTsdg",
      "token": "s8T-s2308gZXgvQAphqN603S9jNGNl3QOzAZYDvU5R0",
      "validated": "2023-09-12T10:46:49Z"
    }
  ]
}
 [VERB] Order 1/1 (Main): error Validation failed
 [VERB] Processing order 1/1: Main

 Create certificate failed, retry? (y/n*) - no

 [EROR] Create certificate failed

 N: Create certificate (default settings)
 M: Create certificate (full options)
 R: Run renewals (0 currently due)
 A: Manage renewals (0 total)
 O: More options...
 Q: Quit

 Please choose from the menu: q

 [VERB] Exiting with status code 0

Expected behavior
DNS validation to succeed.
Log
-/-
Platform:

OS: Windows 2016 Standard German
Version: v<IP_ADDRESS>1 (x64, Release) pluggable

Additional context
settings.json
{
  "Client": {
    "ClientName": "win-acme",
    "ConfigurationPath": null,
    "LogPath": null,
    "VersionCheck": false
  },
  "UI": {
    "DateFormat": "yyyy/M/d",
    "PageSize": 50,
    "TextEncoding": "utf-8"
  },
  "Acme": {
    "DefaultBaseUri": "https://acme-v02.api.letsencrypt.org/",
    "DefaultBaseUriTest": "https://acme-staging-v02.api.letsencrypt.org/",
    "DefaultBaseUriImport": "https://acme-v01.api.letsencrypt.org/",
    "PostAsGet": true,
    "RetryCount": 15,
    "RetryInterval": 5,
    "PreferredIssuer": null
  },
  "Execution": {
    "DefaultPreExecutionScript": null,
    "DefaultPostExecutionScript": null
  },
  "Proxy": {
    "Url": "[System]",
    "UserName": null,
    "Password": null
  },
  "Cache": {
    "ReuseDays": 1,
    "DeleteStaleFiles": true,
    "DeleteStaleFilesDays": 120,
    "Path": null
  },
  "ScheduledTask": {
    "RenewalDays": 55,
    "RenewalDaysRange": 0,
    "RenewalMinimumValidDays": null,
    "RenewalDisableServerSchedule": false,
    "RandomDelay": "04:00:00",
    "StartBoundary": "09:00:00",
    "ExecutionTimeLimit": "02:00:00"
  },
  "Notification": {
    "SmtpServer": null,
    "SmtpPort": 25,
    "SmtpUser": null,
    "SmtpPassword": null,
    "SmtpSecure": false,
    "SmtpSecureMode": 1,
    "SenderName": null,
    "SenderAddress": null,
    "ReceiverAddresses": [],
    "EmailOnSuccess": false,
    "ComputerName": null
  },
  "Security": {
    "EncryptConfig": true,
    "FriendlyNameDateTimeStamp": true
  },
  "Script": {
    "Timeout": 600,
    "PowershellExecutablePath": "powershell.exe"
  },
  "Source": {
    "DefaultSource": null
  },
  "Validation": {
    "DefaultValidation": null,
    "DefaultValidationMode": null,
    "DisableMultiThreading": true,
    "CleanupFolders": true,
    "PreValidateDns": true,
    "PreValidateDnsRetryCount": 10,
    "PreValidateDnsRetryInterval": 30,
    "AllowDnsSubstitution": true,
    "DnsServers": [ "<IP_ADDRESS>", "<IP_ADDRESS>", "<IP_ADDRESS>" ]
  },
  "Order": {
    "DefaultOrder": null,
    "DefaultValidDays": null
  },
  "Csr": {
    "DefaultCsr": null,
    "Rsa": {
      "KeyBits": 3072,
      "SignatureAlgorithm": "SHA512withRSA"
    },
    "Ec": {
      "CurveName": "secp384r1",
      "SignatureAlgorithm": "SHA512withECDSA"
    }
  },
  "Store": {
    "DefaultStore": null,
    "CertificateStore": {
      "DefaultStore": null,
      "PrivateKeyExportable": false,
      "UseNextGenerationCryptoApi": false
    },
    "CentralSsl": {
      "DefaultPath": null,
      "DefaultPassword": null
    },
    "PemFiles": {
      "DefaultPath": null,
      "DefaultPassword": null
    },
    "PfxFile": {
      "DefaultPath": null,
      "DefaultPassword": null
    }
  },
  "Installation": {
    "DefaultInstallation": null
  },
  "Secrets": {
    "Json": {
      "FilePath": null
    }
  }
}

Hi @msschl, it looks like its not just the prevalidation failing but also the real validation. My best guess at this point is that you are updating an internal name server thats not accessible or authoritative from the public internet.

Never mind what win-acme does for a while, because Let's Encrypt also doesn't find the TXT records and that's a bigger problem. So either that server is not used when querying from the public internet, or the records are not in the right place.

Ok, I found the issue. The {RecordName} that is generated by win-acme is _acme-challenge.identity.company.de where .company.de is the domain. However, Hetzner applies the .company.de on its own to the record. So changing the record name to just _acme-challenge.identity resolved the issue.
I don't know whether that is normal behavior that is done by Hetzner DNS service and or if other provides do the same.

Different servers work in different ways, and it of course depends on how you layed out your zones, hence we have different variables for script writers to use like {RecordName}, {Identifier}, {ZoneName} and {NodeName}. You just have to pick what works best for your scenario. In any case glad it's working now 👍
https://www.win-acme.com/reference/plugins/validation/dns/script

Hello @msschl. I'm also having a problem to use Hetzner DNS with win-acme. Would you mind to share the Company.Tool.Hetzner.DNS.exe ?

Sure, but I can do that only at the end of the month. I am currently not in office. Would that be ok? I would likely publish a plugin for win-acme if possible

I'm happy to wait until the end of the month. A win-acme plugin for Hetzner would be great.

I finally found some free time to create a plugin for Hetzner DNS validation. It is working in our companys production environment already.


Generate QR codes from short DOIs

The JSON files should now have both DOIs and ShortDOIs, both should be shorter than the full PQR URL, e.g.
http://pqr.pitt.edu/mol/WQZGKKKJIJFFOK-GASJEMHNSA-N
http://doi.org/10.17614/Q4Z893F9R
http://doi.org/10/f3frsh
The smaller URLs will give better QR codes.

New JSON files are on prod

We don't have the ShortDOIs on the page yet, reopening.

They are in the json files, promise.

Yeah, we have to add them to the template is all.

I'm less concerned with putting them in the template than using them for the QR codes.

Oh, we can do that, no problem. Will do that sometime this week.


Install not working

I’m currently trying to install GDT on my computer and I’ve run into an issue that I can’t figure out. I used the pip install command as it says on the docs page. However, when I run gdt-data init I receive the following error:
Traceback (most recent call last):
File "/home/unholysun/Documents/GDT/GDT/bin/gdt-data", line 44, in
from gdt.core.heasarc import FileDownloader
File "/home/unholysun/Documents/GDT/GDT/lib/python3.8/site-packages/gdt/core/heasarc.py", line 379, in
class FileDownloader(BaseFinder):
File "/home/unholysun/Documents/GDT/GDT/lib/python3.8/site-packages/gdt/core/heasarc.py", line 402, in FileDownloader
def bulk_download(self, urls: list[str], dest_dir: Union[str, Path], verbose: bool = True):
TypeError: 'type' object is not subscriptable
I’m not sure if this is user error or perhaps something specific to my setup. I’m running Ubuntu through WSL2 in Windows 11. I have all required packages for the requierments.txt file installed and a virtual environment set up.

One possible cause of this error could be that you are using a version of Python that is not compatible with the GDT package. It's also possible that there is a bug in the GDT code itself.
To troubleshoot this issue, you could try a few things:
Check the version of Python that you are using. Make sure it is compatible with the GDT package. You can do this by running python --version in your terminal.
Make sure that you have installed all the required dependencies for the GDT package, including any specific version requirements. You can check the requirements.txt file to see what dependencies are needed.

@atrigg2 I wasn't able to reproduce your error on my installation of Ubuntu 22.04 through WSL2 on Windows 11.  My Ubuntu install uses Python 3.10.6.  It may be an issue with Python 3.8. can you post the output of lsb_release -a and python3 --version?

@BillCleveland-USRA  Here s the info you requested
(GDT) unholysun@LSU-Machine:~/Documents/GDT$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal
(GDT) unholysun@LSU-Machine:~/Documents/GDT$ python3 --version
Python 3.8.10

Thanks. I installed Ubuntu 20.04 LTS and was able to reproduce your error.  I'll work the issue.

@atrigg2 The problem was caused by a type in a method declaration where "list[str]" was used instead of "List[str]".  Apparently this is not an issue for the later versions of Python. I released a minor update, and the update should by on PyPI now.
To update your install use pip install --upgrade astro-gdt

@BillCleveland-USRA This appears to have fixed the issue. I no longer get the error message when trying to use GDT. Thanks!


Add unit test coverage for service principal validation (dynamic validator and operator)

We can solve the following todo items:
https://github.com/Azure/ARO-RP/blob/57e4bf000d38df650b29247319f5796e0280ed32/pkg/api/validate/dynamic/serviceprincipal.go#L18
https://github.com/Azure/ARO-RP/blob/57e4bf000d38df650b29247319f5796e0280ed32/pkg/operator/controllers/checker/serviceprincipalchecker_test.go#L19
by mocking aad.GetToken in a similar we mock time.Now() from go standard library.
Example code:
https://github.com/Azure/ARO-RP/blob/57e4bf000d38df650b29247319f5796e0280ed32/pkg/util/clientauthorizer/arm_test.go#L124
Example test:
https://github.com/Azure/ARO-RP/blob/57e4bf000d38df650b29247319f5796e0280ed32/pkg/util/clientauthorizer/arm.go#L55

Hi @m1kola
I have experience with Golang, but not much in writing Unit tests.
This issue might be a good starting point for me.
I would like to take it up.
Could you assist me with it?

@kitarp29 unfortunately I'm not sure whether I can provide enough assistance in learning unit testing to external contributors at the moment.
But I'll try to give you some pointers. I recommend checking out this tutorial on unit testing from Go website (it is a part of a bigger tutorial). Also take a look at documentation for testing package from standard library. Apart from very good overview of the testing package it also has some examples. Another commonly used package for unit testing is gomock. We use it in our codebase for generating mocks from interfaces and a lot of other go projects use this package.
Apart from go specific things it might be a good idea to look something up on different types of tests. And find an answer to the question "what is a good unit tests?". Unit tests are often unintentionally turned into tests which test multiple units. Think about the reasons why it is not good.
Once you are more comfortable with the basics - take a look at the real world examples (in our codebase, in upstream Kubernetes or in some other go project) and try to write more complex tests yourself.

Hello @kitarp29, as complementary material to the good resources that @m1kola has suggested, I think that Learn Go with tests could help you as it covers the basics of unit testing in Go. Cheers!

Issue resolved in PR #2488


[FEATURE REQUEST] Make it remember last used grid setting

Every time on editor's start the grid setting gets reset to "default" value. Would be nice to save last used user choice instead.

I'm not sure how to implement this.
I would implement "default grid size" for environment - no problem.
Last used value. I can save it, but it would be applied to every environment/every document.
Best way to store it for each map individually, but specifications for rmf/map formats doesn't include grid size.
Any suggestion?

I've added default grid size property to Environment editor, that would set its value to newely created document or opened with selected environment. You can set for every environment its own default value.
Its should be in its default range [0.25 - 1024] and should be exponent value 2^value to draw grid properly

Nice, seems to be good enough. Thanks!


Issue: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc5 in position 149: invalid continuation byte

Tried the tool on a apk of a game called Matr1x Fire. but it returned this error. Full log:
[INFO] Checking AndRoPass requirements
[INFO] Java binary found:  "1.8.0_391"
[INFO] APKTool binary found
[INFO] Uber Apk Signer binary found
[INFO] Decompiling applicaiton
Traceback (most recent call last):
File "C:\Users*\Downloads\AndRoPass-v0.1\AndRoPass-v0.1\AndRoPass.py", line 73, in
main()
File "C:\Users*\Downloads\AndRoPass-v0.1\AndRoPass-v0.1\AndRoPass.py", line 48, in main
if not compiler.decompile():
^^^^^^^^^^^^^^^^^^^^
File "C:\Users****\Downloads\AndRoPass-v0.1\AndRoPass-v0.1\utils\Compiler.py", line 51, in decompile
decompile_with_res_status = self.check_for_exception(stdout.decode('utf-8'))
^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc5 in position 149: invalid continuation byte

Hi Yergali2007,
Thank you so much for reporting this bug and helping us improve the project. Your feedback is invaluable.
We have made some changes and believe the issue has been resolved. Could you please test again and let us know if the problem persists?
Best regards,


Conversion removes wait_for checks

checks introduced in old-style wait_fors are removed when conversions are done

Warnings are raised by the library on conversion.


replace SNNSynopCounter with SNNAnalyser, which calculates statistics for both param and spiking layers

I created SNNAnalyser to help streamline logging model statistics and calculate additonal objective function terms such as number of synaptic operations. A lot of the time, people do not know how to track firing rates or synaptic operations for different layers in their model or they use their custom code. Using this class, they can simply attach an analyser to their model, which we can then use across the whole team. If users need additional statistics, it's easy to add them here.

Looks good to me! I also like that you added unit tests to make sure the expected statistics are obtained.
One thing that confuses me in the ANN tutorial (Training ANNs with fewer Synops) is that it seems to get a non-integer number for the synop count. How can this be when the output of the neuromorphic ReLUs is discrete?
Also, the heading promises more than there actually is. I would have assumed it shows how the ANN can be optimized to reduce the number of synops, but it is only showing how to count them.
This is just a detail, but in the SNN tutorial, the class is called SNNAnalyzer with a z, but the instance analyser, with an s. Can we stay consistent and stick with one spelling?

To summarize my (minor) suggestions for improvements:
ANN tutorial

[ ] Clarify why there are non-integer synops counts for discrete neuromorphic ReLU
[ ] Match heading with content

SNN tutorial

[ ] Consistent spelling analyzer vs analyser

Documentation

[ ] Mention that synops counts are approximate at the edge of layers (see my comment to synopcounter.py

This is now updated! I'm not sure about the last point you listed. Where is that comment?

Also I didn't clarify but the non-integer synops values occured because they are averaged across the batch size. Now feeding a single sample and they're integer as expected :)

Sorry, I didn't realize I had to publish my review first :sweat_smile:

Also I didn't clarify but the non-integer synops values occured because they are averaged across the batch size. Now feeding a single sample and they're integer as expected :)

Ah yes, this is much better now. However, I wonder if we shouldn't point out somewhere that it averages over the batch size. I see how that makes sense, but I hadn't considered or expected that.
Also, wouldn't it make sense to then average over timesteps as well?

Okay, with the latest changes (transposed convolution for determining fanout), I would suggest these final improvements:

[ ] Clarify in docs that synops are averaged over batches
[ ] Clarify (for developers) why taking the transpose convolution gives the fanout. Is there any resource that you could link to?
[ ] Add some clarifying comments about the scale_factor business in SNNAnalyzer.get_layer_statistics. It's clever, but I didn't find it completely obvious at first.

Thanks! I added a little bit more clarification as to why the scaling factors are necessary.


Unignore test

The test broke when the transaction pool synchronization appeared in the instantiated client.
Closes #8681

Of course my solution is a bit short-sighted, because similar to the end of the match it completely ignores whatever else happens on these connections and only cares about the extra protocol foo.

bot merge


Create list of expectations to the Hero of the Week

Done! You can find it in the heap-purple repo


Jupyter notebook incorrect indentation with argument specified on first line of function/class

Environment data

VS Code version: 1.52.1
Extension version (available under the Extensions sidebar): v2020.12.424452561
OS and version: Windows Server 2019 Datacenter v1809
Python version (& distribution if applicable, e.g. Anaconda): 3.7 (miniconda)
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda
Relevant/affected Python packages and their versions: VS Code Python Jupyter notebook
Relevant/affected Python-related VS Code extensions and their versions: N/A
Value of the python.languageServer setting: Pylance

Expected behaviour
Indentation within function/class argument list aligns with opening paren after an argument has been specified on the first line.

Actual behaviour
Indentation goes to left margin.

Note that standard Python code editor (not notebook) behaves as expected:

Also, within notebook cells the indentation behavior without an argument on the first line also behaves as expected:

Steps to reproduce:
See example images above
Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

User belongs to experiment group 'AlwaysDisplayTestExplorer - control'
User belongs to experiment group 'ShowPlayIcon - start'
User belongs to experiment group 'DebugAdapterFactory - experiment'
User belongs to experiment group 'PtvsdWheels37 - experiment'
User belongs to experiment group 'UseTerminalToGetActivatedEnvVars - control'
User belongs to experiment group 'LocalZMQKernel - experiment'
User belongs to experiment group 'CollectLSRequestTiming - control'
User belongs to experiment group 'CollectNodeLSRequestTiming - experiment'
User belongs to experiment group 'EnableIPyWidgets - experiment'
User belongs to experiment group 'RunByLine - experiment'
User belongs to experiment group 'CustomEditorSupport - control'
User belongs to experiment group 'pythonaa'
User belongs to experiment group 'pythonJoinMailingListVar3'
User belongs to experiment group 'pythonSendEntireLineToREPLcf'
User belongs to experiment group 'pythonNotDisplayLinterPrompt'
> conda --version
> pyenv root
> python3.7 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python3.6 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python3 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python2 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> py -3.7 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> py -3.6 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> py -3 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> py -2 c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> C:\Miniconda\envs\cseai_page\python.exe c:\Users\otterpie\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
Starting Pylance language server.
Python interpreter path: C:\Miniconda\envs\cseai_page\python.exe
> conda info --json
> conda info --json
> conda info --json
> conda info --json
> conda env list
> conda info --json
> conda info --json
> conda env list

Thanks for the issue. This will be addressed when we switch to using the new VS code API (which you can preview by installing the VS code insiders build).

Thanks for the issue. This will be addressed when we switch to using the new VS code API (which you can preview by installing the VS code insiders build).


Fix a compile issue on master

Fixes an accidental "merge conflict" from https://github.com/bytecodealliance/wasmtime/pull/1377

https://github.com/bytecodealliance/wasmtime/pull/1548 has a better description :)


Update dependencies

Before:

After:

Still needs testing

Have this error on desktop when sign transaction on mobile using desktop-mobile connection:

Is cancelSignPromise a Bluebird promise? Is cancelation enabled in Bluebird?


Reset styles when changing analysis parameters affecting style by value

STR:

Create an intersection between 2 layers aggregating by count
Style the polygon layer with by value with the count_vals_density for example
Change the parameters of the analysis to do the avg(another_column)
Analysis will fail.

It shouldn't fail, it should reset the styles on the polygon layer ONLY when the columns that are being use are not present anymore.

Hum..., pandora box.

This is already fixed https://github.com/CartoDB/cartodb/pull/10462. 💃


#540 Added

Description
This PR fixes #540
Notes for Reviewers

Oh...by the way by creating this pr i verified that greeting bot is working good


ci(Mergify): configuration update

This change has been made by @Avielyo10 from https://mergify.com config editor.

@mergify has bug, remove the ready label as for now


Determine advantage of converting RedBlackTree colour to bitset<1>

Check size differences and efficiency of converting colour flag to a bitset.

std::cout << "bool " << sizeof(bool) << " bitset " << sizeof(std::bitset<1>) << std::endl;
output: bool 1 bitset 8

Leaving as bool as memory footprint is smaller.


Would be great if u could activate deactivate.

What do u think ?

+1 because boxes block content.

Fixed with #6