Updated 2018 guidelines

@apache8080 are we not renaming the folders? One way to get around this is to just put all the info in one file. The problem with having folders is that it has the issue of dividing the event.

Just renamed them. I forgot about doing that on my previous commit.

@apache8080 Devpost does not exist, @redsn0w422 will create soon, update the link once it's made

So we can put it all in one file, but I don't know how to link to specific headings in markdown. Do you know how to do that?

@apache8080 https://gist.github.com/asabaylus/3071099

One page now.


/ccf/v1/forms 403 rest_forbidden

Not logged user cannot get /ccf/v1/forms nor /ccf/v1/forms/$id even if "Require User to Be Logged In" is set to "no".

what is /ccf/v1/forms ?

ahh, sorry. This should be open here: https://github.com/tlovett1/custom-contact-forms. Sorry for the mistake.


probleme with add "slect2" and  "select2-bootstrap3-css" source from github directly?

I try add select2 and select2-bootstrap3-css source from github directly
app/client/lib/
   select2.min.css
   select2.min.js
app/client/css
   select2-bootstrap3.css

But not work.

Closing old issues


Add footprint helpers

Codecov Report

Merging #110 (88a47b8) into main (7ddad3c) will increase coverage by 0.26%.
The diff coverage is 90.90%.

@@            Coverage Diff             @@
##             main     #110      +/-   ##
==========================================
+ Coverage   96.21%   96.47%   +0.26%
==========================================
  Files          12       12
  Lines         951      993      +42
  Branches      124      108      -16
==========================================
+ Hits          915      958      +43
+ Misses         20       19       -1
  Partials       16       16

Impacted Files
Coverage Δ

xarray_sentinel/__init__.py
100.00% <ø> (ø)

xarray_sentinel/sentinel1.py
94.81% <82.60%> (+0.49%)
:arrow_up:

tests/test_20_sentinel1.py
100.00% <100.00%> (ø)

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 7ddad3c...88a47b8. Read the comment docs.


update changelog

Signed-off-by: ycyaoxdu<EMAIL_ADDRESS>

/assign @qiujian16

should we change version.txt also?

I would call it 0.4.0

/approve
/lgtm


Override faux-bolding for headings

Prevents User Agent Stylesheet from faux-bolding the h1 font.

Looks nice. Thank you!


[feature] Terrible mod.

If you just added nano armor that would be balanced - it would be the best mod, but now I see useless items, and nano armor that has no protection at all. Please fix it.

I've checked and I think it's probably a display bug.


Discord Overlay not working

Hi,
When launching GW2 from Launchbuddy, the Discord Overlay is not working so you can no longer see who are currently in your voice channel.
Kind regards,
TvL2386

I got the same problem. Is it possible to use other overlays with lb?


Bump yosys and prjxray versions

Bump prjxray to get https://github.com/f4pga/prjxray/pull/2118 changes to support Ubuntu 22.
Bump yosys to get https://github.com/YosysHQ/yosys/pull/3709 to support Vivado 2022.2.

@kgugala (sorry not sure who to tag to get this pushed through)  Thanks!

LGTM


EVL-3 disconnects and re-connects, usually every couple hours

Hi,
If someone could help me with this, I'd really appreciate it.  I am running the EVL-3 and I am noticing in the logs disconnects and re-connects.  I had the same problem a couple years ago using the built in Envisalink integration and even went as far as going to Envisalink and having them look at the Wireshark logs. No issues with the hardware were detected.  Also, I have used the same EVL-3 for many years on Smartthings and it stays connected for years at a time.  Obviously I'd like to get this working with HA, but I am at a loss for what is causing this to occur, even with the newer Envisalink update.  I am running this on a Raspberry Pi3 using HA supervised.
I have the keep-alive set for 60 and the connection timeout for 10.  Below is a sample log (there are many other that are the same):
2024-11-24 09:48:28.893 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.alarm_panel] Unable to connect to 192.168.XX.XX; it is likely that another client is already connected
2024-11-24 09:48:29.180 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Caught unexpected exception: ConnectionResetError(104, 'Connection reset by peer')
2024-11-24 09:48:29.182 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Exception while closing connection: [Errno 104] Connection reset by peer
2024-11-24 09:48:29.183 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Reconnection attempt in 30s
2024-11-24 09:48:34.500 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Caught unexpected exception: ConnectionResetError(104, 'Connection reset by peer')
2024-11-24 09:48:34.500 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Exception while closing connection: [Errno 104] Connection reset by peer
2024-11-24 09:48:34.501 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Reconnection attempt in 30s
2024-11-24 09:48:44.882 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Caught unexpected exception: ConnectionResetError(104, 'Connection reset by peer')
2024-11-24 09:48:44.882 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Exception while closing connection: [Errno 104] Connection reset by peer
2024-11-24 09:48:44.882 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Reconnection attempt in 30s
2024-11-24 09:49:05.293 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Caught unexpected exception: ConnectionResetError(104, 'Connection reset by peer')
2024-11-24 09:49:05.294 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Exception while closing connection: [Errno 104] Connection reset by peer
2024-11-24 09:49:05.294 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Reconnection attempt in 30s
2024-11-24 09:49:45.837 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Caught unexpected exception: ConnectionResetError(104, 'Connection reset by peer')
2024-11-24 09:49:45.838 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Exception while closing connection: [Errno 104] Connection reset by peer
2024-11-24 09:49:45.838 ERROR (MainThread) [custom_components.envisalink_new.pyenvisalink.envisalink_base_client] Reconnection attempt in 30s

Do you still have this EVL3 connected to your Smartthings setup?  If so, that is likely the problem.  The EVL devices will only allow a single connection to them at a time (a limitation of the devices themselves).  So you'd have to disable/disconnect the Smartthings setup in order for either this integration or the stock HA envisalink to work.  If you need both HA and Smarthings connected to it, you'd have to look into something like AlarmServer to proxy the connections (I don't have any firsthand experience with it but know others have used it).

Yes, I do (have the EVL-3 connected to Smartthings.)  I am trying to figure out how to temporarily change the IP address of the EVL-3 with Smartthings so that it doesn't keep trying to login.  Once I do this, I'll give this another go.
With that said, you think that even though your integration is logged into the EVL-3 via HA that somehow the Smartthings integration would be causing the disconnect?  Smartthings is not logging back into the EVL-3 while I am running HA, it's just the the EVL-3 disconnects from HA, then re-connects.  I wasn't sure if my issues are related to this:
I am going to be switching from HA supervised to running HAOS within Proxmox as well.  I don't anticipate needing the EVL-3 to access both Smartthings and Home Assistant - my goal, once I get this stabilized, is to try to start moving over to HA.

you think that even though your integration is logged into the EVL-3 via HA that somehow the Smartthings integration would be causing the disconnect?

The logs you posted indicated that envisalink_new is trying to connect to the EVL3 but something else is already connected.  So my suspicion is that Smartthings is already connected to the EVL3 when you startup HA and is preventing HA/envisalink_new from connecting due to the single connection limit on the EVL devices.
You might also restart HA and watch for any other log errors/warnings from the integration at startup prior to those "another client is already connected" ones that could indicate some other trouble.

Ok, I did what you recommended (stop having Smartthings trying to connect to the Envisalink.)  I changed the IP address that Smartthings is trying to connect to (Envisalink.)  I also changed the keep-alive interval to 1080 that philh30 recommended.  Thankfully, it has been running since this morning without issues.


The collections state is no longer correct. even when saveState = false when using FirstOrDefaultAsync

Hi @slorello89,
Would you expect to still receive this error even when saveState is set to false?
System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access.
A concurrent update was performed on this collection and corrupted its state. The collections state is no longer correct.
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at Redis.OM.Modeling.RedisCollectionStateManager.InsertIntoSnapshot(String key, Object value)
   at Redis.OM.Searching.RedisCollection`1.FirstOrDefaultAsync(Expression`1 expression)

That's odd, can you share the whole chain for all possible shared instances of this collection? I wonder if somewhere it's not correctly propagating the saveState forward.

That's odd, can you share the whole chain for all possible shared instances of this collection? I wonder if somewhere it's not correctly propagating the saveState forward.

I'm not following.  What would you like me to share?

I'm seeing both of these issues intermittently as well.  I think I have a similar setup to @VagyokC4 where I have a wrapper "Repository" class that creates an instance of the RedisCollection in its constructor.  This wrapper class is registered in my app with AddScoped however I did not see any change making it a transient service.

Does these internal dictionaries need to be changed to ConcurrentDictionary?  This would have a bunch of downstream effects but I think the answer might depend on the expected DI usage pattern of the RedisCollection type.

I'm seeing both of these issues intermittently as well. I think I have a similar setup to @VagyokC4 where I have a wrapper "Repository" class that creates an instance of the RedisCollection in its constructor. This wrapper class is registered in my app with AddScoped however I did not see any change making it a transient service.

Yup, same pattern over here.  Are you doing any parallel processing on your side?  These issues really started popping up for me once I started doing in parallel queries that query the same collection (sometime different params, sometimes not).
I've been trying to get a repeatable test going.  I've been trying different variations to try and get the same error message as above, but in my LINQ pad it's proving a little tricky.  i.e. I can see it in a broken state, until it's not.
@slorello89 , Here is one variation that maybe can get us closer to the source of these problems.
var redisConnectionProvider = new RedisConnectionProvider("redis://localhost:6379");
var redisCollection = redisConnectionProvider.RedisCollection<Customer>(false);
await redisConnectionProvider.Connection.CreateIndexAsync(typeof(Customer));

