Reset flashes previous screens in StackNavigator

Current Behavior
When I use NavigationsActions.reset(), the display cycles through all the previous screens before it lands on its intended destination, as if it's pressing the back button in rapid succession.
My code looks like this:
const MyApp = StackNavigator({
 Home: {
    screen: HomeScreen,
  },
  Screen1: {
    screen: Screen1,
  },
  Screen2: {
    screen: Screen2,
  },
  Screen3: {
    screen: Screen3
  },
  Screen4: {
    screen: Screen4,
  }
},
  { headerMode: 'screen' }
);

On Screen4, I am calling reset() like this:
let resetNav = NavigationActions.reset({
  index: 0,
  actions: [
      NavigationActions.navigate({routeName: 'Home'})
  ]
})

this.props.navigation.dispatch(resetNav);

At which point it cycles quickly through Screen3 --> Screen2 --> Screen1 --> Home.
Expected Behavior
I would like it to simply go from Screen4 to Home, as if I were calling this.props.navigation.navigate('Home').
Is there something I'm missing? Any help would be appreciated.
Your Environment

software
version

react-navigation
1.0.0-beta.12

react-native
0.44.2

node
8.2.1

npm or yarn
npm 5.3.0

This has been posted a few times before. I recommend closing this issue and following the issue here: https://github.com/react-community/react-navigation/issues/2084 and here: https://github.com/react-community/react-navigation/issues/1493
Next time do a quick search before posting ;)

I did ample searches, but neglected to try queries in Mandarin. My bad!

Huh. I just searched "reset flash" and they came right up.

Huh. I just searched "reset flash" and they came right up.

That's great!


How to determine the Z_Axis edge of irregular multifax surfaces

There is a question I would like to ask, like this kind of irregular multiple surfaces how to determine which is the z-axis edge, I tried several directions, but the resulting path is not right.can you help answer it, thank you very much.

Hello, I want to ask have you successfully reappear the whole process on the grasshopper?


fix(useSortBy): fix the bug that causes flatRows to be incorrect when sorting and using subRows

This should also fix #2303, though obviously I was noticing different symptoms.

What's the status of this pr? I'm having this exact issue, I was going to report, can we move forward or is there any blocker?

If someone else lend here, as a work around I'm sorting the data before pass them as parameter to useTable hook, but yeah it's not great. Anything we can help on this one? (of course this will work as initial sorting, not sure what happens if you update sorting manually)

@tannerlinsley Would you please take a look at this PR?

:tada: This PR is included in version 7.3.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

@aaryn101, can you take another look at #2303? This PR did not address that issue.


Fit function of FullLLLaplace runs slower in Github version in comparison to pip version