// Seed some data
var rnd = new Random(5);
await Task.WhenAll(Enumerable.Range(1, 10).Select(e =>
	redisCollection.InsertAsync(new Customer
	{
		FirstName = $"Test{rnd.Next(1, 3)}",
		NickNames = new[] { $"Test{rnd.Next(1, 3)}" }
	})
));

await Task.WhenAll(Enumerable.Range(1, 10).Select(e =>
	redisCollection.FirstOrDefaultAsync(x => x.NickNames.Contains($"Test1"))
	));

produces pretty regularly for me (when it shouldn't)

When in theory it shouldn't once I set saveState=false

In order for this to be true, wouldn't every call to StateManager need to wrapped in a conditional based on the value of saveState?  Currently when you call redisCollection.FirstOrDefaultAsync it is trying to insert into the underlying state manager dictionaries.  And because Dictionary isn't thread safe, running all of those async calls on the same redis collection will then be trying to read/write on the same underlying dictionary.

When in theory it shouldn't once I set saveState=false

In order for this to be true, wouldn't every call to StateManager need to wrapped in a conditional based on the value of saveState? Currently when you call redisCollection.FirstOrDefaultAsync it is trying to insert into the underlying state manager dictionaries. And because Dictionary isn't thread safe, running all of those async calls on the same redis collection will then be trying to read/write on the same underlying dictionary.

Yeah, I mentioned the Concurrent Dictionary #189 That will definitely help here without a doubt.  As for the StateManager, it just needs to know if we should be collecting state or not and do the exit early when appropriate to avoid any state related issues, to avoid any of the down stream methods from needing to change..

@VagyokC4 @rpf3 - So my main issue with switching to a ConccurrentDictionary is that what we are seeing here is in fact a true race condition. If you enumerate the same collection twice (which was the root of Charles' issue in #189) you in fact have 2 distinct tasks (or threads, depending on how you're invoking it) populating the same StateManager simultaneously. This strikes me as quite wrong, especially since the first thing that happens when GetEnumorator is called, is clear the StateManager. The RedisCollection is not meant to be nor was it built to be thread-safe. We COULD wrap the errors up nicer - and be more explicit about this race condition - but I think throwing something out of the enumeration in which this race condition occurs is the correct course.
Now WRT to the issue at hand, setting saveState to false SHOULD prevent this, but now that I've looked at it - I think it's pretty clear why this is happening inside the RedisCollection as @rpf3 pointed out, I boneheadedly forgot to guard these extra units from correctly checking if SaveState is set before trying to set it. Might have to think about how this is done to guard against this in the future.

@VagyokC4 @rpf3 - So my main issue with switching to a ConccurrentDictionary is that what we are seeing here is in fact a true race condition. If you enumerate the same collection twice (which was the root of Charles' issue in #189) you in fact have 2 distinct tasks (or threads, depending on how you're invoking it) populating the same StateManager simultaneously. This strikes me as quite wrong, especially since the first thing that happens when GetEnumorator is called, is clear the StateManager. The RedisCollection is not meant to be nor was it built to be thread-safe. We COULD wrap the errors up nicer - and be more explicit about this race condition - but I think throwing something out of the enumeration in which this race condition occurs is the correct course.
Now WRT to the issue at hand, setting saveState to false SHOULD prevent this, but now that I've looked at it - I think it's pretty clear why this is happening inside the RedisCollection as @rpf3 pointed out, I boneheadedly forgot to guard these extra units from correctly checking if SaveState is set before trying to set it. Might have to think about how this is done to guard against this in the future.

My first thought would be to make it the state managers responsibility to determine if it's participating in state?  Then nothing changes downstream or going forward.
In my use case I am simulating views, different people with the possibility of the same view of the same data coming back all from multiple tasks.  And so, in this use case it's natural to expect the same query being run against the same collection at the same time, not necessarily everything unique.  Plus this is user data so...
Thank you for all the work you put into this so far, and I look forward to testing the fixed version.

I also suspect that there might be some thread safety issues with the FindByIdsAsync method.  Within this method, a task for every ID is created and if I understand .NET async code (I probably don't) these tasks can be executed on any available thread.  Every individual call to FindByIdAsync will now be trying to write to the same StateManager internal Dictionary.


Fix typo

infomation→information

@eltociear
Thanks for bringing this to our attention. Will be fixed today.


Javascript-obfuscator together with angular-cli

Hey guys,
I have a big Angular app with multiple lazy loading chunks I would like to obfuscate while building for production.
I'm working with angular-cli 6 (soon to be 7) and would like to add it in my release flow so that it runs automatically each time I release to production.
Preferably, without having to eject the angular-cli configuration.
Is this possible? If so, is there a sort of tutorial on how to do this?
thanks for the library!
Best regards,
Lander

While there is a webpack plugin of this obfuscator as you said you would need to eject the webpack config at the moment as angular cli does not support webpack plugins.
What I did was use the gulp plugin or you can also use the grunt plugin if you prefer that. Then you can run the ng build command and afterwards run gulp.
If you use sourcemaps you need to combine the ones that angular cli outputs with the ones that are generated from this obfuscator. There you can use https://github.com/azu/multi-stage-sourcemap.
This obfuscator works relatively well with angular code but sometimes there can be incompatibilities with uglify which is used to minimize code in angular-cli and this obfuscator so I would recommend you to always test the obfuscated code before you deploy it.

@markuszm can you share your config of Gulp?  Specifically the combination of the sourcemaps.  I'm trying to set this up and that would be helpful

Here is our gulpfile.js.
https://gist.github.com/markuszm/a76ec4ed2d8cf912b504b731dd60f996
At the moment, there is no plugin for the multi-stage-sourcemap which is why we created a custom function for that which combines the sourcemap from angular with the one from the obfuscator.
We deactivated some obfuscator options to prevent breaking the angular application so you might need to set some options different.

Closed as old. Please recreate a new issue if you will have additional questions.


Errors being caused by allowing conda-forge & dask/label/dev packages to co-exist

What happened:
Looks like the way currently dask, dask-core & distributed are being packaged in conda-forge & dask/label/dev to be able to use interchangeably is leading to issues when being used with dask-cuda-worker.
What you expected to happen:
Ideally, I'd expect dask/label/dev packages to not be compatible with conda-forge packages, and vice-versa.
Minimal Complete Verifiable Example:
sample_error.yml.txt
Error scenario:
(myenv) pgali@dt07:/nvme/0/pgali/cudf$ mamba env create --prefix /nvme/0/pgali/envs/cudfdev --file sample_error.yml
(myenv) pgali@dt07:/nvme/0/pgali/cudf$ conda activate /nvme/0/pgali/envs/cudfdev
(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ conda list | grep "dask"
dask                      2022.7.1           pyhd8ed1ab_0    conda-forge
dask-core                 2022.7.1a220722 py_gedfa91e22_16    dask/label/dev
dask-cuda                 22.08.00a220808 py39_g9f46a1a_35    rapidsai-nightly
(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ conda list | grep "distributed"
distributed               2022.7.1           pyhd8ed1ab_0    conda-forge

(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ ipython
iPython 3.9.13 | packaged by conda-forge | (main, May 27 2022, 16:56:21)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import dask

In [2]: dask.__version__
Out[2]: '2022.7.0+16.gedfa91e22'

(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ dask-cuda-worker
Traceback (most recent call last):
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 581, in _build_master
    ws.require(__requires__)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 909, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 800, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (dask 2022.7.0+16.gedfa91e22 (/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages), Requirement.parse('dask==2022.7.1'), {'dask-cuda', 'distributed'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/nvme/0/pgali/envs/cudfdev/bin/dask-cuda-worker", line 33, in <module>
    sys.exit(load_entry_point('dask-cuda==22.8.0a0', 'console_scripts', 'dask-cuda-worker')())
  File "/nvme/0/pgali/envs/cudfdev/bin/dask-cuda-worker", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/importlib/metadata.py", line 86, in load
    module = import_module(match.group('module'))
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/dask_cuda/__init__.py", line 12, in <module>
    from .cuda_worker import CUDAWorker
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/dask_cuda/cuda_worker.py", line 22, in <module>
    from .initialize import initialize
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/dask_cuda/initialize.py", line 5, in <module>
    import numba.cuda
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/numba/__init__.py", line 19, in <module>
    from numba.core import config
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/numba/core/config.py", line 15, in <module>
    import llvmlite.binding as ll
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/llvmlite/binding/__init__.py", line 4, in <module>
    from .dylib import *
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/llvmlite/binding/dylib.py", line 3, in <module>
    from llvmlite.binding import ffi
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/llvmlite/binding/ffi.py", line 175, in <module>
    from pkg_resources import resource_filename
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3260, in <module>
    def _initialize_master_working_set():
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3234, in _call_aside
    f(*args, **kwargs)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3272, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 583, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 596, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.9/site-packages/pkg_resources/__init__.py", line 795, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'dask==2022.7.1' distribution was not found and is required by dask-cuda, distributed

Working scenario when dask/label/dev is not present in the environment:
sample_working.yml.txt
(myenv) pgali@dt07:/nvme/0/pgali/cudf$ mamba env create --prefix /nvme/0/pgali/envs/cudfdev --file sample_working.yml
(myenv) pgali@dt07:/nvme/0/pgali/cudf$ conda activate /nvme/0/pgali/envs/cudfdev
(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ dask-cuda-worker
# Works fine without any errors
(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ conda list | grep "dask"
dask                      2022.7.1           pyhd8ed1ab_0    conda-forge
dask-core                 2022.7.1           pyhd8ed1ab_0    conda-forge
dask-cuda                 22.08.00a220808 py39_g9f46a1a_35    rapidsai-nightly
(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ conda list | grep "distributed"
distributed               2022.7.1           pyhd8ed1ab_0    conda-forge

(cudfdev) pgali@dt07:/nvme/0/pgali/cudf$ ipython
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import dask

In [2]: dask.__version__
Out[2]: '2022.7.1'

Thanks for surfacing @galipremsagar. Looking at those conda list outputs, the thing that stands out to me is (in the failing case) dask and dask-core are being installed from different channels -- conda-forge and dask/label/dev, respectively. Naively I would have expected those packages to be installed from the same channel, given the channel priorities being used. That said, I'm not sure what packages dask-cuda is bringing in. Maybe the nightly version of that package is leading to the channel mismatch? cc @jakirkham @charlesbluca @pentschev in case you have any thoughts

Don't think this is related to the dask-cuda nightly, as the same issue comes up with a more minimal conda env specification:
name: cudf_dev
channels:
  - dask/label/dev
  - conda-forge
dependencies:
  - dask==2022.7.1
  - distributed==2022.7.1

Think what's happening here is that:

we specified a strict pinning to dask==2022.7.1; this package isn't available in dask/label/dev (only packages with versions like 2022.7.1a.*) so we end up pulling it from conda-forge
the conda-forge dask package for 2022.7.1 loosely pins dask-core to  2022.7.1 (i.e. 2022.7.1.*) which allows for nightly dask-core packages; since dask/label/dev is higher priority than conda-forge in the environment file, conda ends up pulling from there and we have a mixed stable/nightly environment

I think the fix for the conda-forge dask package should be relatively easy; we're currently specifying the dask-core and distributed like
    - dask-core {{ version }}
    - distributed {{ version }}

Which IIUC is equivalent to loosely pinning to {{ version }}; to ensure that we are only able to install {{ version }} exactly, think we would want to do something like:
    - dask-core =={{ version }}
    - distributed =={{ version }}

For the nightly dask packages, things are a little more complicated; since they're only built on commits to Distributed, we had to intentionally leave the dask-core dependency loosely pinned so that we could pull in newer dask-core nightlies that were built afterwards, which has the unfortunate side effect of allowing nightly dask to be installed with conda-forge dask-core (the opposite of what's happening here); I think we can resolve this by modifying the dask nightly recipe to have an upper bound constraint that effectively forces it to use the nightly channel, thinking of something like
    - dask-core >=2022.7.1a220711,<2022.7.1

Thanks all for the engagement here! 🙏
One consideration with dask & distributed packages is we may want to allow hot-fixes (like 2<IP_ADDRESS>) for one of the packages without making a full release. If that is something we want, then == may be too tight to allow for that update.
Another thing that we may want to look at is whether this is still an issue with strict channel priority. Would think in that case we get everything from dask/label/dev instead of getting some packages from conda-forge.

I believe this is closed by https://github.com/dask/distributed/pull/6862, https://github.com/conda-forge/dask-feedstock/pull/190, and https://github.com/conda-forge/distributed-feedstock/pull/217. @galipremsagar I'm going to close this issue, but feel free to re-open if you're still experiencing this issue


Portfiles and portfile functions cannot find msbuild; emit Error code: no such file or directory

Describe the bug
I have been writing a custom overlay port to install a project that is built with MSBuild (WinFSP). When I run vcpkg_msbuild_install(...) in the portfile, I receive the following error:
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
    Command failed: msbuild W:/project/linux/lib/vcpkg/buildtrees/winfsp/x64-mingw-static-rel/build/VStudio/winfsp_dll.vcxproj /p:Configuration=Release /p:ForceImportAfterCppProps=W:/project/linux/lib/vcpkg/buildtrees/winfsp/x64-mingw-static/vcpkg_msbuild.props /p:ForceImportAfterCppTargets=W:/project/linux/lib/vcpkg/buildtrees/winfsp/x64-mingw-static/vcpkg_msbuild.targets /t:Rebuild /p:UseMultiToolTask=true /p:MultiProcMaxCount=17 /p:EnforceProcessCountAcrossBuilds=true /m:17 -maxCpuCount:17 /p:Platform=x64 /p:PlatformTarget=x64 /p:PlatformToolset=external /p:WindowsTargetPlatformVersion= /p:VcpkgApplocalDeps=false /p:VcpkgManifestInstall=false /p:VcpkgManifestEnabled=false /p:VcpkgEnabled=false /p:VcpkgTriplet=x64-mingw-static /p:VcpkgInstalledDir=W:/project/build/windows-x64-release/vcpkg_installed
    Working Directory: W:/project/linux/lib/vcpkg/buildtrees/winfsp/x64-mingw-static-rel
    Error code: no such file or directory
    See logs for more information:

Call Stack (most recent call first):
...

(There is no log file produced).
To minimise this I tried directly running vcpkg_execute_required_process(COMMAND msbuild.exe WORKING_DIRECTORY ${SOURCE_PATH}) in the portfile, and I still see Error code: no such file or directory. I suspect vcpkg cannot find msbuild in its PATH as it sanitises the environment, and this error is emitted. I see similar outputs when I try to run msbuild in a non-Developer PowerShell or non-Developer Command Prompt.
Below is my triplet that uses a custom toolchain (LLVM-MinGW):
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_BUILD_TYPE release)

set(VCPKG_ENV_PASSTHROUGH
	LLVM_ARCH
	LLVM_MINGW_SYSROOT
	BUILD_WITH_LTO
)

set(VCPKG_CMAKE_SYSTEM_NAME MinGW)

set(DYNAMIC_PORTS
	"winfsp"
)

if("${PORT}" IN_LIST DYNAMIC_PORTS)
	set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/../../cmake/toolchains/clang-mingw.cmake")
set(VCPKG_LOAD_VCVARS_ENV ON)

And below are the overlay portfile and vcpkg.json for WinFSP:
portfile.cmake
vcpkg_from_github(
	REPO winfsp/winfsp
	REF "v${VERSION}"
	SHA512 f514541e2ebd221ff13074592c0d75fc0fe22b685292e1f65d3e24668b7ac93cf03107dad89b1014db2b358c1280e4287e983538d482b0a2b441d18d16729fb0
	OUT_SOURCE_PATH SOURCE_PATH
)

vcpkg_msbuild_install(
	SOURCE_PATH "${SOURCE_PATH}"
	PROJECT_SUBPATH "build/VStudio/winfsp_dll.vcxproj"
	PLATFORM ${VCPKG_TARGET_ARCHITECTURE}
)

vcpkg.json
{
  "name": "winfsp",
  "version": "2.0",
  "description": [
    "Windows File System Proxy - FUSE for Windows",
    "WinFsp enables developers to write their own file systems (i.e. \"Windows drives\") as user mode programs and without any knowledge of Windows kernel programming. It is similar to FUSE (Filesystem in Userspace) for Linux and other UNIX-like computers."
  ],
  "homepage": "https://winfsp.dev/",
  "license": "GPL-3.0-or-later",
  "supports": "windows | mingw",
  "dependencies": [
    {
      "name": "vcpkg-msbuild",
      "host": true
    }
  ]
}

Environment

OS: Windows

To Reproduce
Steps to reproduce the behaviour:

Install the above custom overlay portfiles.
Use any custom chain-loaded toolchain.
See the above failure.

Expected behaviour
Naturally, I expect vcpkg to set up VsDevCmd.bat that sets up the environment and the PATH before launching msbuild.

This was an issue with the triplet. I had to set up a per-port customisation like so:
- set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
set(DYNAMIC_PORTS
	"winfsp"
)

if("${PORT}" IN_LIST DYNAMIC_PORTS)
	set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/../../cmake/toolchains/clang-mingw.cmake")

+# This is per-port customisation for WinFSP because it needs to be built with Visual Studio.
+# We don't explicitly set `VCPKG_CMAKE_SYSTEM_NAME` which evaluates to `Windows`:
+# see https://learn.microsoft.com/en-us/vcpkg/users/triplets#vcpkg_cmake_system_name
+if("${PORT}" STREQUAL "winfsp")
+	set(VCPKG_LOAD_VCVARS_ENV ON)
+	set(VCPKG_PLATFORM_TOOLSET v143)
+else()
+	set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
+endif()


add a way to declare a cell and a command run cell

Please considering add a way to declare a cell like #%% so that users can run code from cell to cell without selecting multiple lines of code.
example:
https://code.visualstudio.com/docs/python/jupyter-support-py#_jupyter-code-cells
https://nteract.gitbooks.io/hydrogen/

I would suggest implementing this in a way that makes it compatible with rstudio sections: https://support.rstudio.com/hc/en-us/articles/200484568-Code-Folding-and-Sections
e.g. # Section ----
To allwo easier conversion from r to vsc :)
This would also make it possible to add a code navigation feature from rstudio that generates a "table of contents" via the code sections.
Latex-Workshop does the same in the sidebar:

Maybe it is possible to use some of their code?

@assignUser
Code section is already implemented in languageserver by https://github.com/REditorSupport/languageserver/pull/163 and folding by https://github.com/REditorSupport/languageserver/pull/294.

Regarding the original request here, I'd suggest that we adopt the Notebook API to have code cells suggested at https://github.com/Ikuyadeu/vscode-R/issues/378 and being implemented at https://github.com/Ikuyadeu/vscode-R/pull/394.

@renkun-ken  Oh that's cool! Sorry for my superflous comment, vsc-r/lsp can do so much I am still learning everyday. Thank you for your work on these projects.

With rmarkdown code chunks support implmeneted, this code chunk in R script should be straightforward.

With rmarkdown code chunks support implmeneted, this code chunk in R script should be straightforward.

If this is something people are still interested in, I have this working by piggybacking on rmarkdown.ts like @renkun-ken suggested:

Still needs a little polishing, but is functioning as expected

@ElianHugh Thanks for working on this. I believe it is still quite useful. It would be nice for you to put it into a PR anytime you like.


Coming from HockeyApp and can't find my "App Secret"

"Make sure to replace {Your App Secret} text with the actual value for your application. The App Secret can be found on the Getting Started page or Settings page on the App Center portal."
Unfortunately the "Getting Started" page seems to display an example, not the actual App Secret. And the "Settings" page does not exist either. I'm just lost.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 45228922-4a96-8c08-7d27-69ef98d44943
Version Independent ID: d04ef359-7b17-8a14-970b-5c48820976cd
Content: Get Started with iOS - Visual Studio App Center
Content Source: docs/sdk/getting-started/ios.md
Service: vs-appcenter
GitHub Login: @elamalani
Microsoft Alias: emalani

@altimac sorry for the struggle there. The app secret can be found in the app settings and then in the upper right corner there's a vertical three dots menu. Clicking that will reveal an entry to "Copy app secret".
I will assign this to my colleagues to ensure we're pointing that out in the documentation correctly.

IMHO the App Secret should not be hidden like this. It's a very important information and should be accessible more easily. For example in the App settings > App details "box".
Just my 2cents. Thanks for the reply!

On 31 Oct 2019, at 10:41, Daniel Adams<EMAIL_ADDRESS>wrote:
@altimac https://github.com/altimac sorry for the struggle there. The app secret can be found in the app settings and then in the upper right corner there's a vertical three dots menu. Clicking that will reveal an entry to "Copy app secret".
I will assign this to my colleagues to ensure we're pointing that out in the documentation correctly.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/MicrosoftDocs/appcenter-docs/issues/782?email_source=notifications&email_token=AAF6F2R2X5GVJFNCPP3UOJLQRKR6LA5CNFSM4JGK4NSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECXDJNQ#issuecomment-548287670, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAF6F2VNHU2KXT6I4BBCOODQRKR6LANCNFSM4JGK4NSA.

We updated all docs like this to clearly indicate where to get the app secret. Suggestions for improving App Center itself, like making the app secret more obvious to find, should go here: https://github.com/microsoft/appcenter/issues


Support Faraday 1.0.X

In this issue is discussed support to Faraday 1.0, Ruby 2.7, and Rails 6...
This PR intent to do one part of this, giving to users the possibility of using Faraday 1.0.X with Her gem...

Any ETA on getting this worked on ? Would really like this update.

@zacharywelch @edtjones @remi Could you help us here?

Any ETA on getting this worked on ? Would really like this update.
cc: @zacharywelch and @edtjones

It would be a great assistance for my team (and for many other team) if you guys could post any update on this topic.  👀
We are waiting for this update to update other gems in our project.
cc. @zacharywelch @edtjones @remi

Hi @ptonella @bvicenzo thanks for chasing this. @zacharywelch and I are both snowed under with other stuff and haven't had time to maintain this gem at the moment; if you would like to continue this task we can ask @remi to add you as a committer.

Just FIY, I've been using this gem fix in production since Jul 2020 this way:
gem 'her', git: 'https://github.com/bvicenzo/her.git', branch: 'bv-support-faraday-1.0'

And updated other dependencies to Faraday 1.X...
It's working as expected...
it may be considered a good test...

Sorry everyone, I haven’t had the time to check on issues related to this project.
@bvicenzo Would you like to help with this project as a maintainer?

Man, thanks for the invite.
However, I'm not working at the company where I've used this gem...
so, I believe that I'll not have the context to help as a maintainer... :(

@remi could you change the version to 1.1.1 in order to update the ruby gems: https://rubygems.org/gems/her.
Because the version wasn't changed, the rubygem still have the previous version

@remi @thiagodiniz and I can help you with maintainer 👍

🎉 https://rubygems.org/gems/her/versions/1.1.1 🎉


add nomadants.net to index.html

using this as an excuse to learn my way around github and to hopefully
take part in something neat. the webring icon can be found at the footer
of each of the webpages in the site.

It seems like most links are 404. I think the site is a bit too early in its development to be part of the webring in its current state. Keep working on it and when you have about 10 project pages, open a new PR :) Looking forward!

oh yeah, i guess i should've actually pushed my changes. silly me, will make sure the website is more bountiful next PR!


Bug: It won't install with npm

$ npm i --save-dev @formidable-webview/ersatz @formidable-webview/ersatz-testing
npm ERR! prepareGitDep 2> npm WARN install Usage of the `--dev` option is deprecated. Use `--only=dev` instead.
npm ERR! prepareGitDep npm ERR! code EUNSUPPORTEDPROTOCOL
npm ERR! prepareGitDep npm ERR! Unsupported URL Type "link:": link:./scripts/eslint-plugin
npm ERR! prepareGitDep
npm ERR! prepareGitDep npm ERR!  A complete log of this run can be found in:
npm ERR!     .npm/_logs/2020-10-24T10_20_04_173Z-debug.log

On the one occasion it added to my package.json, it didn't manage to add a directory to node_modules (and npm install erred with the same issue above. Only discarding the changes resolved the issue.

@remy90 Thanks, I'll take a look

@remy90 I did a little grep -R "link:./scripts/eslint-plugin" in the master branch and had the following matches:
node_modules/jest-environment-jsdom/node_modules/jsdom/package.json:    "eslint-plugin-jsdom-internal": "link:./scripts/eslint-plugin",
node_modules/jsdom/package.json:    "eslint-plugin-jsdom-internal": "link:./scripts/eslint-plugin",

I'll check and see if those upstream packages have published a fix and let you know.

I am still able to reproduce this... I'll fill a bug in npm issue tracker.
I noticed however, that if you use --only=dev, the package will be installed despite the error.
npm i --only=dev @formidable-webview/ersatz @formidable-webview/ersatz-testing

Thanks for the above, the following did the trick for a dev dependency:
npm i --only=dev @formidable-webview/ersatz @formidable-webview/ersatz-testing -D


dev(#684): prettier-message-when-skipping-types

Current dependencies on/for this PR:

main

PR #685   👈

This stack of pull requests is managed by Graphite.

Merge activity

Jan 15, 10:41 AM: @MartinBernstorff merged this pull request with Graphite.


add cookie support for downloading sound with session based authentication

I am using react-native-sound in a scenario which needs to send cookies / session info to download the remote audio files. This pull requests adds support to include cookies in the request for downloading audio files from a remote server.

Cookies are supported on iOS out of the box however this is not the case for Android. Therefore this pull requests is for Android only.

Any idea why this wasn't added?


OpenShift AI Compatibility Investigation

Verify SusQL functionality on OpenShift AI cluster.
Make SusQL updates if needed.  Document deployment process as necessary.

Initial report: SusQL does run on OpenShift cluster that has OpenShift AI functionality added.
Next question is how can we improve integration?

Here is an example of how to use SusQL to gather GPU energy on an OpenShift AI workload.
https://github.com/sustainable-computing-io/susql-operator/blob/main/doc/openshift-ai-example-notebook.md


Fix QLC+ schema errors

E.g. round some physical data. Run the export test script against the test fixtures to see all errors. They all don't seem to break the fixture's functionality (the schema is more restrictive than the program actually is).

also, PowerConsumption has to be rounded


fix build error: run dep ensure to add dependents

Almost all ci failed because of vendor lost.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
If they are not already assigned, you can assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

I guess the build error here: https://k8s-gubernator.appspot.com/build/istio-prow/pr-logs/pull/istio_istio/9393/istio-presubmit/20358 is what this PR fixes.  Above gate error presents as a heisenbug.


Need to add a scale for the TimelineView

Need to add a TimelineScaleView for the TimelineView. This would probably be a fixed view with a drawRect that draws different parts of the scale depending on the scroll position. For the TimelineView itself, it would just accept any kind of UIView and keep its position fixed while scrolling and cause the scale view to redraw.
Currently don't have a need for it in my current project, so the priority for it isn't very high.

Looks like I'll be chugging away at this in my fork this week

Awesome :)!


Is there a way to simulate tracking:buffered event?

I'm writing some code to handle buffering events. Do you have any suggestion on how to simulate the buffered effect so I can test my integration? Thanks!

@mayeaux you could write tests -- it is also just html5 video so you could trigger it manually and see if you get the expected results... another option is to use chrome devtools and turn your machine into a DSL Connection with a super large video file... that'll certainly generate some buffering events!

The best thing I found was to use the keyboard to seek forward a few seconds on the video, somehow that really triggers the buffer event. Thanks!


feat: support refresh materialized view

Hi, this PR adds the functionality to refresh materialized views!

@koskimas @igalklebanov Sorry am I missing anything regarding the contributions guidelines? Please tell me if there is any issue with this PR so that I can fix it

Hey 👋
Sorry for the delay, IRL stuff. Overall, it looks good. Let's get those tests 🟢.

Okay I think I fixed the tests, they were not passing because I was trying to drop a materialized view without specifying .materialized().
I cannot run the tests locally though so I'm sorry if we're still not done yet 😕

Sorry for taking so much time. There were still one failing test left, but this time hopefully everything will pass 🤞


Move handleEvent back into the header file.

Separated out from original PR https://github.com/apache/trafficserver/pull/4136
Just moving handleEvent back into header file so it is more likely that compilers will inline the call.

I'm going to remove the 7.1.5 Project on this, since going forward, we will need to make a second PR against the 7.1.x for proposed back ports.

Cherry picked to 8.1.0


Competition Page

Goals

Have dedicated competition page

updates with contest opportunities in Canda (expand to NA later)

Individual pages for each competition

list of lessons that are useful for that competition
look in to comments/forum for each competition to find topic lists

Look into ways of generating problem sets based on database storage (problem bank)

moved to #36


Remove Deprecated Fast Router

Fixes https://github.com/NYTimes/gizmo/issues/190 :v:

Coverage decreased (-0.5%) to 45.924% when pulling 3af567eed812825633bef367f84b33a3adde5c89 on marwan-at-work:rmf into 9eaa369806392cf61240a2bafe30df7c59f5b7c0 on NYTimes:master.

Tidy up

@fsouza @jprobinson "go mod tidy" does not change anything, it's probably because server/kit still uses httprouter

:cries:

Dang, I thought I had removed it from there but it was just marvin.
If you don't mind, let's rid ourselves of that package for good and remove it from the kit server as well?


Error while compressing images

Getting Error on Mac whle runnning command
i Running ImageOptim...
! spawn /Applications/ImageOptim.app/Contents/MacOS/ImageOptim ENOENT
! Please raise an issue at https://github.com/JamieMason/ImageOptim-CLI/issues
Error: spawn /Applications/ImageOptim.app/Contents/MacOS/ImageOptim ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:217:19)
    at onErrorNT (internal/child_process.js:394:16)
    at process._tickCallback (internal/process/next_tick.js:174:19)

I will do some work to make the error message much clearer, but it looks like you do not have https://imageoptim.com/mac installed – ImageOptim-CLI automates that mac app so you will need to have it installed. Thanks.


Update sql-data-warehouse-develop-table-design.md

Hi @saltug, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@barbkess


French formatting

Hi
I have a bug with french formatting :
"06-12-34-56-78".phony_normalized(default_country_code: 'FR') # gives me "+33612345678", good

but
"06-87-73-83-58".phony_normalized(default_country_code: 'FR') # gives me "+687738358", wrong

The only difference is the phone number. The default formatting is the same
Is there a bug or is it my bad ?
Thank you.

Same for "06-24-24-02-48", "04-68-50-11-99"

@Apokly Hi Fabien! I can't give support for non-Phony related functionality. Cheers! :rocket:


Moved key constants into an Object constant

This was my attempt to resolve Issue #78. The various key constants should now part of the userKeys Object. Game appears to function the same, though prior bugs were present that have not been affected by this fix. Only other change was removing a section of commented-out code.

@Germlord Thanks for completing that issue, it makes the code easier to understand and is good practice.


fix should return error if try using a unknown database

Previous, when use db, and db does not exist,
no error return.
But it should return error: Uknown database xxx

run buildall

run buildall


C# test generator

For now, V# supports only XML-based unit test representation. Besides unreadability issues, we need the special tool for running these tests. That is, given a collection of UnitTest objects, currently we print them using XmlSerializer.
The usability of V# can be massively improved, if we had C# test printer. It would be nice to have various printers sharing the common printer core: MsTest, NUnit, XUnit, etc.
Every unit test should roughly look like
[Test]
public void Test1() {
    // Allocate objects graph, including `thisObject` (if F is not static) and reference type arguments.
    try {
        TResult result = thisObject.F<T1, ..., Tn>(arg_1, ..., arg_m);
        Assert.<check result match>(...);
    }
    catch (ExpectedException1 e) {
        // success
    }
    ....
    catch (ExpectedExceptionN e) {
        // success
    }
}

Allocating complex types
For now, classes could be allocated by using System.Runtime.Serialization.FormatterServices.GetUninitializedObject and then initializing their contents by reflection. In future, we consider to allocate objects using their public API. However, this requires additional research.

Hi @dvvrd. I think, I have a draft of the test generator. However, complex type allocation doesn't work well for now. I am using *.vst files to generate tests. Instead of
            var stats = Cover(type, outputDirectory);
            return Reproduce(stats.OutputDir);

I am running
            var stats = Cover(type, outputDirectory);
            return GenerateTests(stats.OutputDir, testFolder);

I noticed when the class I run "Cover" method against, has a constructor with parameters, VSharp just ignores it and doesn't cover this class at all.
I believe that this happens in lines 881 - 903 of the Interpreter.fs file. The InitializeStatics method, precisely.  Let's assume that we have the following class
public class EmployeeService
{
    private readonly ILogger _logger;

    public EmployeeService(ILogger logger)
    {
        _logger = logger ?? throw new ArgumentNullException(nameof(logger));
    }
}

It would be really helpful If I could run something like:
TestGenerator.CoverAndRun<EmployeeService>(() => new EmployeeService(Mock.Of<ILogger>())); // the argument is Expression<Func<T>>

For now, I can't really move forward because I need a set of real classes to test with. I have enough real production code covered by manually-written unit tests so I can align test generation results with the real tests. The problem is that most of these classes have constructors with parameters. Please let me know if constructor support is something that can be done easily.

@dvvrd thank you for the update. The "constructors" branch makes perfect sense to me. I'll check some ideas and get back to you once I have something to show.


Hangs on boot with some virtio VMMs (e.g. OpenStack)

As reported by Hans Ole Rafaelsen on the mailing list and investigated by @ricarkol:
Was able to reproduce it and now have a better idea of what's going on (with a temporary fix included). The issue happens when using qemu with a boot disk image exposed as a virtio-blk device. The problem is that solo5 tries to configure a virtio device that was already initialized/configured at VM early boot time. Qemu gets "confused" with the second configuration attempt, throws the "virtio: zero sized buffers are not allowed" error and gets stuck (somewhere that I couldn't determine).
Just in case, these are all the tests I tried (using qemu v3 as v5 has an issue https://github.com/Solo5/solo5/issues/463). To make things simpler I've been using the solo5 tests/test-net unikernel (c code, not mirage). You can create disk-net.img in solo5 using:
tests (master) [83]> ../scripts/virtio-mkimage/solo5-virtio-mkimage.sh -f raw disk-net.img test_net/test_net.virtio

These work:
+ boot disk image as an IDE device:
qemu-3 -drive file=disk-net.img,if=ide,format=raw -cpu Westmere -m 128 -nodefaults -no-acpi -display none \
-serial stdio -device virtio- net,netdev=n0 -netdev tap,id=n0,ifname=tap100,script=no,downscript=no -device isa-debug-exit

+boot disk image as a virtio-scsi device (same as google cloud):
qemu-3 -device virtio-scsi-pci,id=scsi \
-device scsi-hd,drive=hd \
-drive if=none,id=hd,file=disk-net.img,format=raw \
-cpu Westmere -m 128 -nodefaults -no-acpi -display none -serial stdio \
-device virtio-net,netdev=n0 -netdev tap,id=n0,ifname=tap100,script=no,downscript=no -device isa-debug-exit

These do NOT work:
+ boot disk image as a virtio-blk device:
qemu-3 -drive file=disk-net.img,if=virtio,format=raw -cpu Westmere -m 128 -nodefaults -no-acpi -display none \
-serial stdio -device virtio-net,netdev=n0 -netdev tap,id=n0,ifname=tap100,script=no,downscript=no -device isa-debug-exit

The right fix would be to check in solo5 init code that the virtio device is already configured, and just skip it. For now, this temporary patch (disable virtio-blk completely) works:
--- a/bindings/virtio/pci.c
+++ b/bindings/virtio/pci.c
@@ -54,7 +54,6 @@

 static uint32_t net_devices_found;
-static uint32_t blk_devices_found;

 #define PCI_CONF_SUBSYS_NET 1
 #define PCI_CONF_SUBSYS_BLK 2
@@ -72,15 +71,6 @@ static void virtio_config(struct pci_config_info *pci)
             log(WARN, "Solo5: PCI:%02x:%02x: not configured\n", pci->bus,
                 pci->dev);
         break;
-    case PCI_CONF_SUBSYS_BLK:
-        log(INFO, "Solo5: PCI:%02x:%02x: virtio-block device, base=0x%x, irq=%u\n",
-            pci->bus, pci->dev, pci->base, pci->irq);
-        if (!blk_devices_found++)
-            virtio_config_block(pci);
-        else
-            log(WARN, "Solo5: PCI:%02x:%02x: not configured\n", pci->bus,
-                pci->dev);
-        break;
     default:
         log(WARN, "Solo5: PCI:%02x:%02x: unknown virtio device (0x%x)\n",
             pci->bus, pci->dev, pci->subsys_id);

Fixed in #491 thanks @ricarkol.


Remove RunnableEach

Thank you for contributing to LangChain!

[ ] PR title: "package: description"

Where "package" is whichever of langchain, community, core, experimental, etc. is being modified. Use "docs: ..."  for template changes, "infra: ..." for CI changes.
Example: "community: add foobar LLM"

[ ] PR message: Delete this entire checklist and replace with

Description: a description of the change
Issue: the issue # it fixes, if applicable
Dependencies: any dependencies required for this change
Twitter handle: if your PR gets announced, and you'd like a mention, we'll gladly shout you out!

[ ] Add tests and docs: If you're adding a new integration, please include

a test for the integration, preferably unit tests that do not rely on network access,
an example notebook showing its use. It lives in docs/docs/integrations directory.

[ ] Lint and test: Run make format, make lint and make test from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:

Make sure optional dependencies are imported within a function.
Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests.
Most PRs should not touch more than one package.
Changes should be backwards compatible.
If you are adding something to community, do not re-import it in langchain.

If no one reviews your PR within a few days, please @-mention one of baskaryan, efriis, eyurtsev, hwchase17.

I think OK
Doing a quick search, it does seem like there's 1 or 2 uses

https://github.com/fovi-llc/wiki3ai/blob/3fc9dde589fd752a68ae8bea502cdffa90ced56f/packages/research-assistant/ra.ipynb#L149

https://github.com/Azure/app-service-linux-docs/blob/a5a5fd4f2f3b1f54f9136645dab3b45cb898a635/HowTo/gRPC/Linux/OpenAI/LangChain/PyServer/venv/langchain/schema/runnable/base.py#L1440

@hinthornw those aren't uses of runnable each

first one is in a stack trace
second one is someone committed their virtual env containing langchain to git

should we just deprecate it for now?


"contextual-life-cycle" false positive on Directive

According to this test file, the "contextual-life-cycle" rule should not report errors on ngAfterContentInit/ngAfterContentChecked/ngAfterViewInit/ngAfterViewChecked being used on directive. However, the documentation  seems to be wrong about this.

Hi @nicolashenry,
It's true. There is a problem in the documentation. An issue is open here.


Drop the agreement gossip key, it is auto generated in 0.51.x and above

I verified with Edward.  The agreement key is autogenerated in 0.51 and higher, we can remove this functionality from Solo.

double checked the code, the peers of node X never use the public agreement key of node X.    We need to remove the check for it in the key loader.

:tada: This issue has been resolved in version 0.30.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[Excel] (ui) update for new API shape

This is essentially just a code change in an article that was reviewed recently, so I'm going to merge it myself without another review.

Docs Build status updates of commit f42bc96:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/design/disable-add-in-commands.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


disjoint unions don't work with classes when "tag" value is a number

I'm hoping this isn't an intentional thing that I have misunderstood.  The following code typechecks as I would expect:
type D = {nodeType: 9, foo: Z}
type E = {nodeType: 1, bar: Z}
type Z = {x: string}

function doSomething(container: E | D): string {
  if (container.nodeType === 9) {
    return container.foo.x;
  } else {
    return container.bar.x;
  }
}

But similar code (using classes instead of structural typing) fails:
declare class A { }
declare class D extends A {nodeType: 9, foo: Z}
declare class E extends A {nodeType: 1, bar: Z}
type Z = {x: string}

function doSomething(container: E | D): string {
  if (container.nodeType === 9) {
    return container.foo.x;
  } else {
    return container.bar.x;
  }
}

The error in this case is:
 11:     return container.foo.x;
                          ^^^ property `foo`. Property not found in
 11:     return container.foo.x;
                ^^^^^^^^^ E
 13:     return container.bar.x;
                          ^^^ property `bar`. Property not found in
 13:     return container.bar.x;
                ^^^^^^^^^ D

AFAIK disjoint unions work with objects types. You can use instanceof with classes
export function doSomething(container: E | D): string {
  if (container instanceof D) {
    return container.foo.x
  } else {
    return container.bar.x
  }
}

That makes total sense, thanks.  I thought I remembered something like this, but I couldn't remember what it was called (kept getting mixed up with typeof :confused:).  Thanks!

Nope, that's a bug! It works if you use strings for nodeType instead of numbers

oh nice catch @vkurchatkin.  The instanceof solution solves my immediate problem, but I guess I'll reopen this and let the flow people decide if it's worth fixing or not?

the latter example using classes works as of v0.38.0


docs(Toggle): Refresh toggle documentation

Overview
Result from pairing session :)

Updates Toggle JSDoc and types
Adds stories for clearer UI states

PR Checklist

[ ] Related to designs:
[ ] Related to JIRA ticket: ABC-123
[x] I have run this code to verify it works
[ ] This PR includes unit tests for the code change

📬Published Alpha Packages:@codecademy/gamut-illustrations@0.4.19-alpha.bb1657.0@codecademy/gamut-labs@8.0.3-alpha.bb1657.0@codecademy/gamut@20.0.6-alpha.bb1657.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60185b2a016e9714831d76e6--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-illustrations@0.4.19-alpha.6a85f9.0@codecademy/gamut-labs@8.0.3-alpha.6a85f9.0@codecademy/gamut@20.0.6-alpha.6a85f9.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://601864509c407a00c11adcb2--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-illustrations@0.4.25-alpha.dcd80c.0@codecademy/gamut-labs@8.3.2-alpha.dcd80c.0@codecademy/gamut@21.2.2-alpha.dcd80c.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://601aeabe26d36916f8b8fe51--gamut-preview.netlify.appDeploy Logs


Next line in a cell

Hi
Is it possible to go to the next line in a cell with this lib ? Like using \n ? I need multiple line in one cell but I dont know how to process.
Thanks for advance

It works for me using a '\n' character in the text content of the cell.
Don't forget to manage the height of the expected cell(s) ;-)


Bump image dependency to 0.12/0.13

I don't know if there is a specific issue, but it would be good to bump the image dependency up to 0.12/0.13.

Good idea. I've upgraded it to 0.13.0 and staged for the next release. Thanks!


feat: Allow to configure bundleSizeOptimizations

This introduces a new option for the plugins:
sentryPlugin({
   bundleSizeOptimizations: {
      excludeDebugStatements: true,
      excludePerformanceMonitoring: true,
      excludeReplayCanvas: true,
      excludeReplayIframe: true,
      excludeReplayShadowDom: true,
    },
});

When set, this will replace the relevant build time flags with a boolean, allow bundlers to treeshake code out and reduce the shipped bundle size.
Closes https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/425

Do you think there's a way that we could filter out files before reading them? I'm thinking about looking at the file path and checking for a @sentry occurance. But not sure if I'm missing something tough why this wouldn't work.

Not a bad idea. we could do id.contains(os.sep + "node_modules" + os.sep + "@sentry" + os.sep). This has a few cases with resolution but in 99% of the cases it should work.
Counterargument, it would not be the same behavior for all bundlers and why should we make this unnecessarily fragile?

Counterargument, it would not be the same behavior for all bundlers and why should we make this unnecessarily fragile?

Also a good point. My concern is mostly around the plugin having to read every file might have a performance impact. But I'm totally fine if we just go with this first and optimize later if necessary.

Do you think there's a way that we could filter out files before reading them? I'm thinking about looking at the file path and checking for a @sentry occurance. But not sure if I'm missing something tough why this wouldn't work.

Yeah we can for sure revisit this, since this is opt in I think we can tweak this more later if needed!

OK so I fixed the tests and tried to address the feedback - is this ready to go? :)
I did not add any file filtering for now, I think we can still add this at a later stage if we find out this is too slow! This does not run at all if no bundleSizeOptimizations are configured so it should not affect any existing users.

This concern is critical and we need to address it before merging this.


Handle failure and when no occurrences

path/to/vis-fzf.lua:17: bad argument #1 to 'match' (string expected, got nil) when no occurrence is selected.

Solved by #d9c5312


[BrokenLinksH2] Fix path in link

Fixing the link path, removed .md

Docs Build status updates of commit 4585580:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/word-processing.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@tfosmark - Please can you review and merge this PR!

@lindalu-MSFT
Global effort to fix broken links
The Content & Learning team is fixing broken links on docs.microsoft.com for the rest of H2. This effort will eliminate potential accessibility, security, and usability issues. This PR includes only link fixes and does not change other content. Please review and merge, or comment in the PR with any changes you'd like to see. Thanks!


Generating class images stuck at 0%

I've successfully cloned the repository and run the commands required to install the environment for mist; I've also added stable-diffusion-1-5 in the root folder, as it was not included in the repository. However, once I ran mist-v2 in the default CPU setup, the generation of class images was stuck at 0%. I've also tried running it in the default GPU setup, but it said that my GPU does not meet the requirements. Any fix?

Responded in other issues.

Responded in other issues.

I can't seem to find the issue you're referring to. Would it be possible to send the link?

Sorry for misleading. This is because CPU is not well supported currently. You may need a GPU with met requirements to run it. For the requirement see


Feature Request: kpt cfg generate-substrs

A coworker wrote a script that takes key value pairs, finds all YAML values that contain those values, and generates kpt substitutions for them. I was hoping something similar could be added to kpt to generate substrs based on setter values already in the Kptfile.
http://go/kpt-cfg-gen (Google internal gist)
Examples of substrs generated:
    io.k8s.cli.substitutions._subst-1:
      x-k8s-cli:
        substitution:
          name: _subst-1
          pattern: kcc-${tenant-project-id}
          values:
          - marker: ${tenant-project-id}
            ref: '#/definitions/io.k8s.cli.setters.tenant-project-id'

    io.k8s.cli.substitutions._subst-8:
      x-k8s-cli:
        substitution:
          name: _subst-8
          pattern<EMAIL_ADDRESS>          values:
          - marker: ${_subst-1}
            ref: '#/definitions/io.k8s.cli.substitutions._subst-1'
          - marker: ${admin-project-id}
            ref: '#/definitions/io.k8s.cli.setters.admin-project-id'
    io.k8s.cli.substitutions._subst-9:
      x-k8s-cli:
        substitution:
          name: _subst-9
          pattern: serviceAccount:${_subst-8}
          values:
          - marker: ${_subst-8}
            ref: '#/definitions/io.k8s.cli.substitutions._subst-8'

@phanimarupaka
Setters are being redesigned to eliminate need for explicit substitutions. You can create setter references (with interpolation) either manually (adding the comment) or in bulk by using search and replace.
For example:

Create a setter for a GCP project ID:

$ kpt cfg create-setter DIR/ project-id --description "GCP Project ID" --required
Assume there are two fields across config files with value "project-id-foo” and “project-id-bar”:
project-id-foo
...
project-id-bar

And you have setter project-id set to value lazy-koala

Create setter references (interpolations) across configs:

$ kpt cfg search DIR/ --by-value-regex “project-id-(.*)” --put-pattern “my-${project-id}-${1}”
Final results:
my-lazy-koala-foo # my-${project-id}-foo
...
my-lazy-koala-bar # my-${project-id}-bar

@phanimarupaka
Setters are being redesigned to eliminate need for explicit substitutions. You can create setter references (with interpolation) either manually (adding the comment) or in bulk by using search and replace.
For example:

Create a setter for a GCP project ID:

$ kpt cfg create-setter DIR/ project-id --description "GCP Project ID" --required
Assume there are two fields across config files with value "project-id-foo” and “project-id-bar”:
project-id-foo
...
project-id-bar

And you have setter project-id set to value lazy-koala

Create setter references (interpolations) across configs:

$ kpt cfg search DIR/ --by-value-regex “project-id-(.*)” --put-pattern “my-${project-id}-${1}”
Final results:
my-lazy-koala-foo # my-${project-id}-foo
...
my-lazy-koala-bar # my-${project-id}-bar

What I'm suggesting would be even easier to use and less typing.
Instead of a human having to decide what the pattern should be for each substitution, kpt-cfg-gen finds all substring matches of setter values and automatically generates the substrs.
I've used it to generate 20 substrs at a time with a single command. Then I just manually reviewed the changes to make sure I like them before committing.
I'm proposing something similar. You'd just run kpt cfg generate-substrs and it would use the values of the setters you already created to find all YAML values that should be substrs and generate the interpolation automatically.

What I'm suggesting would be even easier to use and less typing.
Instead of a human having to decide what the pattern should be for each substitution, kpt-cfg-gen finds all substring matches of setter values and automatically generates the substrs.
I've used it to generate 20 substrs at a time with a single command. Then I just manually reviewed the changes to make sure I like them before committing.
I'm proposing something similar. You'd just run kpt cfg generate-substrs and it would use the values of the setters you already created to find all YAML values that should be substrs and generate the interpolation automatically.

@frankfarzan I am curious about your philosophical designation for setters.  Are they supposed to be top level package parameters and the hydration is based on them or are they a shortcut for simple mutations (set value, replace, etc.)

@frankfarzan I am curious about your philosophical designation for setters.  Are they supposed to be top level package parameters and the hydration is based on them or are they a shortcut for simple mutations (set value, replace, etc.)

@karlkfi This seems to be an interesting use-case. So you build the base setter definitions and want to delegate the work to kpt in order to figure out building the patterns for all the fields ? What if there is a value whose substring matches a setter but you don't want to parameterize it ? You will have to manually delete that substitution/pattern correct ? I am not sure how common is this use-case to be baked into kpt cli.
On a side note actual value of _subst_9 must be huge here correct ? Currently you are leveraging nested substitutions here but that will go away with new design and you have to elaborate the pattern with all setters similar to terraform. The new pattern comment would look like
<EMAIL_ADDRESS>

@karlkfi This seems to be an interesting use-case. So you build the base setter definitions and want to delegate the work to kpt in order to figure out building the patterns for all the fields ? What if there is a value whose substring matches a setter but you don't want to parameterize it ? You will have to manually delete that substitution/pattern correct ? I am not sure how common is this use-case to be baked into kpt cli.
On a side note actual value of _subst_9 must be huge here correct ? Currently you are leveraging nested substitutions here but that will go away with new design and you have to elaborate the pattern with all setters similar to terraform. The new pattern comment would look like
<EMAIL_ADDRESS>

@karlkfi I think that script is equivalent to (and can be provided as porcelain for):
$ kpt cfg search DIR/ --by-value-regex “(.)project-id(.)” --put-pattern “{$1}${project-id}${2}”
Note that there's little value in having substitutions defined as first class citizens in the Kptfile.
@mikebz: That's a bigger design discussion we should track elsewhere.

@karlkfi I think that script is equivalent to (and can be provided as porcelain for):
$ kpt cfg search DIR/ --by-value-regex “(.)project-id(.)” --put-pattern “{$1}${project-id}${2}”
Note that there's little value in having substitutions defined as first class citizens in the Kptfile.
@mikebz: That's a bigger design discussion we should track elsewhere.

@frankfarzan I think the script does more that just that. The command you mentioned only adds pattern to regex value that match (.)some-value(.). But the script parameterizes all the fields values with substring match with any of the setter values. @karlkfi Correct me if I am wrong.

@frankfarzan I think the script does more that just that. The command you mentioned only adds pattern to regex value that match (.)some-value(.). But the script parameterizes all the fields values with substring match with any of the setter values. @karlkfi Correct me if I am wrong.

re: @phanimarupaka

So you build the base setter definitions and want to delegate the work to kpt in order to figure out building the patterns for all the fields ?

Yes

What if there is a value whose substring matches a setter but you don't want to parameterize it ? You will have to manually delete that substitution/pattern correct ?

Yes. This is less work than creating it manually. And if the result is a big mess you can always git revert and do it manually. Or revert, comment out the line you want ignored, run the generator again, and un-comment the preserved line.

I am not sure how common is this use-case to be baked into kpt cli.

I've written 9 kpt packages for my current project and used the sustr generator on 7 of them. The others didn't have any substitutions and only contained one file other than the kptfile.

On a side note actual value of _subst_9 must be huge here correct ? Currently you are leveraging nested substitutions here but that will go away with new design and you have to elaborate the pattern with all setters similar to terraform. The new pattern comment would look like<EMAIL_ADDRESS>
Correct. If you get rid of named substitutions they can't be re-used in other substitutions.
re: @frankfarzan

Note that there's little value in having substitutions defined as first class citizens in the Kptfile.

The value is:

being about to use the named substr multiple times without defining the pattern multiple times.
being able to use the named substr in other substrs without repeating yourself

I suggest kpt should support both the new inline anonymous substitutions and the current named substitutions. Named substitutions also allow using the same pattern in multiple places without having to re-define the pattern everywhere.
I also suggest merging named substitutions into setters, so that the substitution is just the default value of the setter. That way they can be both re-used and overridden with kpt cfg set.
For example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          default: ${tenant}-${environ}-${org}-${project-id-random-suffix}

I think that script is equivalent to (and can be provided as porcelain for)...

As @phanimarupaka mentioned, the generator script isn't just porcelain. It finds matches and generates the patterns for all substrs at the same time using all pre-defined setters. It's much less typing AND much less thinking, because the user dosn't even need to know what or where the substrs should be. The command does all that manual labor itself and the user just reviews the changes to make sure it made good choices.

re: @phanimarupaka

So you build the base setter definitions and want to delegate the work to kpt in order to figure out building the patterns for all the fields ?

Yes

What if there is a value whose substring matches a setter but you don't want to parameterize it ? You will have to manually delete that substitution/pattern correct ?

Yes. This is less work than creating it manually. And if the result is a big mess you can always git revert and do it manually. Or revert, comment out the line you want ignored, run the generator again, and un-comment the preserved line.

I am not sure how common is this use-case to be baked into kpt cli.

I've written 9 kpt packages for my current project and used the sustr generator on 7 of them. The others didn't have any substitutions and only contained one file other than the kptfile.

On a side note actual value of _subst_9 must be huge here correct ? Currently you are leveraging nested substitutions here but that will go away with new design and you have to elaborate the pattern with all setters similar to terraform. The new pattern comment would look like<EMAIL_ADDRESS>
Correct. If you get rid of named substitutions they can't be re-used in other substitutions.
re: @frankfarzan

Note that there's little value in having substitutions defined as first class citizens in the Kptfile.

The value is:

being about to use the named substr multiple times without defining the pattern multiple times.
being able to use the named substr in other substrs without repeating yourself

I suggest kpt should support both the new inline anonymous substitutions and the current named substitutions. Named substitutions also allow using the same pattern in multiple places without having to re-define the pattern everywhere.
I also suggest merging named substitutions into setters, so that the substitution is just the default value of the setter. That way they can be both re-used and overridden with kpt cfg set.
For example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          default: ${tenant}-${environ}-${org}-${project-id-random-suffix}

I think that script is equivalent to (and can be provided as porcelain for)...

As @phanimarupaka mentioned, the generator script isn't just porcelain. It finds matches and generates the patterns for all substrs at the same time using all pre-defined setters. It's much less typing AND much less thinking, because the user dosn't even need to know what or where the substrs should be. The command does all that manual labor itself and the user just reviews the changes to make sure it made good choices.

On a related note, if you merge substr patterns into setters as default values, then you should automatically get the ability for substrs to be inherited into sub-packages as setters. This was another feature I was going to request, but I think merging setters and substrs is a better plan.
This would allow for re-use of named substitutions not just in the same package but in sub-packages. The sub-package could then mark the setter as required while in the parent package it's optional and defaults to the value of the substitution.

On a related note, if you merge substr patterns into setters as default values, then you should automatically get the ability for substrs to be inherited into sub-packages as setters. This was another feature I was going to request, but I think merging setters and substrs is a better plan.
This would allow for re-use of named substitutions not just in the same package but in sub-packages. The sub-package could then mark the setter as required while in the parent package it's optional and defaults to the value of the substitution.

The default would actually be the value(similar to terraform default) and not the pattern. The pattern will be added as a comment to the field itself in the resource configs.
I am not sure I followed the subpackages part though. Can you elaborate with an example ?

The default would actually be the value(similar to terraform default) and not the pattern. The pattern will be added as a comment to the field itself in the resource configs.
I am not sure I followed the subpackages part though. Can you elaborate with an example ?

The default would actually be the value(similar to terraform default) and not the pattern. The pattern will be added as a comment to the field itself in the resource configs.

I assume you mean this will be true with the new inline substitution syntax.
But what I'm suggesting is a default pattern, not a default value, and for a named setter/substr in the kptfile, not an inline substr. This would allow the value to be overridden by the user using kpt pkg set, but otherwise it would default to the substitution resulting from the pattern that depends on other setters.
I guess an alternate option (if you don't keep named substrs in the kptfile) would be to allow inline substitutions to be overridden by kpt pkg set, but that would then require storing the set value in the kptfile, in order to preserve it during inheritance and updating.

The default would actually be the value(similar to terraform default) and not the pattern. The pattern will be added as a comment to the field itself in the resource configs.

I assume you mean this will be true with the new inline substitution syntax.
But what I'm suggesting is a default pattern, not a default value, and for a named setter/substr in the kptfile, not an inline substr. This would allow the value to be overridden by the user using kpt pkg set, but otherwise it would default to the substitution resulting from the pattern that depends on other setters.
I guess an alternate option (if you don't keep named substrs in the kptfile) would be to allow inline substitutions to be overridden by kpt pkg set, but that would then require storing the set value in the kptfile, in order to preserve it during inheritance and updating.

Package Example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          default: ${tenant}-${environ}-${org}-${project-id-random-suffix}

Sub-Package Example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          required: true

With this, the pattern only needs to exist in the parent package kptfile and can be used in parent package and the sub-package. And if the user decides to kpt cfg set . project-id <value> they could override the value at the parent package and have it inherited into the sub-package. OR they could set project-id on the sub-package and have them be different.

Package Example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          default: ${tenant}-${environ}-${org}-${project-id-random-suffix}

Sub-Package Example:
openAPI:
  definitions:
    io.k8s.cli.setters.project-id:
      x-k8s-cli:
        setter:
          name: project-id
          required: true

With this, the pattern only needs to exist in the parent package kptfile and can be used in parent package and the sub-package. And if the user decides to kpt cfg set . project-id <value> they could override the value at the parent package and have it inherited into the sub-package. OR they could set project-id on the sub-package and have them be different.

@karlkfi Supporting explicit subs in addition to inline interpolation is not an unreasonable FR if they're referenced in many places. Here's an example use case where explicit setters is adding noise and inline interpolation makes more sense:
https://github.com/GoogleCloudPlatform/solutions-modern-cicd-anthos/blob/krm/krm/cicd_gitlab/Kptfile
We will incorporate this suggestion in new setter design.

@karlkfi Supporting explicit subs in addition to inline interpolation is not an unreasonable FR if they're referenced in many places. Here's an example use case where explicit setters is adding noise and inline interpolation makes more sense:
https://github.com/GoogleCloudPlatform/solutions-modern-cicd-anthos/blob/krm/krm/cicd_gitlab/Kptfile
We will incorporate this suggestion in new setter design.

I've extracted the request to merge setters and substrs to its own issue to keep this one focused on the substr generation. But they are closely related.
https://github.com/GoogleContainerTools/kpt/issues/1383

I've extracted the request to merge setters and substrs to its own issue to keep this one focused on the substr generation. But they are closely related.
https://github.com/GoogleContainerTools/kpt/issues/1383

I think this FR is probably still valid with kpt v1 syntax. It just needs some tweaking.
Basically with kpt v1 there's no more index of setters in the kptfile, so any script to do the substitution generation would need to read the entire set of resources, parse the inline comments, and extract a list of setters and their current values... I hope kpt already has a library function for this.
Hypothetically this could be done by reading the pipeline steps, finding the apply-setters step, and extracting the keys and values from the inputs, but that assumes that the kptfiles is a complete list and matches the keys and values in the resources themselves...
After somehow extracting a complete list of setter keys and values, the substitution generator could then do the same thing the code I shared does: find values that contain the setter values as substrings and generate substitutions for the, except just by applying a comment, since no kptfile changes will be needed (assuming the kptfile already has an apply-setters step with the right inputs for the setters).

@karlkfi Yes. This functionality a variant of apply-setters function and can be achieved with some tweaking to it as you mentioned. This qualifies to be a separate function.
I think the question here is, who should write and maintain this function and what should be the timeline? So this is more of a planning question which I would redirect to @mikebz @frankfarzan

Hmm, you're right. Since it no longer needs to modify the kptfile or make kpt cli calls it could be a kpt function. All it has to do is add kpt-set inline comments. I hadn't thought of that. That means anyone could write it.

@karlkfi I want to make sure we addressed the scenario.  If I can summarize what I read previously is that you'd like to replace many locations with one setter value at once.   I believe this is addressed here: https://catalog.kpt.dev/search-replace/v0.1/ but maybe not completely.  Happy to re-engage.

@mikebz That is not the requirement. This needs a custom function which reads the base setters and creates setter patterns for all the field values which have these setters as substring.
Input package:
apiVersion: v1
kind: Deployment
metadata:
  name: nginx # kpt-set: ${name}
  namespace: nginx-space

apiVersion: kpt.dev/v1alpha2
kind: Kptfile
pipeline:
  mutators:
    - image: gcr.io/kpt-fn/upsert-resource:unstable
      configMap:
         name: nginx

kpt fn eval --image gcr.io/kpt-fn/new-fn:v0.1 --include-meta-resources

Transformed resource:
apiVersion: v1
kind: Deployment
metadata:
  name: nginx # kpt-set: ${name}
  namespace: nginx-space # kpt-set: ${name}-space

Would using by-value-regex solve the problem here?  Would one just set the regex to be nginx and then have it replaced everywhere it matches?

Regex replace would work, but you'd have to build the regex and call it once for every setter.
What the original script did was broader in scope and worked for all setters all at once.
Hypothetically you could do them all with regexes in a for loop, but it would require parsing the kptfile, which makes it's hard to do in bash or with a cut & paste shell one-liner.
So making it a custom function still makes sense, and would make it much easier to build packages. You would just manually build the pipeline apply-setters configMap and run the function to add all the kpt-set inline comments.

Closing this issue due to no response. Create-setters function solves your problem. Please re-open the issue if you have any questions.

Looks pretty solid from the docs, thanks!
I'll let you know how it feels after I get a chance to use it in action.


Create issue_template.md

This issue template adds time tracking information to an issue report. The report now has two sections: the first (at the top) holds new fields for the assigned developer to provide an estimate and the second to provide the actual time spent resolving the issue.
The issue reporter's fields follow.

Typo in line 11 of the template https://github.com/ZeligsoftDev/CX4CBDDS/pull/43/commits/2bb0796dd8ef5344683d7be9e91e435d67e539fd#diff-e805b1f70ac9998da695a696fc0b7aefR11


Update dependencies

Takes https://github.com/MichMich/MagicMirror/pull/3153 (why does that always base against master despite the yaml configuring it against develop?) and updates othe rminor dependencies (not prettier v3 that will take a little time)

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@948910d). Click here to learn what that means.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             develop    #3155   +/-   ##
==========================================
  Coverage           ?   25.64%
==========================================
  Files              ?       53
  Lines              ?    11484
  Branches           ?        0
==========================================
  Hits               ?     2945
  Misses             ?     8539
  Partials           ?        0

why is the test failing? You are working against develop and it complains to be against master ...

o.k., rebasing solved this, so I will merge ...

why is the test failing? You are working against develop and it complains to be against master ...

wondering myself. created the PR accidentally against master and edited it to be based against develop. maybe thats the thing that somehow isnt working....