Hello,
After having installed the new version of Laplace as specified in #191 , I am getting much slower fitting times using the FullLLLaplace module. I use the exact same code base only exchanging the version of Laplace (and new dependencies of the Github version). Running on the same GPU (Titan V) I time the fit function to take approximately 10 seconds in the pip version and 1805 seconds in the Git. I am also getting a user warning in the Git version, which I do not get using the pip version:
/home/mikkjo/.conda/envs/ude/lib/python3.12/site-packages/torch/autograd/graph.py:744: UserWarning: Attempting to run cuBLAS, but there was no current CUDA context! Attempting to set the primary context... (Triggered internally at ../aten/src/ATen/cuda/CublasHandlePool.cpp:135.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass

Am I supposed to be calling the init or fit functions differently in the Git version which may be the cause of the difference in fit time?

Hmm interesting. The major change would be AsdlGGN -> CurvlinopsGGN as the default backend. Could you try this and let me know the runtime?
+from laplace.curvature import AsdlGGN

...

la = Laplace(
    model,
    ...
+    backend=AsdlGGN,
)
la.fit(train_loader)

Using the AsdlGGN backend the fit time is now back to the old version (10 seconds approx) and I am not getting the Cuda context warning any longer. So seems it is related to CurvlinopsGGN?
The warning stems from https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/cuda/CublasHandlePool.cpp, but I am not sure if it is useful. There is a comment above the warning stating:
// workaround for corner case where a primary context exists but is not
// the current context, seen in multithreaded use-cases

I thought that perhaps the issue was related to using num_workers>1, but setting this to 0 in my training loader, the warning still persists for CurvlinopsGGN.

As for grid search, please open a separate issue---let's discuss it there for clarity sake! Thanks!

The full call to Laplace is as follows (I have included arguments for .fit and .optimize_prior_precision in case it is of interest):
llla_model = FullLLLaplace(
          self.model,
          likelihood='classification',
          backend = AsdlGGN,
)

llla_model.fit(train_loader)

llla_model.optimize_prior_precision(
          method='gridsearch',
          val_loader=val_loader,
          pred_type='nn',
          link_approx='mc',
          n_samples = 100,
          grid_size = 21,
          log_prior_prec_min = -4,
          log_prior_prec_max = 4,
          progress_bar = True,
)

I talked to @f-dangel, the author of f-dangel/curvlionps-for-pytorch. The issue is because of this line(s):
https://github.com/aleximmer/Laplace/blob/83c5de70bb976a4266fe2c66f06f8726eba669fe/laplace/curvature/curvlinops.py#L117-L120
It is implemented as for-loop over num. of parameters => slow.
I would put warning messages to inform users about their choice of backend + Laplace type. I will also decouple the Jacobian computation in the GLM predictive to use whatever is best for the situtation (e.g. does one need to backprop through the predictive?) instead of it being tied to the choice of backend.
@MJordahn thanks again for bringing this issue to our attention!

I talked to @f-dangel, the author of f-dangel/curvlionps-for-pytorch. The issue is because of this line(s):
https://github.com/aleximmer/Laplace/blob/83c5de70bb976a4266fe2c66f06f8726eba669fe/laplace/curvature/curvlinops.py#L117-L120
It is implemented as for-loop over num. of parameters => slow.
I will put warning messages to inform users about their choice of backend + Laplace type. I will also decouple the Jacobian computation in the GLM predictive to use whatever is best for the situtation (e.g. does one need to backprop through the predictive?) instead of it being tied to the choice of backend.
@MJordahn thanks again for bringing this issue to our attention!

This line will also cause an exception when pytorch's default device is set to cuda. scipy.LinearOperator.matmul will simply convert the multiplier from a cuda tensor to a numpy array, but cuda tensors need to be moved to cpu before it can be converted to a numpy array. I get past this by changing the multiplier to np.eye(linop.shape[0]), but this would mean the matmul is done on cpu.

The above would indeed be the limitations of curvlinops. I would suggest to simply use hessian_factorization=kron---it should work best for all problems I could imagine.
If you must use the full GGN/Hessian (would be curious for what applications!), then the asdl backend should be used.


add missing header

Hi, I was trying to create Rust bindings of the C++ version of Clipper2 and I noticed this missing include directive which makes the build fail.
The build was failing only because FillRule is defined in clipper.engine.h which wasn't included in clipper.minkowski.h. I've simply added it, but maybe it makes more sense to move the FillRule declaration in clipper.core.h to reduce the number of headers included.

Thanks Daniele.
I moved the FillRule definition into clipper.core.h which I think is the better solution.


Out of memory at inference time

I've been trying to run ACE at inference time using a single NVIDIA Hopper H100 64GB HBM2 on an HPC, and we've even tried to run it on 4 H100s, but I keep getting PyTorch memory allocation errors. To further test this out, I dropped the number of forward steps to lower values (200, 100, 50, and even 2). Regardless of the amount, the code crashes before completing a single step. Note that we're using the initial condition from January 1st, 2021 (i.e.<PHONE_NUMBER>.nc) and the model checkpoint provided on the Zenodo repository.
I double checked the computational complexity on the paper and saw you guys were running inference on a single A100, so I'm leaning on this being a data loading issue. We were able to isolate the problem to the SingleModuleStepperConfig class on the stepper script as the code seems to crash on line 378 (self.module = dist.wrap_module(self.module)).
This is the current output when we try to run inference
2024-08-27 10:24:46,356 - root - WARNING - Environmental variable BEAKER_EXPERIMENT_ID not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable SLURM_JOB_ID not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable SLURM_JOB_USER not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_TRAIN_DIR not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_VALID_DIR not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_STATS_DIR not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_CHECKPOINT_DIR not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_OUTPUT_DIR not found.
2024-08-27 10:24:46,358 - root - WARNING - Environmental variable FME_IMAGE not found.
2024-08-27 10:24:46,358 - root - WARNING - Beaker Experiment ID not found.
2024-08-27 10:24:46,358 - root - INFO - --------------- Versions ---------------
2024-08-27 10:24:46,358 - root - INFO - Torch: 2.1.0a0+29c30b1
2024-08-27 10:24:46,358 - root - INFO - ----------------------------------------
2024-08-27 10:24:46,722 - root - INFO - Current device is cuda:0
2024-08-27 10:24:46,722 - root - INFO - Loading trained model checkpoint from /gpfs/projects/bsc32/bsc032010/ace-data/ace_ckpt.tar
2024-08-27 10:24:48,906 - root - INFO - Loading initial condition data
2024-08-27 10:24:50,460 - root - INFO - Initializing forcing data loaded
2024-08-27 10:24:50,479 - root - INFO - Opening data at /gpfs/projects/bsc32/bsc032010/ace-data/*.nc
2024-08-27 10:24:54,128 - root - INFO - Found 1060 samples.
2024-08-27 10:24:54,128 - root - INFO - Image shape is 180 x 360.
2024-08-27 10:24:54,128 - root - INFO - Following variables are available: ['DLWRFsfc', 'DSWRFsfc', 'DSWRFtoa', 'GRAUPELsfc', 'HGTsfc', 'ICEsfc', 'LHTFLsfc', 'PRATEsfc', 'PRESsfc', 'SHTFLsfc', 'SNOWsfc', 'ULWRFsfc', 'ULWRFtoa', 'USWRFsfc', 'USWRFtoa', 'air_temperature_0', 'air_temperature_1', 'air_temperature_2', 'air_temperature_3', 'air_temperature_4', 'air_temperature_5', 'air_temperature_6', 'air_temperature_7', 'ak_0', 'ak_1', 'ak_2', 'ak_3', 'ak_4', 'ak_5', 'ak_6', 'ak_7', 'ak_8', 'bk_0', 'bk_1', 'bk_2', 'bk_3', 'bk_4', 'bk_5', 'bk_6', 'bk_7', 'bk_8', 'eastward_wind_0', 'eastward_wind_1', 'eastward_wind_2', 'eastward_wind_3', 'eastward_wind_4', 'eastward_wind_5', 'eastward_wind_6', 'eastward_wind_7', 'grid_xt', 'grid_yt', 'land_fraction', 'northward_wind_0', 'northward_wind_1', 'northward_wind_2', 'northward_wind_3', 'northward_wind_4', 'northward_wind_5', 'northward_wind_6', 'northward_wind_7', 'ocean_fraction', 'sea_ice_fraction', 'soil_moisture', 'specific_total_water_0', 'specific_total_water_1', 'specific_total_water_2', 'specific_total_water_3', 'specific_total_water_4', 'specific_total_water_5', 'specific_total_water_6', 'specific_total_water_7', 'surface_temperature', 'tendency_of_total_water_path', 'tendency_of_total_water_path_due_to_advection', 'time', 'total_water_path'].
2024-08-27 10:24:54,378 - root - INFO - Opening data at /gpfs/projects/bsc32/bsc032010/ace-data/*.nc
2024-08-27 10:24:56,013 - root - INFO - Found 1060 samples.
2024-08-27 10:24:56,014 - root - INFO - Image shape is 180 x 360.
2024-08-27 10:24:56,014 - root - INFO - Following variables are available: ['DLWRFsfc', 'DSWRFsfc', 'DSWRFtoa', 'GRAUPELsfc', 'HGTsfc', 'ICEsfc', 'LHTFLsfc', 'PRATEsfc', 'PRESsfc', 'SHTFLsfc', 'SNOWsfc', 'ULWRFsfc', 'ULWRFtoa', 'USWRFsfc', 'USWRFtoa', 'air_temperature_0', 'air_temperature_1', 'air_temperature_2', 'air_temperature_3', 'air_temperature_4', 'air_temperature_5', 'air_temperature_6', 'air_temperature_7', 'ak_0', 'ak_1', 'ak_2', 'ak_3', 'ak_4', 'ak_5', 'ak_6', 'ak_7', 'ak_8', 'bk_0', 'bk_1', 'bk_2', 'bk_3', 'bk_4', 'bk_5', 'bk_6', 'bk_7', 'bk_8', 'eastward_wind_0', 'eastward_wind_1', 'eastward_wind_2', 'eastward_wind_3', 'eastward_wind_4', 'eastward_wind_5', 'eastward_wind_6', 'eastward_wind_7', 'grid_xt', 'grid_yt', 'land_fraction', 'northward_wind_0', 'northward_wind_1', 'northward_wind_2', 'northward_wind_3', 'northward_wind_4', 'northward_wind_5', 'northward_wind_6', 'northward_wind_7', 'ocean_fraction', 'sea_ice_fraction', 'soil_moisture', 'specific_total_water_0', 'specific_total_water_1', 'specific_total_water_2', 'specific_total_water_3', 'specific_total_water_4', 'specific_total_water_5', 'specific_total_water_6', 'specific_total_water_7', 'surface_temperature', 'tendency_of_total_water_path', 'tendency_of_total_water_path_due_to_advection', 'time', 'total_water_path'].
2024-08-27 10:24:56,080 - root - INFO - Multiprocessing inference context: fork
2024-08-27 10:24:56,080 - root - INFO - Loading trained model checkpoint from /gpfs/projects/bsc32/bsc032010/ace-data/ace_ckpt.tar
2024-08-27 10:24:58,698 - root - INFO - Starting inference
2024-08-27 10:25:37,291 - root - INFO - Inference: starting window spanning 0 to 50 steps.
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/full-model/fme/fme/ace/inference/__main__.py", line 8, in <module>
    main(yaml_config=args.yaml_config)
  File "/full-model/fme/fme/ace/inference/inference.py", line 221, in main
    run_inference_from_config(config)
  File "/full-model/fme/fme/ace/inference/inference.py", line 275, in run_inference_from_config
    timers = run_inference(
  File "/full-model/fme/fme/ace/inference/loop.py", line 197, in run_inference
    prediction = stepper.predict(
  File "/full-model/fme/fme/core/stepper.py", line 508, in predict
    state = self.step(input_data, next_step_ocean_data)
  File "/full-model/fme/fme/core/stepper.py", line 460, in step
    output_tensor = self.module(input_tensor)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1505, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1514, in _call_impl
    return forward_call(*args, **kwargs)
  File "/full-model/fme/fme/core/distributed.py", line 26, in forward
    return self.module(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1505, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1514, in _call_impl
    return forward_call(*args, **kwargs)
  File "/full-model/fme/fme/ace/models/modulus/sfnonet.py", line 708, in forward
    x = self._forward_features(x)
  File "/full-model/fme/fme/ace/models/modulus/sfnonet.py", line 678, in _forward_features
    x = blk(x)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1505, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1514, in _call_impl
    return forward_call(*args, **kwargs)
  File "/full-model/fme/fme/ace/models/modulus/sfnonet.py", line 222, in forward
    x, residual = self.filter(x_norm)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1505, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1514, in _call_impl
    return forward_call(*args, **kwargs)
  File "/full-model/fme/fme/ace/models/modulus/sfnonet.py", line 120, in forward
    return self.filter(x)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1505, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1514, in _call_impl
    return forward_call(*args, **kwargs)
  File "/full-model/fme/fme/ace/models/modulus/s2convolutions.py", line 178, in forward
    xp[..., : self.modes_lat_local, : self.modes_lon_local] = self._contract(
  File "/full-model/fme/fme/ace/models/modulus/factorizations.py", line 211, in _contract_dense_pytorch
    x = _contract_dhconv(x, weight)
RuntimeError: The following operation failed in the TorchScript interpreter.
Traceback of TorchScript (most recent call last):
  File "/full-model/fme/fme/ace/models/modulus/contractions.py", line 193, in _contract_dhconv
    ac = torch.view_as_complex(a)
    bc = torch.view_as_complex(b)
    resc = torch.einsum("bixy,iox->boxy", ac, bc)
           ~~~~~~~~~~~~ <--- HERE
    res = torch.view_as_real(resc)
    return res
RuntimeError: CUDA out of memory. Tried to allocate 7.71 GiB. GPU 0 has a total capacty of 63.43 GiB of which 2.30 GiB is free. Including non-PyTorch memory, this process has 61.12 GiB memory in use. Of the allocated memory 51.79 GiB is allocated by PyTorch, and 8.59 GiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Thanks for reporting. Indeed you should easily be able to do inference with a single H100. Could you provide an example of the exact config you are using?
I suspect this may be happening since by default all available time steps in the provided initial condition file are used. Try adding
initial_condition:
  path: ...
  start_indices:
    list:
      - 0

to your config. More options for specifying which time steps to use for the initial condition can be found here: https://ai2-climate-emulator.readthedocs.io/en/latest/api.html#fme.ace.InitialConditionConfig

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

n_forward_steps: 400  # 100 days
forward_steps_in_memory: 50
checkpoint_path: /gpfs/projects/bsc32/bsc032010/ace-data/ace_ckpt.tar
logging:
  log_to_screen: true
  log_to_wandb: false
  log_to_file: true
  project: ace_test
  entity: ml-bsc
initial_condition:
  path: /gpfs/projects/bsc32/bsc032010/ace-data/2021010100.nc
forcing_loader:
  dataset:
    data_path: /gpfs/projects/bsc32/bsc032010/ace-data/
  num_data_workers: 8
data_writer:
  save_prediction_files: false
  save_monthly_files: false

Thank you, yeah, I was missing the start index, sorry about that. We added it and the model ran under 32 seconds!

Great, glad that worked.


(WIP) Fix multiple candidates collision for relative require paths

Hi,
this is an issue we hit with our codebase. We organize code like this:
components/
  ComponentA/
    index.jsx
    assets/
      close.svg
  ComponentB/
    index.jsx
    assets/
      close.svg

Both components import the SVG file as
import buttonIcon from './assets/close.svg'

These relative require paths are not found in parsed assets and require hook falls back to webpack-stats.json file. That in turn contains multiple entries of close.svg, so the build eventually fails with More than a single candidate module was found in webpack stats error.
To fix this, I added a second pass to parsed assets matching with relative path resolved against the directory of module, where the require was found (module.filename).

Tested it on linked repository, need to fix some bugs still.

These relative require paths are not found in parsed assets
Why?
Don't you have an SVG asset type set up?
You should set up an SVG asset type and then these require paths will be found in parsed assets.

I have default asset type set up for SVG
    svg: {
      extension: 'svg',
      parser: WebpackIsomorphicToolsPlugin.url_loader_parser,
    },

, but the code fails here - https://github.com/halt-hammerzeit/webpack-isomorphic-tools/blob/master/source/plugin/write assets.js#L284
Because I have some identical relative imports in code.
Will get back to you tomorrow with details.

It should also say which require()d path was encountered the second time:
log.error(` More than a single candidate module was found in webpack stats for require()d path "${path}"`)

Tomorrow you should tell me that path and we'll see from there

[webpack-isomorphic-tools/plugin] [error]  More than a single candidate module was found in webpack stats for require()d path "./assets/close.svg"

Here is the full output and isomorphic tools config:
https://gist.github.com/msokk/ca218c8d761cd018e4f5
I tried to fix the multiple candidate problem with this PR, but the server side is still broken.

If there is a possibility to fix relative requires with configuration, that would be great.

Ok, I've added an extra debug line to the code.
Update to the latest<EMAIL_ADDRESS>and post here the new log: it will also tell the global_path for the asset being resolved.
Try to post the whole log.

Updated:
https://gist.github.com/msokk/ca218c8d761cd018e4f5#file-build-log

Ok, my guess is that it can't compile one of the CSS files which import the SVG file.
I have corrected the output logs in<EMAIL_ADDRESS>now it should tell which assets it's compiling.
Try it out and post here the same log along with your webpack-stats.json.

Updated: https://gist.github.com/msokk/ca218c8d761cd018e4f5
I'll warn you that gist is not a bit big, so it loads a bit.

A possible fix for this issue would be to examine the webpack module being compiled.
Such a module usually has a path.
This path can be somehow extracted from the module JSON object (usually that's the name property).
And then the require()d path can be evaluated agains that module path.
So if a module being compiled is ./path/to/style.css then a require() call for ./assets/image.svg could be resolved to ./path/to/assets/image.svg.
Maybe that would work.
This can be constrained to only the configured asset types and only to relative require()d paths.
After I get your reply to the previous comment I'll see if this is gonna work.

Ok, so we get:
 compiling asset "../fe-kit/components/Modal/modal.scss"

require()ing "./assets/close.svg"

Adding asset "../fe-kit/components/Modal/modal.scss", module id 958 (in webpack-stats.debug.json)

    {
      "id": 958,
      "identifier"<EMAIL_ADDRESS>      "name"<EMAIL_ADDRESS>      "index": 958,
      "index2": 953,
      "size": 92,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [
        "menu-icon.777cc075cb9a53c9a04807913fa450b8.svg"
      ],
      "issuer"<EMAIL_ADDRESS>      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 915,
          "moduleIdentifier"<EMAIL_ADDRESS>          "module"<EMAIL_ADDRESS>          "moduleName"<EMAIL_ADDRESS>          "type": "cjs require",
          "userRequest": "./assets/menu-icon.svg",
          "loc": "51:16-49"
        }
      ],
      "source": "module.exports = __webpack_public_path__ + \"menu-icon.777cc075cb9a53c9a04807913fa450b8.svg\";"
    },

That's strange...
Why doesn't webpack-stats.json module id correspond to that css file?
Are you sure you posted the correct files?
The real module seems to be:
{
      "id": 1232,
      "identifier"<EMAIL_ADDRESS>      "name"<EMAIL_ADDRESS>      "index": 1232,
      "index2": 1226,
      "size": 1781,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer"<EMAIL_ADDRESS>      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 1224,
          "moduleIdentifier"<EMAIL_ADDRESS>          "module"<EMAIL_ADDRESS>          "moduleName"<EMAIL_ADDRESS>          "type": "cjs require",
          "userRequest": "./modal.scss",
          "loc": "35:13-36"
        }
      ],
      "source": "// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!./../../../../../../universal-redux/node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss\", function() {\n\t\t\tvar newContent = require(\"!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}"
    },

    {
      "id": 1233,
      "identifier"<EMAIL_ADDRESS>      "name"<EMAIL_ADDRESS>      "index": 1233,
      "index2": 1225,
      "size": 11702,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer"<EMAIL_ADDRESS>      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 1232,
          "moduleIdentifier"<EMAIL_ADDRESS>          "module"<EMAIL_ADDRESS>          "moduleName"<EMAIL_ADDRESS>          "type": "cjs require",
          "userRequest": "!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss",
          "loc": "4:14-357"
        },
        {
          "moduleId": 1232,
          "moduleIdentifier"<EMAIL_ADDRESS>          "module"<EMAIL_ADDRESS>          "moduleName"<EMAIL_ADDRESS>          "type": "module.hot.accept",
          "userRequest": "!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss",
          "loc": "13:2-17:4"
        },
        {
          "moduleId": 1232,
          "moduleIdentifier"<EMAIL_ADDRESS>          "module"<EMAIL_ADDRESS>          "moduleName"<EMAIL_ADDRESS>          "type": "cjs require",
          "userRequest": "!!./../../../../../../universal-redux/node_modules/css-loader/index.js?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!./../../../../../../universal-redux/node_modules/postcss-loader/index.js!./../../../../../../universal-redux/node_modules/sass-loader/index.js?outputStyle=expanded&sourceMap!./modal.scss",
          "loc": "14:20-363"
        }
      ],
      "source": "exports = module.exports = require(\"./../../../../../../universal-redux/node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".fade-appear, .fade-enter {\\n  -webkit-animation-play-state: paused;\\n          animation-play-state: paused;\\n  opacity: .01;\\n}\\n\\n.fade-appear-active, .fade-enter-active {\\n  -webkit-transition: opacity .5s ease-in;\\n  transition: opacity .5s ease-in;\\n  -webkit-animation-play-state: paused;\\n          animation-play-state: paused;\\n  opacity: 1;\\n}\\n\\n.fade-leave {\\n  -webkit-animation-play-state: paused;\\n          animation-play-state: paused;\\n  opacity: 1;\\n}\\n\\n.fade-leave-active {\\n  -webkit-transition: opacity .5s ease-in;\\n  transition: opacity .5s ease-in;\\n  -webkit-animation-play-state: paused;\\n          animation-play-state: paused;\\n  opacity: .01;\\n}\\n\\n.slide-fade-enter {\\n  overflow: hidden;\\n  max-height: 0;\\n  opacity: .01;\\n}\\n\\n.slide-fade-enter-active {\\n  max-height: 500px;\\n  -webkit-transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  opacity: 1;\\n}\\n\\n.slide-fade-leave {\\n  max-height: 500px;\\n  -webkit-transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n  transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n  opacity: 1;\\n}\\n\\n.slide-fade-leave-active {\\n  overflow: hidden;\\n  max-height: 0;\\n  opacity: .01;\\n}\\n\\n.wrapper___2d5_p,\\n.backdrop___370g8 {\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n}\\n\\n.wrapper___2d5_p {\\n  z-index: 100000;\\n  display: -webkit-box;\\n  display: -webkit-flex;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-pack: center;\\n  -webkit-justify-content: center;\\n      -ms-flex-pack: center;\\n          justify-content: center;\\n  -webkit-box-align: center;\\n  -webkit-align-items: center;\\n      -ms-flex-align: center;\\n          align-items: center;\\n}\\n\\n.backdrop___370g8 {\\n  background-color: rgba(81, 91, 94, 0.4);\\n}\\n\\n.dialog___1jNGB {\\n  position: relative;\\n  margin: 1.25em;\\n  padding: 2.8125em;\\n  border-radius: 3px;\\n  background-color: #fff;\\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\\n}\\n\\n.close___aTbav {\\n  position: absolute;\\n  top: 1.25em;\\n  right: 1.25em;\\n  width: 0.9375em;\\n  height: 0.9375em;\\n  cursor: pointer;\\n  background-image: url(\" + require(\"./assets/close.svg\") + \");\\n  background-size: cover;\\n}\\n\\n.title___3Bo9N {\\n  font-size: 1.5em;\\n  margin-top: 0;\\n  margin-bottom: 0.83333em;\\n  text-align: center;\\n  color: #4a4a4a;\\n}\\n\\n.description___3PfkU {\\n  font-size: 0.875em;\\n  margin-top: 0;\\n  margin-bottom: 2.14286em;\\n  text-align: center;\\n}\\n\\n.body___2ps3A {\\n  border-radius: 3px;\\n  background-color: #f8f8f9;\\n}\\n\\n.modal-fade-enter {\\n  opacity: .01;\\n}\\n\\n.modal-fade-enter-active {\\n  -webkit-transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  opacity: 1;\\n}\\n\\n.modal-fade-leave {\\n  -webkit-transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);\\n  opacity: 1;\\n}\\n\\n.modal-fade-leave-active {\\n  opacity: .01;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"/../Zen/node_modules/@teleport/fe-kit/components/node_modules/@teleport/fe-kit/styles/transitions.scss\",\"/../Zen/node_modules/@teleport/fe-kit/components/node_modules/@teleport/fe-kit/styles/easings.scss\",\"/../Zen/node_modules/@teleport/fe-kit/components/node_modules/@teleport/fe-kit/components/Modal/modal.scss\",\"/../Zen/node_modules/@teleport/fe-kit/components/node_modules/@teleport/fe-kit/styles/mixins.scss\",\"/../Zen/node_modules/@teleport/fe-kit/components/node_modules/@teleport/fe-kit/styles/variables.scss\"],\"names\":[],\"mappings\":\"AAAA;EAGI,qCAA6B;UAA7B,6BAA6B;EAC7B,aAAa;CACd;;AALH;EASI,wCAAgC;EAAhC,gCAAgC;EAChC,qCAA6B;UAA7B,6BAA6B;EAC7B,WAAW;CACZ;;AAZH;EAeI,qCAA6B;UAA7B,6BAA6B;EAC7B,WAAW;CACZ;;AAjBH;EAoBI,wCAAgC;EAAhC,gCAAgC;EAChC,qCAA6B;UAA7B,6BAA6B;EAC7B,aAAa;CACd;;AAGH;EAEI,iBAAiB;EACjB,cAAc;EACd,aAAa;CACd;;AALH;EAQI,kBAAkB;EAClB,4GCI2B;EDJ3B,oGCI2B;EDH3B,WAAW;CACZ;;AAXH;EAcI,kBAAkB;EAClB,4GCF2B;EDE3B,oGCF2B;EDG3B,WAAW;CACZ;;AAjBH;EAoBI,iBAAiB;EACjB,cAAc;EACd,aAAa;CACd;;AE5CH;;EAEE,gBAAgB;EAChB,OAAO;EACP,SAAS;EACT,UAAU;EACV,QAAQ;CACT;;AAED;EACE,gBAAgB;EAChB,qBAAc;EAAd,sBAAc;EAAd,qBAAc;EAAd,cAAc;EACd,yBAAwB;EAAxB,gCAAwB;MAAxB,sBAAwB;UAAxB,wBAAwB;EACxB,0BAAoB;EAApB,4BAAoB;MAApB,uBAAoB;UAApB,oBAAoB;CACrB;;AAED;EACE,wCAnB6B;CAoB9B;;AAED;EACE,mBAAmB;EACnB,eCvBmB;EDwBnB,kBCxBmB;EDyBnB,mBAAmB;EACnB,uBEvBU;EFwBV,yCA7BkB;CA8BnB;;AAED;EACE,mBAAmB;EACnB,YChCmB;EDiCnB,cCjCmB;EDkCnB,gBClCmB;EDmCnB,iBCnCmB;EDoCnB,gBAAgB;EAChB,gDAAqB;EACrB,uBAAuB;CACxB;;AAED;EACE,iBC1CmB;ED2CnB,cAAc;EACd,yBC5CmB;ED6CnB,mBAAmB;EACnB,eE9BuB;CF+BxB;;AAED;EACE,mBClDmB;EDmDnB,cAAc;EACd,yBCpDmB;EDqDnB,mBAAmB;CACpB;;AAED;EACE,mBAAmB;EACnB,0BEtDiB;CFuDlB;;AAED;EAEI,aAAa;CACd;;AAHH;EAMI,8DDhC2B;ECgC3B,sDDhC2B;ECiC3B,WAAW;CACZ;;AARH;EAWI,8DDrC2B;ECqC3B,sDDrC2B;ECsC3B,WAAW;CACZ;;AAbH;EAgBI,aAAa;CACd\",\"file\":\"modal.scss\",\"sourcesContent\":[\":global(.fade) {\\n  &-appear,\\n  &-enter {\\n    animation-play-state: paused;\\n    opacity: .01;\\n  }\\n\\n  &-appear-active,\\n  &-enter-active {\\n    transition: opacity .5s ease-in;\\n    animation-play-state: paused;\\n    opacity: 1;\\n  }\\n\\n  &-leave {\\n    animation-play-state: paused;\\n    opacity: 1;\\n  }\\n\\n  &-leave-active {\\n    transition: opacity .5s ease-in;\\n    animation-play-state: paused;\\n    opacity: .01;\\n  }\\n}\\n\\n:global(.slide-fade) {\\n  &-enter {\\n    overflow: hidden;\\n    max-height: 0;\\n    opacity: .01;\\n  }\\n\\n  &-enter-active {\\n    max-height: 500px;\\n    transition: opacity .5s $authentic-motion, max-height .5s $authentic-motion;\\n    opacity: 1;\\n  }\\n\\n  &-leave {\\n    max-height: 500px;\\n    transition: opacity .2s $authentic-motion, max-height .2s $authentic-motion;\\n    opacity: 1;\\n  }\\n\\n  &-leave-active {\\n    overflow: hidden;\\n    max-height: 0;\\n    opacity: .01;\\n  }\\n}\\n\",\"//\\n// Easings from\\n// http://easings.net/\\n//\\n\\n$ease-in-sine: cubic-bezier(.47, 0, .745, .715);\\n$ease-out-sine: cubic-bezier(.39, .575, .565, 1);\\n$ease-in-out-sine: cubic-bezier(.39, .575, .565, 1);\\n\\n$ease-in-quad: cubic-bezier(.55, .085, .68, .53);\\n$ease-out-quad: cubic-bezier(.25, .46, .45, .94);\\n$ease-in-out-quad: cubic-bezier(.25, .46, .45, .94);\\n\\n$ease-in-cubic: cubic-bezier(.55, .055, .675, .19);\\n$ease-out-cubic: cubic-bezier(.215, .61, .355, 1);\\n$ease-in-out-cubic: cubic-bezier(.215, .61, .355, 1);\\n\\n$ease-in-quart: cubic-bezier(.895, .03, .685, .22);\\n$ease-out-quart: cubic-bezier(.165, .84, .44, 1);\\n$ease-in-out-quart: cubic-bezier(.165, .84, .44, 1);\\n\\n$ease-in-quint: cubic-bezier(.755, .05, .855, .06);\\n$ease-out-quint: cubic-bezier(.23, 1, .32, 1);\\n$ease-in-out-quint: cubic-bezier(.23, 1, .32, 1);\\n\\n$ease-in-expo: cubic-bezier(.95, .05, .795, .035);\\n$ease-out-expo: cubic-bezier(.19, 1, .22, 1);\\n$ease-in-out-expo: cubic-bezier(.19, 1, .22, 1);\\n\\n$ease-in-circ: cubic-bezier(.6, .04, .98, .335);\\n$ease-out-circ: cubic-bezier(.075, .82, .165, 1);\\n$ease-in-out-circ: cubic-bezier(.075, .82, .165, 1);\\n\\n$ease-in-back: cubic-bezier(.6, -.28, .735, .045);\\n$ease-out-back: cubic-bezier(.175, .885, .32, 1.275);\\n$ease-in-out-back: cubic-bezier(.68, -.55, .265, 1.55);\\n\\n\\n$ease-in-out-fast: cubic-bezier(1, 0, 0, 1);\\n$authentic-motion: cubic-bezier(.4, 0, .2, 1);\\n\",\"@import \\\"../../styles/core\\\";\\n\\n$dialog-shadow: rgba(0, 0, 0, .3);\\n$backdrop-color: transparentize(#515b5e, .6);\\n\\n.wrapper,\\n.backdrop {\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n}\\n\\n.wrapper {\\n  z-index: 100000;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n\\n.backdrop {\\n  background-color: $backdrop-color;\\n}\\n\\n.dialog {\\n  position: relative;\\n  margin: em(20px);\\n  padding: em(45px);\\n  border-radius: 3px;\\n  background-color: $white;\\n  box-shadow: 0 2px 4px $dialog-shadow;\\n}\\n\\n.close {\\n  position: absolute;\\n  top: em(20px);\\n  right: em(20px);\\n  width: em(15px);\\n  height: em(15px);\\n  cursor: pointer;\\n  background-image: url(\\\"./assets/close.svg\\\");\\n  background-size: cover;\\n}\\n\\n.title {\\n  font-size: em(24px);\\n  margin-top: 0;\\n  margin-bottom: em(20px, 24px);\\n  text-align: center;\\n  color: $body-text-color;\\n}\\n\\n.description {\\n  font-size: em(14px);\\n  margin-top: 0;\\n  margin-bottom: em(30px, 14px);\\n  text-align: center;\\n}\\n\\n.body {\\n  border-radius: 3px;\\n  background-color: $alt-white;\\n}\\n\\n:global(.modal-fade) {\\n  &-enter {\\n    opacity: .01;\\n  }\\n\\n  &-enter-active {\\n    transition: opacity .5s $authentic-motion;\\n    opacity: 1;\\n  }\\n\\n  &-leave {\\n    transition: opacity .5s $authentic-motion;\\n    opacity: 1;\\n  }\\n\\n  &-leave-active {\\n    opacity: .01;\\n  }\\n}\\n\",\"@import \\\"./variables\\\";\\n\\n// EM Helper\\n@function em($target-px, $context: $base-font-size) {\\n  @return ($target-px / $context) * 1em;\\n}\\n\\n\\n// Arrow function\\n@function arrow($size: 5, $color: $dark-gray) {\\n  @return \\\"data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%22#{$size * 1.6}%22%20height%3D%22#{$size}%22%20viewBox%3D%220%200%208%205%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%200l4%205%204-5H0z%22%20fill%3D%22#{str-replace(inspect($color), \\\"#\\\", \\\"%23\\\")}%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E\\\";\\n}\\n\\n\\n// Replace `$search` with `$replace` in `$string`\\n// @author Hugo Giraudel\\n// @param {String} $string - Initial string\\n// @param {String} $search - Substring to replace\\n// @param {String} $replace (\\\") - New value\\n// @return {String} - Updated string\\n@function str-replace($string, $search, $replace: \\\"\\\") {\\n  $index: str-index($string, $search);\\n\\n  @if $index {\\n    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\\n  }\\n\\n  @return $string;\\n}\\n\\n@function strip-units($value) {\\n  @return $value / ($value * 0 + 1);\\n}\\n\\n// Named mixins for responsive layouts\\n@mixin phone {\\n  @media only screen and (max-width: $bp-phone) { @content; }\\n}\\n\\n@mixin tablet {\\n  @media only screen and (max-width: $bp-tablet) { @content; }\\n}\\n\\n@mixin desktop {\\n  @media only screen and (min-width: $bp-tablet + 1) { @content; }\\n}\\n\\n@mixin xldesktop {\\n  @media only screen and (min-width: $bp-xldesktop + 1) { @content; }\\n}\\n\",\"// Widely-used colours\\n$brand-red: #da583f;\\n$brand-yellow: #ffcc20;\\n$brand-blue: #56c0d1;\\n$brand-violet: #c163a0;\\n$brand-green: #2dc254;\\n\\n$white: #fff;\\n$alt-white: #f8f8f9;\\n$light-gray: #878a90;\\n$placeholder-gray: #ccc;\\n$border-gray: #e6e6e6;\\n$dark-gray: #5e636f;\\n$warm-gray: #929292;\\n$greyish: #adadad;\\n$greyish-brown: #595959;\\n$greeny-blue: #51bcc5;\\n\\n$body-bg-color: #e3e3e3;\\n$page-bg-color: #fffde8;\\n$body-text-color: #4a4a4a;\\n\\n\\n// Typography\\n$base-font-size: 16px;\\n$ff-heading: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\\n$ff-body: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\\n\\n\\n// Font weights\\n$fw-light: 300;\\n$fw-regular: 400;\\n$fw-semibold: 600;\\n$fw-bold: 700;\\n$fw-extrabold: 800;\\n\\n\\n// Breakpoints\\n$bp-phone: 26em; // 416px\\n$bp-tablet: 48em; // 768px\\n$bp-desktop: 64em; // 1024px\\n$bp-xldesktop: 90em; // 1440px\\n\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\nexports.locals = {\n\t\"wrapper\": \"wrapper___2d5_p\",\n\t\"backdrop\": \"backdrop___370g8\",\n\t\"dialog\": \"dialog___1jNGB\",\n\t\"close\": \"close___aTbav\",\n\t\"title\": \"title___3Bo9N\",\n\t\"description\": \"description___3PfkU\",\n\t\"body\": \"body___2ps3A\"\n};"
    },

Is the .svg path ../fe-kit/components/Modal/assets/close.svg?
(By the way, if you examine the beginning of your webpack-stats.json it has some errors. I don't know what that means.)

Ehh, my bad, I pasted the wrong webpack-stats.json
Heres the correct one: https://gist.github.com/msokk/6b3cea98361b3491d2b9
and log output for that: https://gist.github.com/msokk/abf30563603a239ded80

Is the .svg path ../fe-kit/components/Modal/assets/close.svg?
Yest, this is correct.

Ok, I can write a fix for this issue when I have time.
Maybe this weekend.
I think my approach will work.

I made a fix that can possibly resolve the issue.
Try<EMAIL_ADDRESS>and report back.

Well, it built nicely now and looks like all the assets are there with correct paths in webpack-assets.json.
But now running the server complains about
[webpack-isomorphic-tools] [error] asset not found<EMAIL_ADDRESS>
messages multiple times and webpack-assets.json contains keys like<EMAIL_ADDRESS>Should the ~ mark be in assets.json? (and server integration should be able to handle it?) or should it be node_modules instead?
I'll post the full logs soon.

Yes, webpack-assets.json should contain ~ instead of node_modules.
Currently it does it like this:
	// webpack has a shortcut from "node_modules"
	if (starts_with(asset_path, './node_modules/'))
	{
		asset_path = asset_path.replace('./node_modules/', './~/')
	}

Seems that for peer projects a more sophisticated algorythm is required.

My current idea is that it could take the required path X and find all /node_modules/ occurrences in it.
Suppose it found N occurrences: [1, 2, ... , N].
Then it would be an array: [true, true, ... , true].
Then there are 2 to the power of N combinations giving different X -> Y paths which can be checked agains webpack-assets.json.
Since N is supposed to be small i guess this approach would be appropriate.
I think i'll implement it.
When does webpack replace node_modules with a ~? I don't know the rule. So the algorythm will guess.

Try the new version<EMAIL_ADDRESS>

You forgot to add this to a log call - https://github.com/halt-hammerzeit/webpack-isomorphic-tools/blob/2432ef3b828a5c2711d367edf29b41f7b8d261c1/source/index.js#L525
It works nicely now in development and almost in production mode.
For some reason it skips all css files - https://gist.github.com/msokk/12437db0e54abacaef8f

oops, added this to a log call in<EMAIL_ADDRESS>So, looking at the log you provided I can see that it's a log for development mode.
It doesn't find styles in development mode?

Hmm, if i set debug: true in config and run webpack build with isomorphic plugin in production mode (no 'development()), does the debug flag in configuration force it back to development?
How is it possible to see isomorphic tools output when testing production webpack build?

It should not.
Show me your webpack configuration.

https://gist.github.com/msokk/4b0ab6bdd9aaacf817c9#file-webpack-js-L170

Here it is I guess
https://gist.github.com/msokk/4b0ab6bdd9aaacf817c9#file-webpack-js-L132

That works, but I'm now trying to do a production build with NODE_ENV=production by running this set of configuration : https://gist.github.com/msokk/4b0ab6bdd9aaacf817c9#file-webpack-js-L139

That would fix the development mode.
And this is the answer for no styles in production
https://gist.github.com/msokk/4b0ab6bdd9aaacf817c9#file-webpack-js-L151
You'll have to include the styles file from the assets
https://github.com/halt-hammerzeit/webapp/blob/master/code/page-server/main.js#L53

That works, but I'm now trying to do a production build with NODE_ENV=production by running this set of configuration : https://gist.github.com/msokk/4b0ab6bdd9aaacf817c9#file-webpack-js-L139

I think javascript calls that .development() function regardless of what you return from this file

Heh, actually I noticed, that I didn't add any (S)CSS loaders to production webpack configuration -_-, production works now too.
Thanks and sorry for the confusion!

@msokk please don't delete gists that are referenced in issues - it makes it difficult for others (like me) who are encountering these issues to work out what people's solutions were - thanks ;-)

@cliffrowley Sorry! Those gists were mostly isomorphic tools debug output. The issue at hand got solved by the package update.
Eventually I still had to migrate away from webpack-isomorphic-tools. Our splitting up projects and using a shared webpack/redux server base made it too difficult to use.
So I ended up building a minimalistic version of webpack-isomorphic-tools :).
I haven't released it yet, but quickly pulled it into a Gist - https://gist.github.com/msokk/1b934685f25145db05b58305dadc5a3a
Should cover the most of the usecases, the biggest missing thing is webpack require context support.
Gist needs a bit digging into the code.
Most of the simplicity comes from preresolved absolute paths in Webpack and Node and Node VM module usage for pulling out CSS module variables.

I may end up migrating away myself, there's just too much magic going on with webpack and all the bits surrounding it - difficult to see what's going on sometimes..

FYI
I'm posting this in every issue and PR to notify whoever may be interested:
today I've released an alternative helper library called universal-webpack.
It takes a different approach than webpack-ismorphic-tools and instead of hacking Node.js require() calls it just compiles all code with target: 'node' webpack configuration option.
As a result, all Webpack plugins and features are supported.
If you think you might need that here's an example project:
https://github.com/halt-hammerzeit/webpack-react-redux-isomorphic-render-example


How to extract multiple relationships?

It works well when I extract binary relationships , such as （Target, Location) , (Target, Action) and (Target, Time). But how can I get multiple relationships from those binary relationships, for example (Target, Action, Location, Time)
Thanks in advance

It's improper to concatenate 3 binary relationship directly . Because there maybe the same target name in a sentence .

Thanks for your interests in our research!
There are several options to do multi-nary relation.
One option is to define the multi-nary relation directly, e.g., TargetActionLocationTime = candidate_subclass("TargetActionLocationTime", [Target, Action, Location, Time]). One thing you might need to take care is how to extract features for that.
Another way is to do binary relation first and combine them afterward. As you mentioned, there can be more than one the same mention in the sentence, but each one has its own stable_id which is unique. You should be able to stable_id to combine them. Check here for example.
Sen

Thank you , I'll give it a shot


/team force,alias,shuffle doesnt work.

This was fixed in e6348aab668df92bdc42e8fb328c312ac389d1b4. Please update

Nope, Isnt working

@ItzWid13 make sure to re-clone this repo so it has the most up to date version

i have to do /team alias [TEAM] [New]

yes


Add font-inter css files to exports

this PR adds the missing exports for css files of font-inter

I'm too late to the party.. already merged

@natew font-silkscreen might need to export ./css/400.css as well, it was affected by the same commit as font-inter https://github.com/tamagui/tamagui/commit/4e1b4f5748911d0b4727f4d423b5d8c7c8fa9bc8#diff-e0dddbf5df2cc3f79f612075812cf9c9c29e6e13a64cc5b9ea28e28e2f9f4e4d

Hey @natew  - trying to use font-silkscreen and the font is not exported.


why Int64-Negative?

Hello
I am reading ION Specs here http://tutorials.jenkov.com/iap-tools-java/ionwriter.html#writeint64-static and I have a question with Int64-Negative.
The definition says (from http://tutorials.jenkov.com/iap/ion-encoding.html):

The Int64 Negative field type can contain 0 to 8 bytes making up a max 64 bit unsigned number. The value stored in an Int64 Negative field is positive, but should be interpreted as a negative value. In other words, once you have extracted the positive value from the field, you should convert that value to its negative value using code similar to this:
value = -value;

I believe there are advantages in encoding long,int,short integers as they are defined in java including:

speed: since there is not translation of the value, it could be just converted to bytes.
there is not danger of unexpected overflows.
signed integers is what java understand, therefore applications are coded considering its limitations

Having a full 64 bit negative format add extra effort in doing conversions and checking boundaries. I am not saying it is a bad thing, just that it generates extra work. This extra conversion of a data type so important as long (and perhaps int and short) adds more processing time that could be critical in (realtime) applications as market trading clients and servers or databases or buses similar to tibco rendezvous that could be written using ION format, distributed caches, etc.
What do you think about replacing Int64-Negative and Int64-Positive with Int64 or adding an extra type Int64 representing signed integers? That will avoid all the issues I listed above.
Thanks for your work, specially in ION.

A negative 64 bit int always takes up 8 bytes if no clever encoding scheme is used. One of the goals of ION is to be compact on the wire. Using an IntNeg encoding -1 can be encoded using 2 bytes instead of 9 (1 lead byte + 8 bytes).
If you look at encodings like Protobuf and CBOR they also encode negative ints using non-native encodings. For instance, protobuf uses a zig zag encoding of ints. That is done to keep the number of bytes down on the wire for negative numbers.

By the way, if you have an array of ints you want to transfer and read fast, you can always just send the int array (bytes) inside an ION Bytes field. That is meant for any type of encodings that do not fit into the rest of the field types (e.g. MP3, MP4 etc.)

I see your point now. Yes, ION format is more compact than sending raw ints.
Thanks for the answer.
Pablo
On Sat, Aug 13, 2016 at 2:44 AM, Jakob Jenkov<EMAIL_ADDRESS>wrote:

By the way, if you have an array of ints you want to transfer and read
fast, you can always just send the int array (bytes) inside an ION Bytes
field. That is meant for any type of encodings that do not fit into the
rest of the field types (e.g. MP3, MP4 etc.)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jjenkov/iap-tools-java/issues/6#issuecomment-239612574,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAk_C8Gs4swP8l5PjauJmcB-g00S9n55ks5qfZHzgaJpZM4JeaaQ
.


Azure Eventhubs Sink - partition parameter

The partition parameter in Azure Eventhub Sink  in the last version is specified as:
The Kamelet checks for the `partition` / `ce-partition` header to determine how long an event remains in the Azure Storage queue. Use `PnDTnHnMn.nS.` format. For example, `PT20.345S` parses as 20.345 seconds and `P2D` parses as 2 days.
This is IMHO counterintuitive, as the partition_key and partition_id in the Azure Eventhub Camel component is used for different purpose.
Could the name of the parameter be improved to something more descriptive?
Also - could be used the partition parameter for specifying the partition to be used by the kamelet, as in the Azure Eventhub Camel component?

For the first question yes, we can name the parameter in a different way. For having partitionId as parameter of Kamelet, I don't agree totally, it's something that makes much more sense to have as dynamic parameter than fixed.


Dark mode

A simple toggle switch in the header or footer.

@flying-sheep Good point - that's a much better approach.

In the furo theme, it’s solved like this:

js: https://github.com/pradyunsg/furo/blob/9534e33cec40f5e004eb625285e1e902b8b8a752/src/furo/assets/scripts/furo.js#L84-L107
css: https://github.com/pradyunsg/furo/blob/9534e33cec40f5e004eb625285e1e902b8b8a752/src/furo/assets/styles/base/_theme.sass#L16-L38

@flying-sheep Thanks, I'll take a look!

Dark mode has been implemented in v0.3.0 - it's on PyPI.
@flying-sheep thanks for those links, they were useful. If you have any feedback on the new dark mode, let me know. 🙏

@flying-sheep Thanks!


Just completed a new fetch with v12 and now the paths for bestiary images look borked?

title: Goblin Commoner
 dev.ebullient.json5e.qute.ImageRef@1bcbf80a*
*Small humanoid(goblinoid), Any alignment*

Just completed a new fetch with v12 and now the paths for bestiary images looks borked? (now has " dev.ebullient.json5e.qute.ImageRef@1bcbf80a* instead of the image path?

C

oh! I should make another note!
If you're using a custom template, the token structure has changed. That's my fault, I should have done this compatibly.
Update your template to use something like this (instead of the single token string):
{#if resource.token}
![{resource.token.caption}]({resource.token.path}#token){/if}

Perfect thanks!
C
On Sun, 16 Oct 2022 at 20:38, Erin Schnabel @.***>
wrote:

oh! I should make another note!
If you're using a custom template, the token structure has changed. That's
my fault, I should have done this compatibly.
Update your template to use something like this (instead of the single
token string):
{#if resource.token}
{/if}
—
Reply to this email directly, view it on GitHub
https://github.com/ebullient/json5e-convert-cli/issues/22#issuecomment-1280039759,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABL7VCE3MTPTUKC55TNT3H3WDRKT5ANCNFSM6AAAAAARGMYOI4
.
You are receiving this because you authored the thread.Message ID:
@.***>


flutter-devicelab-mac-12 doctor failing

After bringing the bot out of quarantined the doctor is failing to find the getMacBinaryPath while it was quarantined I tried to install xcode tools via ssh with brew after failing to do that I deleted brew
https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-12

@Jasguerrero FYI, we maintain the devicelab bots via salt states. If there are failures that need actions not covered in the states they should be updated.

homebrew was missing/removed from the bot.

installed it.
Fixed brew links: brew list | xargs -I % sh -c 'brew unlink %; brew link %' .

applied salt states.
manually fixed some idevice* package installation that was corrupted.
bot is up and running.


Database Synchronization only Reading

I would like to be able to synchronize 2 databases. The second database is read-only, so there is no problem with conflicts.
What I want to achieve can be seen as a differential backup.
Right now the easier method I have is to copy and sync the entire database.
Implement a database's recorder that stores the changes and updates only those seem pretty time-consuming.
Any suggestion is appreciated! : )
Useful discussion: https://github.com/simolus3/moor/issues/136

Did you run into problems with the copy-and-sync files approach?
You could open two databases at once using ATTACH and then copy the data over using nothing but sql. It's unlikely that moor will have builtin support for that, but you can use moor to iterate over tables and build the sql. So you could open a transaction on the copy, delete everything from all tables and then use INSERT INTO SELECT to copy data over. If you want incremental changes, you could only delete rows that don't exist in the original database and then use INSERT OR REPLACE.

Thank you for the discussion, I think I need to give you more information:

The Database run on the Flutter App, it is updated regularly.

The first copy of the Database is encrypted by the App and stored on a storage only Server.

The second copy runs on another Flutter app with Moor, is read-only, and it downloads the encrypted copy and decrypts it.

So, I can encrypt and upload the file every time, it is shouldn't even become so heavy, but I would run it only once a day or so.
What I would like to accomplish is to create a differential backup, so it encrypt/upload/download only that part and can be run every several minutes.
I would like to avoid to compare 2 copies of the database every time that I want to update it.
What I thought to do was to create an empty copy of the DB, catch every event of the main DB, and insert into it the copy of the updated row after every change.
So, every time I want to sync I upload only this DB and then flush it. Then I use INSERT OR REPLACE on the other DB. To delete rows it needs an extra step like I could set everything to NULL in the row to let it know to delete it or create a table that store just two info like table_name and id_to_delete...
If this is the best way, there is a method to catch every change, after executing it, so I can get the table_name and id and create the entry in the second DB?

Your approach sounds like it could work. Moor doesn't have a builtin hook to get notified about statements before they are sent.
However, you could write a custom method to do this. This should work for all tables:
// Inside your database or dao
Future<int> insertForBackup<T extends Table, D extends DataClass>(
    TableInfo<T, D> table, Insertable<D> row) async {
  await super.into(table).insert(row);

  // Add to backup
}

And then use insertForBackup(table, row) insert of into(table).insert(row). You can use something similar for updates and deletes.

You could open two databases at once using ATTACH and then copy the data over using nothing but sql. It's unlikely that moor will have builtin support for that, but you can use moor to iterate over tables and build the sql. So you could open a transaction on the copy, delete everything from all tables and then use INSERT INTO SELECT to copy data over. If you want incremental changes, you could only delete rows that don't exist in the original database and then use INSERT OR REPLACE.

How can I open a second database, with the same tables, but empty?

Do you write data in your onCreate function? If not, you could just create another instance of your database class that uses a different database file. You can just call customQuery('SELECT 1;') on the second db to open it, which will automatically create all tables but leaves them empty.

Do you write data in your onCreate function? If not, you could just create another instance of your database class that uses a different database file. You can just call customQuery('SELECT 1;') on the second db to open it, which will automatically create all tables but leaves them empty.

It is not clear to me how to create multiple instances of the database.
I am using the same class, but passing now the name of the file in the constructor:
MyDatabase db = MyDatabase(databaseFileName)
But when I call it with the second fileName I get:
WARNING (moor): It looks like you've created the database classMyDatabase multiple times. When these two databases use the same QueryExecutor, race conditions will ocur and might corrupt the database.
Try to follow the advice at https://moor.simonbinder.eu/faq/#using-the-database or, if you know what you're doing, set moorRuntimeOptions.dontWarnAboutMultipleDatabases = true

There is not much information on the link and I don't know what I am doing if I set moorRuntimeOptions.dontWarnAboutMultipleDatabases = true

Your approach sounds like it could work. Moor doesn't have a builtin hook to get notified about statements before they are sent.
However, you could write a custom method to do this. This should work for all tables:
// Inside your database or dao
Future<int> insertForBackup<T extends Table, D extends DataClass>(
    TableInfo<T, D> table, Insertable<D> row) async {
  await super.into(table).insert(row);

  // Add to backup
}

And then use insertForBackup(table, row) insert of into(table).insert(row). You can use something similar for updates and deletes.

Not knowing better, I did:
  Future insertAllForBackup<T extends Table, D extends DataClass>(TableInfo<T, D> table, List<Insertable<D>> rows) async {
    for (final row in rows) {
      super.into(table).insert(row);
    }
    // Add to backup
  }
  Future deleteForBackup<T extends Table, D extends DataClass>(TableInfo<T, D> table, Insertable<D> row) {
    super.delete(table).delete(row);

    // Add to backup
  }

But I am not sure how to do a generic update with the Companion.
Also, an easy way to retrieve a column from an Insertable<D> row (I need the id)?

and I don't know what I am doing if I set  moorRuntimeOptions.dontWarnAboutMultipleDatabases = true

In earlier moor versions, I got many reports from users seeing that their tables didn't get created. It turned out that this problem happens when creating multiple database classes (on the same file), as that can break the migration. I added that warning to inform users that they probably want to only have one database class.
Having two database classes that point to different files is perfectly safe, so you can disable ignore that warning.

But I am not sure how to do a generic update with the Companion, there is a way to pass only fieldToChange: newValue?

You can use SomeTableCompanion(fieldToChange: Value(newValue)). This will update that column, all the others are left as they were before.

column from an Insertable row (I need the id)?

You can use table.mapFromCompanion() if the id is set on the companion. But if you want to delete a row by its id, you can just use
Future<void> deleteById<T extends Table, D extends DataClass>(
    TableInfo<T, D> table, int id) async {
  final idColumn = table.columnsByName['id'] as GeneratedIntColumn;
  await (delete(table)..where((tbl) => idColumn.equals(id))).go();

  // Add to backup
}

Hello @simolus3,
We are using Drift for a locale network database, which does not needs the internet.
For better security
At the end of the the day we backup database a new copy of database file to cloud.
Our database size is getting huge. like after a year database size is arround 10MB Now.
We need an approach to upload a new database file with

New Create Rows in tables
New Updated row
New Delete deleted row

So we can send couples of KB of the new database file to the server and marge it with the new database
can you please tell us how we can achieve this and which approach we can use?

There are a number of possible solutions that come to mind. For new and updated rows, you could have a column to describe their state (e.g. whether the row was created or modified since the last synchronization). For a synchronization, you could go through all tables and check those flags to see whether the row needs to be uploaded.
For deletes, you could have a new table where rows store the original table name and the primary key of deleted rows.
Alternatively, you could have a single "backlog" table storing all pending writes (so each row would be a tuple of the table, the primary key and a flag of what needs to be uploaded). Then you could define triggers to automatically insert into that table for each other write to the database perhaps.


README needs to be updated

In the README, the user is instructed to create an environment variable for the API key called "IN_API_TOKEN". The code checks for an environment variable called "IN_API_KEY". The README should be updated to display the correct environment variable name.
Usage examples could also be reformatted for readability.

done thanks @connorkendrick


Coloring by value on category maps is not generating the correct CartoCSS

when switching from ramp to categories.
It sounds to me that this was duplicated but I cannot find the other ticket

It should be working properly now, but not sure, do you remember @saleiva what was the problem? 💋

Let me close it for the moment and we find any other issue let's open a new one, love you guys.


bug(MatSort): Selection the header text in a column in the Firefox / Chrome etc. browsers generates an event.

Reproduction
Usage Firefox / Chrome browser (any or latest version on your platform OS).
Use StackBlitz to reproduce your issue: https://stackblitz.com/angular/onqyardnexv?file=src%2Fapp%2Ftable-sorting-example.ts
Steps to reproduce:

Select header text in the table

Expected Behavior
Only select text without generating event sort
Actual Behavior
Selection text in the header column generate event sort
Environment

Angular: 8.x, 9.x, 10.x
CDK/Material: 8.x, 9.x, 10.x
Browser(s): Firefox
Operating System: Windows 10 (32x, 64x), macOS (Catalina latest), Ubuntu 16.04 (64x amd64 architecture).

Because I usage angular-resizable-element module to resize the column, I have a problem with sorting. Sorting generates an event when I resize the column in Firefox.
To highlight the text in the header and resize, no sorting event should be generated.

All the sort header has is a single click listener that changes the sort direction. Since a click is defined by "pressing down and releasing over the same element", it means that if you were to start selecting text on the header and then release your pointer over it, it would trigger a click. I don't think that we can do anything about it, aside from disable text selection, but that wouldn't be desirable either.


Online public notice updates

As a licensee I want to be reminded of the public notice feature So That I don't forget to add or pass over the online public notice
As a licensee I want to have an option to not save the notice through FOM system So That I can submit the FOM successfully
Additional Context

Don't remove the 'Add Online Public Notice' button from the top. Leave it as it is.
https://www.figma.com/design/fTNiclvLcLFpmiSycmEz5q/FOM-Designs?node-id=216-59&t=1yifnbNMa9eD2sUp-4

Acceptance Criteria

[ ] On FOM Summary page: When the licensee clicks on the 'Add online Public Notice' button, Then the user is taken to the 'New Online Public Notice' page ('Add Online Public Notice' is a new section and new button - similar styling as 'FOM Spatial submission'
[ ] Online Public Notice section: When the user has not made any selection on the 'New Online Public Notice' page, Then show the error message - "Online Public Notice verification required" (Similar styling to 'FOM Spatial Submission'
[ ] New Online public notice page: Add radio selection field with two options -
1 - 'Add information and directly publish it to the public website'  (add link to the public website that opens in a new page) - This option is selected by default for the user
2 - 'Mandatory online notice is published on a different website'
[ ] New Online Public Notice page: When the user is on the page, 'Add information and directly publish it to the public website' should be selected by default. The rest of the form will behave how it does currently
[ ] New Online Public Notice page: When the user changes the selection to 'Mandatory online notice is published on a different website', Then change the rest of the form and show only one text area field - 'Add public notice site URL (optional)'
[ ] Publish FOM when the public notice is not added: When the user clicks on 'Publish', Then add the warning message " Online Public Notice verification is required before "Publish" is pushed "

Definition of Done - Edit this as per the requirement

[ ] Ready to Demo in Sprint Review
[ ] New workflow is approved by the business area (in test environment)
[ ] Does what I have made have appropriate test coverage?
[ ] Documentation and/or scientific documentation exists and can be found
[ ] Peer Reviewed by 2 people on the team
[ ] Manual testing of all PRs in Dev and Prod
[ ] Merged

Hi @Kghiya , if possible, could you add few screenshot/mockup or link to the mockup? Thank you very much Kajo!

Hi @Kghiya , if possible, could you add few screenshot/mockup or link to the mockup? Thank you very much Kajo!

Sorry @Kghiya , my bad I didn't notice you already included a link. Thanks!


Lebowski does not work with rspec 2.6.0

I am trying to use Lebowski in a project that requires rspec 2.6.0+. Bundler cannot install Lebowski in my project due to the requirement that Lebowski rspec (~> 2.5.0). I can hack my way around that, but I would love to use Lebowski's rspec integration.
Any plans to get this updated to work with rspec 2.6 any time soon?

Yep, I'll update Lebowski to work with rspec 2.6 and up. Thanks for the notice :)


Failed to connect to the D-BUS session bus

how to fix this error on arch wsl ??
it appears that ubutnu18.04 doesn't has this error
sometimes i face crash in arch wsl especially when i use text editor like gedit (on closing it ,,sometimes not always ) ,,, i use x410 server ,, i reported this issue to x410 developers ,,, they helped me with a commad to prevent this crash ,,,, when i used it in ubuntu it worked fine ,,,
but on arch it doesn't work at all and i get failed to connect to dbus
plz help me fix this
https://token2shell.com/howto/x410/customizing-xfce-desktop-for-ubuntu-wsl/
here ,,they provided a fix for crash ,,but it doesn't work on arch_wsl with me ,,,but works with ubuntu1804

~/.bashrc
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1

export $(dbus-launch) # <----- that's the key here!


Crash when closing window

Hi,
I have recently started using this plugin and for most of the time it's working great, but quite
regulary I hit this crash:
stack traceback:
^I...ocal\nvim-data\site\pack\paqs\start\nvim-fzf/lua/fzf.lua:30: in function 'get_lines_from_file'
^I...ocal\nvim-data\site\pack\paqs\start\nvim-fzf/lua/fzf.lua:143: in function 'cleanup'
^I...ocal\nvim-data\site\pack\paqs\start\nvim-fzf/lua/fzf.lua:226: in function <...ocal\nvim-data\site\pack\paqs\start\nvim-fzf/lua/fzf.lua:225>
...ocal\nvim-data\site\pack\paqs\start\nvim-fzf/lua/fzf.lua:30: attempt to index local 'file' (a nil value)

I don't use any other plugin and my usage looks like the following:
function FzfCmds.files()
  local command = 'fd'
	local opts = '--ansi'

	coroutine.wrap(function()
		local results = fzf(command, opts)
		if not results then return end
    local file = vim.fn.fnameescape(results[1])
		vim.cmd('e ' .. file)
	end)()
end

I'm running NVIM v0.8.0-1210-gd367ed9b2 on Windows 10 in Windows Terminal.

Weird... are you doing anything particular when you experience the bug? I can't seem to reproduce and an inspection of the code doesn't reveal anything obvious. More details will help.


GPU Profiler support

This would be fantastic.  Specifically for NVidia class GPUs.

I assume you are running C++ code? VS does support GPU profiling. You can attach to any process running native code. If this does not work with gcc-produced binaries, you may want to file feedback with C++ team via standard VS Send Feedback feature.

Closing since this is not about R and rather about native code.


txt2image: cleanup & adjustments to batch-size 1 unet, and hetero sample

Basically, a follow on PR to this one (https://github.com/openvinotoolkit/openvino.genai/pull/1101) that addresses review comments / suggestions.

build_jenkins

Please, port to master branch manually


Develop

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

20 of 22 (90.91%)  changed or added relevant lines in 8 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.1%) to 60.902%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

aws_message/gather.py
0
1
0.0%

aws_message/mock_sqs.py
0
1
0.0%

Totals

Change from base Build 807208535:
1.1%

Covered Lines:
284

Relevant Lines:
442

💛  - Coveralls


Add the scripts for the modal

⚡ Features include:

When the user clicks (or taps) the hamburger button, the mobile menu appears.
When the user clicks (or taps) the close (X) button, the mobile menu disappears.
When the user clicks (or taps) any of the mobile menu options, the mobile menu disappears.
When the user clicks (or taps) any of the mobile menu options, a correct part of the page is displayed.

@levy002 , Thank you for the point you raised. But as he advised, I changed the height from 95vh to 100vh. Are you suggesting i increase it from 100 to something more??


build: add pr check

PR 类型

[ ] 新 feature
[ ] Bug 修复
[ ] 功能增强
[ ] 文档变更
[ ] 代码样式变更
[ ] 重构
[ ] 性能改进
[ ] 单元测试
[x] CI/CD
[ ] 其他

PR 目的

解决方案

PR 测试

Changelog

模块
Changelog
Related issues

其他信息

提交前确认

[ ] PR 代码经过了完整测试，并且通过了代码规范检查
[ ] 已经完整填写 Changelog，并链接到了相关 issues
[ ] PR 代码将要提交到 dev 分支

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Add date_format to the demo site

This issue requires HTML. The code will go in index.php, but you do not need to know PHP for adding this.
Is your feature request related to a problem? Please describe.
The demo site does not currently have a field for customizing the date format
Describe the solution you'd like
Add a text input field for the user to enter one
Additional context
The default value is M j[, Y]
Please see Date Formats in the readme for more details about how it works.
Optional: include a tooltip or link where users can read more info on how to use the property.

I can work on this issue! Just clarifying, would this require a text input field or a dropdown menu for the different options that are mentioned in the README?

@lucid-dreem I was originally thinking a text input since it can be customized to anything that can be done with PHP date format characters.
It might be an easier user experience to give them a few common options to choose from, though.
I think I can leave it up to you to decide.


BUG: RecursionError: maximum recursion depth exceeded while calling a Python object

Description
Getting recursion depth exceeded with what I believe is coming from gluon calling get_batch (see stack trace "[Previous line repeated 964 more times]").
To Reproduce
This is an issue with the way the forcast_generator unpacks the batch. Only happens after calling model.predict several times and iterating through the returned generator.
This example isn't totally complete because you have to provide your own model, sorry.
import random
import numpy as np
import pandas as pd
from gluonts.torch import PyTorchPredictor
from gluonts.dataset.common import ListDataset, DataEntry
from gluonts.torch import TemporalFusionTransformerEstimator

estimator = TemporalFusionTransformerEstimator(
freq='S',
context_length=10,
prediction_length=5,
trainer_kwargs={'max_epochs': 5}
)
train = ListDataset([{'target': np.array([random.uniform(-1, 1) for _ in range(50)]), 'start': pd.Period('01-01-2023', freq='S')} for _ in range(20)], freq='S')

pred = ListDataset([{'target': np.array([random.uniform(-1, 1) for _ in range(50)]), 'start': pd.Period('01-01-2023', freq='S')} for _ in range(20)], freq='S')
model = estimator.train(train, pred)

x, y, z = np.array([x for x in range(10)]), np.array([y for y in range (10)]), np.array([z for z in range(10)]) #for example
start = pd.Period('01-01-2023', freq='S')
_input = ListDataset([{'target': x, 'start': start},
                          {'target': y, 'start': start},
                          {'target': z, 'start': start}], freq='S')
for i in range(5000):
    pred = model.predict(_input)
    output = [sig.mean for sig in pred]  #this calls on a generator which causes the recursion error

Error message or code output
Exception in thread Controller:
Traceback (most recent call last):
  File "threading.py", line 980, in _bootstrap_inner
  File "project/event_loop.py", line 89, in run
  File "_project/_controller.py", line 54, in recv_msg
  File "project/controller.py", line 180, in recv_msg
  File "project/controller.py", line 320, in __predict_future_path
  File "project/predictor/periodic/predictor.py", line 38, in predict
    x, y, z = self.postprocess()
  File "project/predictor/periodic/predictor.py", line 87, in postprocess
    self.pred = [sig.mean_ts.to_numpy() for sig in self.pred] #type: ignore
  File "project/predictor/periodic/predictor.py", line 87, in <listcomp>
    self.pred = [sig.mean_ts.to_numpy() for sig in self.pred] #type: ignore
  File "gluonts/torch/model/predictor.py", line 89, in predict
  File "gluonts/model/forecast_generator.py", line 154, in __call__
  File "gluonts/transform/_base.py", line 111, in __iter__
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/dataset/loader.py", line 50, in __call__
  File "gluonts/itertools.py", line 125, in get_batch
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/transform/_base.py", line 132, in __call__
  [Previous line repeated 964 more times]
  File "gluonts/transform/_base.py", line 186, in __call__
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/transform/_base.py", line 132, in __call__
  File "gluonts/transform/_base.py", line 136, in __call__
  File "gluonts/transform/_base.py", line 134, in __call__
  File "gluonts/transform/feature.py", line 367, in map_transform
  File "gluonts/transform/feature.py", line 367, in <listcomp>
  File "gluonts/time_feature/_base.py", line 30, in second_of_minute
  File "pandas/core/indexes/extension.py", line 77, in fget
  File "pandas/core/indexes/base.py", line 551, in __new__
  File "pandas/core/construction.py", line 527, in sanitize_array
  File "pandas/core/construction.py", line 441, in extract_array
  File "pandas/core/dtypes/generic.py", line 44, in _instancecheck
  File "pandas/core/dtypes/generic.py", line 38, in _check
RecursionError: maximum recursion depth exceeded while calling a Python object

Environment

Operating system: WSL 2 - Ubuntu 20.04
Python version: 3.9.16
GluonTS version: 0.13.2
MXNet version: N/A
pandas version: 2.0.3

(Add as much information about your environment as possible, e.g. dependencies versions.)
I'm using the cpu based environment; no CUDA.

Can reproduce. Further reduced example to:
import numpy as np
import pandas as pd
from gluonts.torch import TemporalFusionTransformerEstimator

freq = "H"

estimator = TemporalFusionTransformerEstimator(
    freq=freq,
    context_length=10,
    prediction_length=5,
    num_batches_per_epoch=2,
    trainer_kwargs={"max_epochs": 1},
)

train = [
    {
        "target": np.random.random(size=(50,)),
        "start": pd.Period("01-01-2023", freq=freq),
    }
    for _ in range(20)
]

model = estimator.train(train)

pred = [
    {"target": np.arange(10), "start": pd.Period("01-01-2023", freq=freq)},
    {"target": np.arange(10), "start": pd.Period("01-01-2023", freq=freq)},
    {"target": np.arange(10), "start": pd.Period("01-01-2023", freq=freq)},
]

for i in range(5000):
    forecasts = model.predict(pred)
    list(forecasts)

Fixed in #2951, will be released shortly


DEC-624: Speedup item list

Why: Navigating through items for large collections is extremely slow, and the browser fails to load most images due to OOM.
How: Refactored item list to use the search API instead of loading all data on the client into datatables. This has caused an enormous speedup, ex: A collection of 10k items previously took 2+ minutes to load, and now loads in fractions of a second. A few additional fixes to the search API came out of this that we were not previously aware of:

Sorting now works correctly for alpha numerics.
We are now able to provide a search direction (asc/desc) in a similar syntax to solr, ex: "sort=name desc"
Can now sort by last updated time (updated_at) in addition to the collections configured metadata fields.

Please pull this branch down and thoroughly test searching, paging, and sorting while under different throttling presets (including no connection)

Coverage decreased (-0.005%) to 96.148% when pulling 04035b305b479087ff73f0392e1ac496ad099353 on DEC-624-Speedup-item-list into 17bc47be7e00b7f4a751d49955b2a49d73e27b69 on master.

Coverage decreased (-0.005%) to 96.148% when pulling 8eab675c93b2fe9bb4b7ce97d321857d829c72b9 on DEC-624-Speedup-item-list into 17bc47be7e00b7f4a751d49955b2a49d73e27b69 on master.

Before this gets merged, there's a usability issue I'd like to see get addressed. The right and left navigation buttons for navigation look like they will take the user to the next page but they navigate to the beginning or end of the entire list respectively. I'm not sure if there are style guidelines for this. What I've typically seen for that type of navigation is a double arrow, and arrow with a line, or just the text "first" or "last".

@rfox2 Fixed the first/last page icons. Those were based on the Beehive pagination, so we should probably change them there too.

Coverage decreased (-0.005%) to 96.148% when pulling 4358381d880dffb66349abbfc6c2a1d878e821cd on DEC-624-Speedup-item-list into 17bc47be7e00b7f4a751d49955b2a49d73e27b69 on master.

👍

👍


0px padding-left for sidebar menu items

There is no padding-left for sidebar menu items. This is more aparent when you select one. The text is all the way to the left.

Looks like we just need to change padding-left from 0px to say 10px or maybe more:

Issue is resolved.


Difference between weighted accuracy metric of Keras and Sklearn

Intro
Hej everyone,
I am working on my diploma thesis and I face a binary classification problem with imbalanced class contribution. I have around 10 times more negative ("0") labels as positive ("1") labels. For that reason I considered not only observing accuracy and ROC-AUC, but also weighted/ balanced accuracy and Precision-Recall-AUC.
Issue description
During some calculations on the validation set in a custom callback I noticed, more or less by coincidence, that the weighted accuracy is always different from my results using sklearn.metrics.accuracy_score().
Using Keras, weighted accuracy has to be declared in model.compile() and is a key in the logs{} dictionary after every epoch (and is also written to the log file by the CSVLogger callback or to the history object) or is returned as value in a list by model.evaluate(),
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'],
              weighted_metrics=['accuracy'])

I calculate the val_sample_weights vector based on the class contribution of the training set with the Sklearn.metrics function class_weight.compute_sample_weight() and with the help of class_weight.compute_class_weight().
cls_weights = class_weight.compute_class_weight('balanced', np.unique(y_train._values),
                                                y_train._values)
cls_weight_dict = {0: cls_weights[0], 1: cls_weights[1]}
val_sample_weights = class_weight.compute_sample_weight(cls_weight_dict, y_test._values)

In model.fit() I pass this vector togehter with the validation data and to sklearn.metrics.accuracy_score() I pass it to the parameter name  sample_weight to compare the results on the same basis.
model_output = model.fit(x_train, y_train, epochs=500, batch_size=32, verbose=1,
                         validation_data=(x_test, y_test, val_sample_weights))

Furthermore I derived the equation how Sklearn computes the weighted accuracy from several easy examples and it seems that it's computed by the following equation, which seems quite reasonable to me:

TP, TN, FP and FN are the values reported in the confusion matrix and w_p and w_n are the class weights of the positive and negative class respectively.
An easy example to test it can be found here:
towardsdatascience.com/k-as-in-keras-simple-classification-model-a9d2d23d5b5a
Just for the sake of completeness, sklearn.metrics.accuracy_score(..., sample_weight=) returns the same result as sklearn.metrics.balanced_accuracy_score().
System Information

GeForce RTX 2080 Ti
Keras 2.2.4
Tensorflow-gpu 1.13.1
Sklearn 0.19.2
Python 3.6.8
CUDA Version 10.0.130

Code example
I searched an easy example to make the issue easy to reproduce, even if the class imbalance here is weaker (1:2 not 1:10). It's based on the introductory tutorial to Keras which can be found here:
https://towardsdatascience.com/k-as-in-keras-simple-classification-model-a9d2d23d5b5a
The Pima Indianas onset diabets dataset will be downloaded, as done in the link above, from the repository of Jason Brownlee, the maker of the homepage Machine Learning Mastery. But I guess it can also be downloaded from various other sites.
So finally here's the code:
from keras.layers import Dense, Dropout
from keras.models import Sequential
from keras.regularizers import l2
import pandas as pd
import numpy as np
from sklearn.utils import class_weight
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

file = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/' \
       'pima-indians-diabetes.data.csv'

# Load csv data from file to data using pandas
data = pd.read_csv(file, names=['pregnancies', 'glucose', 'diastolic', 'triceps', 'insulin',
                                'bmi', 'dpf', 'age', 'diabetes'])

# Process data
data.head()
x = data.drop(columns=['diabetes'])
y = data['diabetes']

# Split into train and test
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=0)

# define a sequential model
model = Sequential()
# 1st hidden layer
model.add(Dense(100, activation='relu', input_dim=8, kernel_regularizer=l2(0.01)))
model.add(Dropout(0.3))
# 2nd hidden layer
model.add(Dense(100, activation='relu', kernel_regularizer=l2(0.01)))
model.add(Dropout(0.3))
# Output layer
model.add(Dense(1, activation='sigmoid'))
# Compilation with weighted metrics
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'],
                         weighted_metrics=['accuracy'])

# Calculate validation _sample_weights_ based on the class distribution of train labels and
# apply it to test labels using Sklearn
cls_weights = class_weight.compute_class_weight('balanced', np.unique(y_train._values),
                                                y_train._values)
cls_weight_dict = {0: cls_weights[0], 1: cls_weights[1]}
val_sample_weights = class_weight.compute_sample_weight(cls_weight_dict, y_test._values)

# Train model
model_output = model.fit(x_train, y_train, epochs=500, batch_size=32, verbose=1,
                         validation_data=(x_test, y_test, val_sample_weights))

# Predict model
y_pred = model.predict(x_test, batch_size=32, verbose=1)

# Classify predictions based on threshold at 0.5
y_pred_binary = (y_pred > 0.5) * 1

# Sklearn metrics
sklearn_accuracy = accuracy_score(y_test, y_pred_binary)
sklearn_weighted_accuracy = accuracy_score(y_test, y_pred_binary,
                                           sample_weight=val_sample_weights)

# metric_list has 3 entries: [0] val_loss weighted by val_sample_weights, [1] val_accuracy
# [2] val_weighted_accuracy
metric_list = model.evaluate(x_test, y_test, batch_size=32, verbose=1,
                             sample_weight=val_sample_weights)

print('sklearn_accuracy=%.3f' %sklearn_accuracy)
print('sklearn_weighted_accuracy=%.3f' %sklearn_weighted_accuracy)
print('keras_evaluate_accuracy=%.3f' %metric_list[1])
print('keras_evaluate_weighted_accuracy=%.3f' %metric_list[2])

Results and summary
For example I get:
sklearn_accuracy=0.792
sklearn_weighted_accuracy=0.718
keras_evaluate_accuracy=0.792
keras_evaluate_weighted_accuracy=0.712
The "unweighted" accuracy value is the same, both for Sklearn as for Keras. The difference isn't really big, but it grows bigger as the dataset becomes more imbalanced. For example for my task it always differs around 5% from each other!
Maybe I'm missing something and it's supposed to be like that, but anyways it's confusing that Keras and Sklearn provide different values, especially thinking of the whole class_weights and sample_class_weights thing as a topic hard to get into.

A similar problem came up for me. After digging in some code it appears like the function in weighted_masked_objective() seems to be indifferent to zeros. I could be totally wrong though. Would be nice to know the real reason and thanks for the thorough discription.

Are there any updates on this?

any update ?


abb_robot_driver_interfaces: 0.5.3-1 in 'kinetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository abb_robot_driver_interfaces to 0.5.3-1:

upstream repository: https://github.com/ros-industrial/abb_robot_driver_interfaces.git
release repository: https://github.com/ros-industrial-release/abb_robot_driver_interfaces-release.git
distro file: kinetic/distribution.yaml
bloom version: 0.10.3
previous version for package: 0.5.2-1

abb_egm_msgs
* Lower minimum required CMake version to solve build error on Kinetic (#14 <https://github.com/ros-industrial/abb_robot_driver_interfaces/issues/14>)
* Contributors: gavanderhoorn

abb_rapid_msgs
* Lower minimum required CMake version to solve build error on Kinetic (#14 <https://github.com/ros-industrial/abb_robot_driver_interfaces/issues/14>)
* Contributors: gavanderhoorn

abb_rapid_sm_addin_msgs
* Lower minimum required CMake version to solve build error on Kinetic (#14 <https://github.com/ros-industrial/abb_robot_driver_interfaces/issues/14>)
* Contributors: gavanderhoorn

abb_robot_msgs
* Lower minimum required CMake version to solve build error on Kinetic (#14 <https://github.com/ros-industrial/abb_robot_driver_interfaces/issues/14>)
* Contributors: gavanderhoorn

@tfoote: this should fix the failing builds on Kinetic.

I’ll let @tfoote handle this one.

Thanks for the fixup. I'll merge this since there's no risk of regression.


x/tools/gopls: make -remote=auto resilient to changing TMPDIR

Recently, each neovim/coc.nvim process has started assigning a unique $TMPDIR (e.g. /tmp/nvimPuWNII).  This breaks the current daemon discovery (when using -remote=auto), which looks for a deterministic unix domain socket path inside os.TempDir().
We should either make -remote=auto behave independently of os.TempDir(), or (more feasibly) provide the means to work-around it without having to manage the daemon manually.  Something like -remote.tempdir=/tmp, though I may have to rethink the way that the remote is parameterized, as we already have a lot of -remote.* flags.
Reported here: https://groups.google.com/g/golang-tools/c/y3OQNIudLzQ/m/7JYRgEZSAgAJ

I think using XDG_RUNTIME_DIR was the correct fix, so I'll mark this closed.


Add install instructions for Antigen and Zen

Add install instructions for the Antigen and Zgen frameworks.

Thank you @unixorn 🙇
Would you say it’s fair to call this a Zsh repo instead of just an Oh My Zsh repo? (I might change the h1 on the README to reflect that).

Either that or say it's oh-my-zsh compatible.


In a unit test remove some setTimeFor calls as in expectBlock it is already set

…k height

Mind the ~gap~ commit message length btw. If it's got the ellipsis ... then it usually means it's too long.

The description of PRs should have a proper explanation about the PRs including "Part of #xxx" or "Fixes #xxx".


Update deploy-vulnerability-assessment-vm.md

Aligning RHEL versions support from https://success.qualys.com/support/s/article/000006675

@bmansheim
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

#sign-off


[#25] [Chore] Update readme with library description and usage instru…

closes #25
What happened 👀

updated README.md with Usage section

Proof Of Work 📹

@ryan-conway any thoughts on adding a GIF of the sample app hiding the sensitive info on the passport?

@ryan-conway @AVI5HEK I'm thinking should we add the Reference section to include these lib 👇

May be just explain why we need to integrate or apply from this lib. What do you think?  cc @thiennguyen0196

One more thing, I think it would be great If we leave some screenshot example 🤔

We can add this on top of the README
[![](https://jitpack.io/v/nimblehq/alpine.svg)](https://jitpack.io/#nimblehq/alpine)

@ryan-conway any update on this PR?


match up switch name and mac

Codecov Report

Merging #432 into master will increase coverage by 0.04%.
The diff coverage is 65.21%.

@@            Coverage Diff             @@
##           master     #432      +/-   ##
==========================================
+ Coverage   97.11%   97.16%   +0.04%
==========================================
  Files          33       33
  Lines        2047     2047
  Branches      152      152
==========================================
+ Hits         1988     1989       +1
  Misses         35       35
+ Partials       24       23       -1

Impacted Files
Coverage Δ

...hBoundControllerAbstraction/proxy/faucet/parser.py
84.72% <65.21%> (+1.38%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8c156fd...2b2bdf3. Read the comment docs.


FR: support dynamic CIBW_PRERELEASE_PYTHON and CIBW_FREETHREADED_SUPPORT in publish.yml

Rationale:
cibuildwheel itself allows the following combination of env vars
CIBW_BUILD="cp312-* cp313-*"
CIBW_PRERELEASE_PYTHONS="false"

which results in only cp312 wheels being built (since CPython 3.13 is at pre-release stage)
However, if I use OpenAstronomy/github-actions-workflows/.github/workflows/publish.yml@v1, I need to specify targets explicitly as, for instance:
targets: |
  - cp312-manylinux_x86_64
  - cp313-manylinux_x86_64
  - ...

which, if I also set CIBW_PRERELEASE_PYTHONS="false", results in the following error
cibuildwheel: No build identifiers selected: BuildSelector(build_config='cp313-manylinux_x86_64', skip_config='', requires_python=<SpecifierSet('>=3.10')>, prerelease_pythons=False, free_threaded_support=False)

This is important in case we want to set CIBW_PRERELEASE_PYTHONS dynamically, as for instance in https://github.com/astropy/astropy/pull/16596
A possible workaround is to use wildcards when specifying targets, e.g.,
targets: |
  - cp312-*
  - cp313-*

but then jobs take much longer in wall time since you lose parallelism.
It seems possible to support this use case by updating target discovery so it's aware of these env vars (CIBW_PRERELEASE_PYTHON and CIBW_FREETHREADED_SUPPORT) and can dynamically skip any matching wheels as needed. However I see one difficulty to discuss/overcome
The list of versions to be ignored if CIBW_PRERELEASE_PYTHON!="true" depends on cibuildwheel's version (and indirectly on calendar), so supporting this would also require keeping the list in sync with cibuildwheel. To minimize impact of potential errors, we could choose to keep the current behavior in case CIBW_PRERELEASE_PYTHON isn't defined at all.
I'm happy to contribute a patch if this is desirable, once the matter is discussed.
Conversation originated at https://github.com/astropy/astropy/pull/16596#discussion_r1649798115

The easiest solution would be to pass the --allow-empty argument to cibuildwheel to prevent the error, however that's not possible with their GitHub Action. I've opened https://github.com/pypa/cibuildwheel/issues/1922 to see if a CIBW_ALLOW_EMPTY env var could be added, and then you could also set that when you set CIBW_PRERELEASE_PYTHONS="true".

@ConorMacBride Your patch was just released as part of https://github.com/pypa/cibuildwheel/releases/tag/v2.20.0, so I think this can be closed now. Thank you !


feat(write): add tags support to write interactions on warp-contract and saveObservations

Codecov Report
Attention: Patch coverage is 0% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 78.80%. Comparing base (c96e741) to head (69e250b).

Files
Patch %
Lines

src/common/contracts/warp-contract.ts
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##            alpha     #111      +/-   ##
==========================================
- Coverage   78.93%   78.80%   -0.13%
==========================================
  Files          22       22
  Lines         636      637       +1
  Branches      120      118       -2
==========================================
  Hits          502      502
- Misses        129      135       +6
+ Partials        5        0       -5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

this looks good so far, you'll need to allow tags on the API write interactions as well

:tada: This PR is included in version 1.1.0-alpha.2 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[BUG] Links get carried over to following stories

Describe the bug
Once a story is published with a link, the same link is then repeated on the following stories, even if no StoryLink is given to the video_upload_to_story method.
To Reproduce
from instagrapi.story import StoryBuilder
from pathlib import Path
from instagrapi import Client
from instagrapi.types import StoryLink

client = Client()
client.login("user", "password")

path = Path("picture.jpg")
link = StoryLink(webUri="http://website.com")

story = StoryBuilder(path).photo(5)

client.video_upload_to_story(story.path, links=[link])

client.video_upload_to_story(story.path)  # This story still gets published with the same link

Desktop (please complete the following information):

OS: Windows 10
Python version 3.10
instagrapi version 1.16.14
moveipy version 1.0.3
imagemagick version <IP_ADDRESS>

Additional context
Looking at the debug information I found out that the link sticker that is stored in stickers is then carried over in the video_upload_to_story method even if no stickers list is passed as argument.
To confirm this, the workaround I'm currently using is to force stickers to be empty when calling the method, like so:
client.video_upload_to_story(story.path, stickers=[])

I'm hosting an API using Flask on Heroku and I'm facing the same problem