Using release tools from JDK6 on Travis produces sun.security.validator.ValidatorException

I'm having problems using release tools in Mockito project. Mockito release build uses JDK6. Stack trace (full log):
> Could not resolve all dependencies for configuration ':classpath'.
   > Could not resolve gradle.plugin.org.mockito:mockito-release-tools:0.3.9.
     Required by:
         :mockito:unspecified
      > Could not resolve gradle.plugin.org.mockito:mockito-release-tools:0.3.9.
         > Could not get resource 'https://plugins.gradle.org/m2/gradle/plugin/org/mockito/mockito-release-tools/0.3.9/mockito-release-tools-0.3.9.pom'.
            > Could not GET 'https://plugins.gradle.org/m2/gradle/plugin/org/mockito/mockito-release-tools/0.3.9/mockito-release-tools-0.3.9.pom'.
               > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      > Could not resolve gradle.plugin.org.mockito:mockito-release-tools:0.3.9.
         > Could not get resource 'https://plugins.gradle.org/m2/gradle/plugin/org/mockito/mockito-release-tools/0.3.9/mockito-release-tools-0.3.9.pom'.
            > Could not GET 'https://plugins.gradle.org/m2/gradle/plugin/org/mockito/mockito-release-tools/0.3.9/mockito-release-tools-0.3.9.pom'.
               > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Currently considered solution: avoid building on Java6, use animal sniffer to detect Java6 incompatibilities (https://github.com/mockito/mockito/pull/1021)
Useful resources:

http://stackoverflow.com/questions/29584328/gradlew-bat-and-gradlew-sslhandshakeexception
https://github.com/arteme/gradle-trust-all
http://stackoverflow.com/questions/3242335/how-to-use-ssl-with-a-self-signed-certificate-in-groovy
https://discuss.gradle.org/t/unable-to-download-plugins-due-to-ssl-pkix-error/21376
https://discuss.gradle.org/t/gradle-1-12-wrapper-fails/2534/19
https://discuss.gradle.org/t/gradle-1-12-wrapper-fails-unable-to-find-valid-certification-path-to-requested-target/2079
https://discuss.gradle.org/t/urgent-ssl-apache-configuration-for-services-gradle-org-is-bad/8808/13
http://stackoverflow.com/questions/29584328/gradlew-bat-and-gradlew-sslhandshakeexception#answer-30924895

We stopped building on Java 6. We're using animal sniffer Gradle plugin to validate Java6 compatibility.


Add include_path_in_metadata_filename kwarg to partition functions

The goal of this issue is to add an include_path_in_metadata_filename kwarg to the partition functions. If it is True, the filename attribute in the element metadata should include the full path to the filename and file_directory will be None. If it is False, the filename attribute will only contain the filename, and file_directory will contain the path. This will help users choose the metadata structure that best suits their use case.

Should the default for this kwarg be True or False?

And should this only apply when partitioning via filename and not when via file?
Also, what is the desired behavior for this when metadata_filename is defined?

We can default to False since that's the current behavior. Should apply if there's a value for metadata_filename, i.e. if filename is used or the user passes in metadata_filename.

So when a user passes in a value to metadata_filename and include_path_in_metadata_filename is True, the metadata.filename should be the value passed to metadata_filename + the full path, yes?  I'm wondering if there would ever be a scenario when concatenating those would produce a nonexistent file path.

It could be nonexistent, we don't need to check if it exists though. We're letting the user set the filename in the metadata to whatever they'd like.

Should this be closed @MthwRobinson? If so, do you want me to close issues myself after a PR has been accepted?

It looks like I'm going to have to refactor the changes I'd done previously for metadata_filename if we want metadata_filename + <path> to be the filename whenever include_path_in_metadata_filename is True. Because the changes for metadata_filename happen within each parser, the metadata_filename is passed as the actual filename whenever ElementMetadata is initialized, so the __post_init__ logic that captures the file_directory in there results in the file_directory being None (because the filename doesn't necessarily exist in the path), so we're losing the path--didn't realize that was something to pay attention to before


Add the Mixtral model.

Will these PR support the Quantized GGUF models like mistral 7B or just the original one?
Thanks

Will these PR support the Quantized GGUF models like mistral 7B or just the original one?
Thanks

It won't, this will be done in a separate PR hopefully pretty soon.

Will these PR support the Quantized GGUF models like mistral 7B or just the original one?
Thanks

Support for the quantized versions using GGUF files was just merged in #1442 . You can see an example of how to run this in this README.


Add GlobalUpdate to docs

#2

can you please elaborate on this issue

We need to add a mention of GlobalUpdate to the documentation (with example, probably), which I added in #2.

See more hypeertech/nestjs-telegraf#898


Colab notebooks: Cannot interpret 'DType(AnyFloat)' as a data type

When I run the intro colab notebook I am unable to run the first cell initializing a Ray.
Running:
ray = v3d.Ray(pos=[0, 0, 0], dir=[1, -1, 1])
Error:
"Invalid shape annotation FloatArray[*shape 3].Cannot interpret 'DType(AnyFloat)' as a data type".

Thank you for reporting. I believe the issue is a version missmatch between etils and visu3d (visu3d/dataclass_array expect an older version of etils). I'll trigger a new release of visu3d today which should fix the issue

visu3d 1.3.0 was released which should fix the issue.
It seems the colab still has some issue in some cells with ecolab.auto_plot_images() which expect a more recent version of mediapy.
TypeError: show_images() got an unexpected keyword argument 'return_html'

But this is a different issue. Fo now it can be fixed by replacing:
rgb = ex['color_image']
rgb

By:
rgb = ex['color_image']
media.show_images(rgb)

Will contact the mediapy team to see if they can trigger a release.

This solved my issues.  Thank you!


GetCoarseToFineMap() crashes in parallel after using GetDerefinementTransforms()

I am not sure if I am using this interface properly. Here's a minimal example which creates a mesh, refines it twice, and then derefines it once. Refining twice seems essential to the issue.

using namespace std;
using namespace mfem;

int main(int argc, char *argv[])
{
   MPI_Session mpi(argc, argv);

   const char *mesh_file = "../data/star.mesh";

   OptionsParser args(argc, argv);
   args.AddOption(&mesh_file, "-m", "--mesh", "Mesh file to use.");
   args.ParseCheck();

   Mesh serial_mesh(mesh_file);
   serial_mesh.EnsureNCMesh();

   ParMesh pmesh(MPI_COMM_WORLD, serial_mesh);

   Array<int> refs;
   refs.Append(0);

   pmesh.GeneralRefinement(refs);
   pmesh.GeneralRefinement(refs);

   mfem::Vector zero(pmesh.GetNE());
   zero = 0.;
   pmesh.DerefineByError(zero, 1.0);

   const CoarseFineTransformations &cft =
      pmesh.ncmesh->GetDerefinementTransforms();
   Table coarse_to_fine;
   cft.GetCoarseToFineMap(pmesh, coarse_to_fine);

   return 0;

}

I am trying to obtain a map of the element numbers from the mesh before it was derefined onto the mesh after it was derefined. This seems to work in serial but crashes on 2 procs.

I looked into this a little. It looks like it has something to do with this line:
         index = -1 - elements[coarse[i]].rank;

where the index gets overloaded with a rank encoding, and then assigned as the parent field:
transforms.embeddings[i].parent = index;

But then later, this value gets used directly to index into an array in the GetCoarseToFineMap() routine, causing an array access error.

In looking at PR #2074, it looks like this use case was maybe never fully implemented. Also I guess the git blame erroneously shows @jakubcerveny as the author due to some cutting and pasting or refactoring. @kmittal2 or @v-dobrev do you possibly know more about this?

It seems like the issue is that for GetRefinementTransforms, we properly set transforms.embeddings.SetSize(NElements);. But we do not do is in GetDerefinementTransforms, which means that the size of transforms is leaf_elements.Size() and as a result it includes information for elements from the ghost layer and thus the index is negative.

Sounds right. Here's the case on 2 procs with 1 refinement on each processor:

The coarse_to_fine table is constructed successfully without the array access error, but looks like this:
proc 0:
[row 0]
    0    1    2    3
[row 1]
    4
[row 2]
    5    8    7    6
[row 3]
    9

proc 1:
coarse to fine table
[row 0]
    0    1    2    3
[row 1]
    4
[row 2]
    5    8    7    6
[row 3]
    9

which is showing all the elements on both processors because it is including the ghost layer.
So I am not sure what the right solution is here. Does embeddings need the ghost layer elements in other contexts? If not, we could remove it. If it does, we could try to filter out the ghost elements when building the coarse fine map. But I am not sure how to do that either yet, since we don't have access to the ncmesh metadata since GetCoarseFineMap is a method on CoarseFineTransformations, not on ncmesh.

Upon further investigation, it seems that if prior to derefinement leaf_elements contain refined-ghost-elements, and these ghost elements get derefined, their element_type = 0 which means that they no longer exist (even though they are still vaild leaf elements on the processor that they were originally located on).
Since there is so much going on during refinement and derefinement, I have not been able to pin point how we could properly fix this. One way to address this might be to eliminate the rows from CoarseFineTransformations.Embeddings that have invalid elements in GetCoarseToFineMap. Maybe @v-dobrev or @jakubcerveny have better ideas.

I guess a first question is: would we ever want ghost elements to be supplied in this coarse_to_fine Table. I think the answer is no, it doesn't fit my use case, but maybe there was some other motivating use case for this code that I'm not aware of.

Agreed.
GetCoarseToFineMap was originally written with post-refinement scenario in mind, and was not really used post-derefinement until recently. We fixed one issue with #2074, and you have discovered another use one where it fails for derefinement.

OK so after studying this problem (and my own code), I should probably provide a bit of background.
The problem with derefinement is that it's a lot more tricky than refinement, especially in parallel: there are pathological cases where the ghost layer doesn't provide enough information to reconstruct the new (coarse) ghost layer correctly. These are cases that are called "complex derefinements" in the code and they happen already in 2D when the fine elements of some future coarse element are owned by three or more different ranks. The first child's rank (I think), that will end up owning the coarse element may not see enough ghost elements to build its new ghost layer. To avoid these cases, there always is a slight rebalance first in each parallel derefinement, where the complex cases are removed by migrating all fine childs to the owner of the future coarse element. This step creates a valid ghost layer, and all derefinements become "simple".
This shift in ownership sometimes has the side effect that some of the other ranks no longer see the coarse element, not even in their ghost layer. Even if the coarse element ends up just behind the second or third rank's ghost layer, nothing can be said of it, because it may no longer even be a real element: the regions beyond the ghost layer are pruned (derefined) as much as possible.
This is why Embedding::parent may be negative for some of the original fine elements, indicating that the fine element cannot be linked to any element in the new (coarse) mesh. (I'm not sure anymore if this can happen to any fine element or just ghost elements, but probably both).
So far it was sufficient to just skip these fine elements (try grepping the code for parent < 0). There is one case in ParFiniteElementSpace::ParallelDerefinementMatrix where it is necessary to at least determine on which rank is the new coarse element located. That's why ParNCMesh::Derefine sneaks in the rank number as -1-rank, in the parent member. The parent is still invalid though.
I think CoarseFineTransformations::GetCoarseToFineMap was originally not designed at all for derefinement. But hopefully it can be fixed by skipping fine elements with parent < 0 too. (On a related note, I think the method should also be split into several methods because right now it seems to be doing quite a lot of stuff).
Finally, as for Bob's use case:

I am trying to obtain a map of the element numbers from the mesh before it was derefined onto the mesh after it was derefined.

Do you have to use GetCoarseToFineMap? This seems doable with the original CoarseFineTransformations struct, where you just look directly at the embeddings. The parent, if nonnegative, is the coarse element number in the new mesh. The method GetCoarseToFineMap is a later, special-purpose addition to the struct.

Thanks for that background Jakub.
After a derefinement, the embeddings in the CoarseFineTransformations struct correspond to the "fine" elements, right, i.e., the elements before the derefinement? I do want the mapping in the other direction, and I think that's what GetCoarseFineMap() does: creates a table that inverts that mapping.
I think what we could do would be to skip the ghost elements on the fine mesh  while inverting the mapping. But it wasn't clear to me how to test if embeddings[i] corresponds to a ghost element from the context where this inversion happens.
I thought about adding a 'ghost' field to the embeddings structure and carrying that around, but that's a memory overhead that might not be worth it just for this use case.

Oh, OK, I thought you needed the other direction.
To only process non-ghosts, just take the first N embeddings where N is the number of regular elements in the fine mesh.
But as I said I'm not sure non-ghost are guaranteed to have a valid parent, I think this isn't the case because ParallelDerefinementMatrix is also checking that.

Unfortunately I don't think we have that information either without changing something. Although there's an argument named "fine_mesh" in GetCoarseToFineMap(), it's actually the coarser mesh when called after a derefinement. Probably we should change that argument name to "adapted_mesh" or something. Embeddings seems to be the structure that carries around information about the prior state of the mesh, but I don't think it contains that information.

Discussion continued in #2507.


tasks.json: isDefault can only be set to true?

Does this issue occur when all extensions are disabled?: Yes/No
$ code --disable-extensions .
sh: 0: getcwd() failed: No such file or directory
Error: ENOENT: no such file or directory, uv_cwd
    at process.wrappedCwd [as cwd] (internal/bootstrap/switches/does_own_process_state.js:129:28)
    at setupCurrentWorkingDirectory (/usr/share/code/resources/app/out/bootstrap-node.js:1:155)
    at Object.<anonymous> (/usr/share/code/resources/app/out/bootstrap-node.js:1:260)
    at Module._compile (internal/modules/cjs/loader.js:1125:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1155:10)
    at Module.load (internal/modules/cjs/loader.js:982:32)
    at Module._load (internal/modules/cjs/loader.js:823:14)
    at Function.f._load (electron/js2c/asar_bundle.js:5:12913)
    at Module.require (internal/modules/cjs/loader.js:1006:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/usr/share/code/resources/app/out/cli.js:1:97)
    at Module._compile (internal/modules/cjs/loader.js:1125:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1155:10)
    at Module.load (internal/modules/cjs/loader.js:982:32)
    at Module._load (internal/modules/cjs/loader.js:823:14)
    at Function.f._load (electron/js2c/asar_bundle.js:5:12913)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 {
  errno: -2,
  code: 'ENOENT',
  syscall: 'uv_cwd'
}

VS Code Version:
Version: 1.64.0
Commit: 5554b12acf27056905806867f251c859323ff7e9
Date: 2022-02-03T04:23:11.224Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS Version:
OS: Linux x64 5.15.15-76051515-generic

Steps to Reproduce:

Enter the following into tasks.json

            "group": {
                "kind": "build",
                "isDefault": false
            },

Review warning

Value is not accepted. Valid values: {"kind":"build","isDefault":true}, {"kind":"test","isDefault":true}, "build", "test", "none".(1)

I assume that you must elide the isDefault parameter to get the equivalent "isDefault":false behavior, but that is not obvious. I would much rather explicitly state my intention.

It appears the correct answer is to replace the entire object with the string "build", which is neither intuitive or obvious.
            "group":"build",


Corrupted dir pair on disk 2.0 after writing to a file on disk 2.1

Our bootloaders work on Zephyr RTOS 2.7.6 using LittleFS 2.2.0, applications - on Zephyr RTOS 3.7.0-rc1 using LittleFS 2.8.1 (the bug described below also appears with LittleFS 2.9.3). File system is located on the W25Q128JVSIQ chip.
How I reproduce this bug:

the bootloader mounts empty /com fs.
the bootloader creates /com/log/log.0000 file and writes small logs.
the bootloader run the application which also mounts /com fs.
the application writes to existing /com/logs/log.0000 file some logs.
I'm doing a power reset.
the bootloader tries to mount /com fs, but finds corrupted dir pair (non-root), then mounts empty /com fs.

But if step 4 is interrupted after first lfs_file_sync due to a power reset, then the bootloader finds corrupted dir pair when the file size is around 8000 bytes or larger.
I'm currently searching for the cause of this problem and would appreciate any help.

@geky, I found that even opening an existing file in Littlefs 2.9.3 causes Littlefs 2.2.0 to use a previous revision's block.


Blacked all demo notebooks via formatnb.py

All note books were formatted using the formatnb.py application.
Also, %autosave 0 cells were removed because the formatter removes cell output (which was the purpose for including the autosave limitation.)
Finally, the !git clone <repo> lines were replaced with subprocess.run(['git', 'clone', '<repo>']) to be strictly compatible with the formatter.

@aaraney @awlostowski-noaa @hellkite500 @bavant84
Tagging you on this to bring to your attention the useful script nbformat.py.
usage:
python nbformat.py notebookyouwanttostandardizeformattingin.ipynb

for any python notebook, it will

attempt to apply black formatting to each code cell*
remove any output from the cells for better version control
trim the python version information

note: If it encounters a cell with %cell_magic or !kernel_execution_commands, which are both invalid python (but fine in a notebook), it will skip that cell with a warning and leave it unchanged.

@jameshalgren this is great! (Thanks @groutr) Thanks for bringing it to my attention. This seems like something that could easily be implemented as a pre-commit hook.


How to map different keys for different keyboards?

Keyd is amazing, I use karabiner on macos, keyd is perfect replacement for karabiner on linux, keyd is more faster and friendly. but karabiner able to use different profile to handle different device, so I have a hhkb keyboard that layout has litter different with standard keyboard layout, so how to map different keys for different keyboards.

You can put multiple configuration files in /etc/keyd/, each with a different [ids] section. keyd will apply the proper config for each keyboard based on its ID. See the manual for details.

Thanks

Is this written in the manual? I could not find anything about it.

@leg7 see man keyd https://github.com/rvaiya/keyd/blob/master/docs/keyd.scdoc


Switch to the more-reliable Selenium-based tests by using web-driver

To mitigate flaky failures we may want to consider adding retries to tests. The CI flakiness has gone down ever since we updated npm but this should still be considered for random local test failures.
cc @javiercn @SteveSandersonMS

Yes. I think that adding a global retry policy for the tests is a good way to improve the resiliency of these kind of tests. There are samples documenting how to do this with xUnit and it can help with selenium time outs.
Another option is to drastically increment selenium timeouts (for lets say 2 minutes) at the cost of tests taking longer to fail. (It should not affect existing running tests).

For the #237 issue make sure it is also resolved as part of these changes.

I showed them how our tests run in selenium the other day.

@ryanbrandenburg Is there anything to do here after the changes you already did?

Yeah, we can re-open if we experience new/continued problems.


Dockerfile: Support multiple stage build in manager and cli

Same as #23
I am not sure if we should copy the CLI from the docker container. But I follow the convention to use centos instead of alpine to get the runnable binary from the container.
/assign @YujiOshima

PTAL @YujiOshima

/lgtm


Update the Consumes / Produces MIME Type selection to include common types

The Consumes/Produces should include the following:

application/xml
application/atom+xml
application/json
application/x-www-form-urlencoded
text/plain
text/xml

and/or allow for entering the specific MIME type. There are numerous vendor specific types, image types etc.

Tested in Dev and works appropriately.

fixed in #47


Tell webviews about a11y

Not sure if style is the best place for this, but the changes are only CSS so it makes some amount of sense.

cc @misolori these classes may be worth noting in the design toolkit somewhere? Or if you have an idea for best place to document them I can look into that


the title's height should respect the bar height

Faced this problem in an app.

would you be able to put together a codepen showing the differences? Thanks

Im a bit busy right now, but here's the issue: I had a project which header was 80px tall and the sub-header was 60px tall. I changed the header size to 80px, but noticed that the TOP for the sub-header was wrong, cause it uses the header height * 2 and a sum of the heights.

I had a project which footer, header and subheader had different heights. Header was 80px, subheader was 60px and footer was 40px. The problem is that the titles used the header's height, so, subheader's title was 80px and footer's title too.

@SidFerreira any luck putting together a codepen or demo to show the difference? Tested this out locally and it didn't seem to solve the issue you described

I just took some time and created a project describing the issue:
https://github.com/SidFerreira/funkyTitles

The project has custom sizes for the headers:
$bar-height:						200px;
$bar-footer-height:               	150px;
$bar-subheader-height:            	100px;
$bar-subfooter-height:            	70px;

You will see that the title will be based on 200 pixels.

I think we'll pass on this one. It seems like a very particular use case and if people don't use sass, it will still cause issues.


status-observe stalls after 20 - 60 hrs

I import CoAPClient from this module in my own python script to retrieve status messages from my Philips AC2889/10 and send it on to MQTT.
Like this
        client = await CoAPClient.create(host="mxchip", port=5683)
        async for status in client.observe_status():
            (rc, mid) = mqtt.publish("aircontrol", json.dumps(status))

I can get messages in irregular intervals for 20 ... 60 hrs or so. After that the thread is still alive but no more messages are coming through. If I restart the whole script everything works as expected again until it doesn't.
I noticed, though, that every time status-observe stalls and I re-start it the Runtime starts from zero again. Could this be a hint why it stalls? Does anyone know what this Runtime actually means?

I have no idea, but if you find a way to make this more stable, I'm pretty sure many people will appreciate that.


[cinder-csi-plugin] added dnsPolicy value for nodeplugin

What this PR does / why we need it:
This PR adds dnsPolicy value to cinder-csi-plugin's Helm chart. The default value is set to ClusterFirst, which the current default.
Which issue this PR fixes(if applicable):
fixes https://github.com/kubernetes/cloud-provider-openstack/issues/2481
Special notes for reviewers:

Release note:

[cinder-csi-plugin] Added .csi.plugin.nodePlugin.dnsPolicy value

Any reason to not just set this directly to ClusterFirstWithHostNet as in Manila chart?

Any reason to not just set this directly to ClusterFirstWithHostNet as in Manila chart?

@dulek Sure, changed as requested. Initially I've set it to ClusterFirst as that's what currently used by the DaemonSet.

I wasn't sure this is the right way, but it makes a lot of sense to be consistent here.
/approve


Make query native, non native causes hibernate exception

https://jenkins.fdp.osgp.cloud/view/SMHE-cucumber/job/gxf-apps-smart-metering-integration-smhe-cucumber-build/893/


Is urllib3 < 1.25 requirement still needed?

In April 2019 the new release from urllib3 (1.25) was not supported by requests. Around this time, urllib3 has been added to the dependencies of azure-iot-device (v2) due to a bug in the pip-dep-resolver (see here).
Since then, requests has been updated to support urllib3 1.25.3 (here), so I think the dependency on urllib3 could be relaxed from
>1.21.1,<1.25 to >1.21.1,<1.26,!=1.25.1,!=1.25.0.

This is correct. Thank you for bringing this to our attention. We will make this update.

Currently tracked in #305

@oerpli, thank you for your contribution to our open-sourced project! Please help us improve by filling out this 2-minute customer satisfaction survey


Update network watcher workbook name

Fixes #
Proposed Changes

@preetikr can you please review the changes?

Yes, I'll review @morshabi - assigned to myself


support configured from xml string

Web Application deploy  Cluster  behind Load Balancing ,some times we using a database store config settings without using config file,
so if we store this config xml segment into db ,all web server read xml config apply to cacheManager:
<cacheManager.Redis>
  <connections>
    <connection id="redisLevel" database="5">
      <endpoints>
        <endpoint host="jwsoft-server2" port="6379" />
      </endpoints>
    </connection>
  </connections>
</cacheManager.Redis>

<cacheManager xmlns="http://tempuri.org/CacheManagerCfg.xsd">
  <managers>
    <cache name="defaultCache" updateMode="Up" enableStatistics="false" enablePerformanceCounters="false" backplaneName="redisLevel" backplaneType="CacheManager.Redis.RedisCacheBackplane, CacheManager.StackExchange.Redis" serializerType="CacheManager.Serialization.Json.JsonCacheSerializer,CacheManager.Serialization.Json">
      <handle name="firstLevel" ref="systemRuntimeHandle" expirationMode="Sliding" timeout="20s" />
      <handle name="redisLevel" ref="redisHandle" expirationMode="None" isBackplaneSource="true" />
    </cache>
  </managers>

  <cacheHandles>
    <handleDef id="systemRuntimeHandle" type="CacheManager.SystemRuntimeCaching.MemoryCacheHandle`1, CacheManager.SystemRuntimeCaching" defaultExpirationMode="Sliding" defaultTimeout="5m" />
    <handleDef id="redisHandle" type="CacheManager.Redis.RedisCacheHandle`1, CacheManager.StackExchange.Redis" defaultExpirationMode="Absolute" defaultTimeout="5m" />
  </cacheHandles>
</cacheManager>

Is there any way to support this?

I added Microsoft.Extensions.Configuration based support, with that, it should be possible pretty easily. You can either write a configuration provider for your database or construct config sections in the way CacheManager understands it.
Or you simply use the "by code" configuration option of CacheManager, read your DB configuration and construct whatever is needed.
So, as you can see, I think there are a lot and enough options to configure CacheManager already, I'm not planning to add anything more right now.
And you should be able to accomplish your idea with some custom code I think.
Let me know how it goes or if you find any obstacles ;)

@jrt324 closing this one for now, let me know if you still having issues solving this...


"change" & "set" on spells

At the current time, it is not possible AFAIK to use change or  set as part of a spell. The problem appears to be related to targets. I tried both of the following syntaxes, both are throwing a server-side error of this type:
groovy.lang.MissingMethodException: No signature of method: mythos.common.afterPlay() is applicable for argument types: (mythos.common$_run_closure12$_closure25) values: [mythos.common$_run_closure12$_closure25@d9e9663]

Syntaxes tried:
spell {
    targets 1 {
        creature true
        ownedBy "opponent"
        zone "Battlefield"
    }
}
afterPlay {
    set HEALTH to 0 to { targets() }
}

Or:
spell {
    targets 1 {
        creature true
        ownedBy "opponent"
        zone "Battlefield"
    }
}
afterPlay {
    set HEALTH to 0 to targets
}

Posted on wrong repo, see this instead: https://github.com/Cardshifter/Cardshifter/blob/mods/Documentation/2- Card Library - Effects.md


Update geonames_postgis_import.md

I was having a problem loading the rows where the alternatenames column included no english characters.
The error was:
DataError: value too long for type character varying(10000)
CONTEXT:  COPY geoname, line 1100, column alternatenames: "Caerwynt,Gorad Vinchehstehr,Ouinchetre,Ouînchêtre,Uinchestr,Uinchester,Vincester,Vinchester,Winche..."
You can replicate by loading GB.txt
Anyways setting the field to text fixes the issue, so I'm creating this pull request if you want to also correct on the main repo

Excellent - thanks!


Updated Drawer comp to work with mui v5 style engine and updated docs

Fixes #BLUI-3121
DrawerFooter
Changes proposed in this Pull Request:
Update styles to use Mui-v5 Styled components
Update component to extend sx prop
Test:
There is a showcase branch feature/3050-channel-value-mui-v5-styles-update that you can use to test this.
When testing, ensure that there are no breaking changes and that the old API properties still work the same and that you can still style things with inline styles as well as using our classes prop.
Also, test out the new sx prop extension. You can apply styles to the root by using sx directly on the component as well as by targeting nested items by the generated classnames.

DrawerFooter

I'm guessing this PR is for the top-level Drawer and not DrawerFooter right?

DrawerFooter

I'm guessing this PR is for the top-level Drawer and not DrawerFooter right?

Yes it is for top level Drawer comp

sideBorder default styles and sx overrides are broken. Here's the result of adding these styles
sideBorder={true}   sx={{ '& .BluiDrawer-sideBorder': { width: '40px', backgroundColor: 'orange' } }}

sideBorder default styles and sx overrides are broken. Here's the result of adding these styles sideBorder={true} sx={{ '& .BluiDrawer-sideBorder': { width: '40px', backgroundColor: 'orange' } }}

strang that looks diff than what I saw yesterday, I was using something like '& .BluiDrawer-sideBorder': { p: '24px', backgroundColor: 'green' } and had this...

hmmm... interesting @jeffvg. I'll try a fresh clone one more time just to be sure.

I tried on a fresh clone multiple times now with no luck on resolving the issue I have.

@daileytj Here's what I see using your code snippet from above:

sx={{ '& .BluiDrawer-sideBorder': { width: '40px', backgroundColor: 'orange' } }}

I tried by checking out dev branches on both comp lib and showcase. Applied these changes, but found the same result :
sideBorder={true}  classes={{sideBorder: classes.sideborder}}
   sideborder: {
        width: '40px',
        backgroundColor: 'orange'
    }

Here's the screenshot after applying these changes :


Installation Error

I am getting the following Error when I try to install TabMon:

Here is the log that is generated:
[151C:0384][2015-10-27T14:49:02]i001: Burn v3.9.1208.0, Windows v6.1 (Build 7601: Service Pack 1), path: C:\Users\poverpec\Desktop\InstallTabMon.exe, cmdline: '-burn.unelevated BurnPipe.{B9E27659-0675-464B-A33B-D55AF1AA8034} {C6320831-8E19-4C19-A115-EADD3D7FF527} 6104 '
[151C:0384][2015-10-27T14:49:02]i000: Initializing string variable 'InstallFolder' to value '[ProgramFilesFolder]TabMon'
[151C:0384][2015-10-27T14:49:02]i000: Initializing string variable 'InstallFolder2' to value '[WindowsVolume]Postgres'
[151C:0384][2015-10-27T14:49:02]i000: Initializing numeric variable 'OptionInstallPostgres' to value '1'
[151C:0384][2015-10-27T14:49:02]i000: Initializing numeric variable 'OptionCreateStartMenuShortcuts' to value '1'
[151C:0384][2015-10-27T14:49:02]i000: Initializing string variable 'PostgresPort' to value '5432'
[151C:0384][2015-10-27T14:49:02]i000: Initializing string variable 'PostgresUsername' to value 'tabmon'
[151C:0384][2015-10-27T14:49:02]i000: Initializing string variable 'PostgresPassword' to value 'password'
[151C:0384][2015-10-27T14:49:02]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902.log'
[151C:0384][2015-10-27T14:49:02]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Users\poverpec\Desktop\InstallTabMon.exe'
[151C:0384][2015-10-27T14:49:02]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'C:\Users\poverpec\Desktop'
[151C:0384][2015-10-27T14:49:02]i000: Setting string variable 'WixBundleName' to value 'TabMon'
[151C:15E4][2015-10-27T14:49:02]i000: Setting version variable 'WixBundleFileVersion' to value '2.0.5762.41569'
[151C:0384][2015-10-27T14:49:02]i100: Detect begin, 4 packages
[151C:0384][2015-10-27T14:49:02]i000: Setting string variable 'NETFRAMEWORK45' to value '378389'
[151C:0384][2015-10-27T14:49:02]i000: Setting numeric variable 'HasPowershellVersion3' to value 1
[151C:0384][2015-10-27T14:49:02]i052: Condition 'NETFRAMEWORK45 >= 378389' evaluates to true.
[151C:0384][2015-10-27T14:49:02]i101: Detected package: NetFx45Web, state: Present, cached: None
[151C:0384][2015-10-27T14:49:02]i101: Detected package: postgresql.exe, state: Absent, cached: None
[151C:0384][2015-10-27T14:49:02]i101: Detected package: MainPackage, state: Absent, cached: None
[151C:0384][2015-10-27T14:49:02]i101: Detected package: PostgresInitializer, state: Absent, cached: None
[151C:0384][2015-10-27T14:49:02]i052: Condition 'HasPowershellVersion3' evaluates to true.
[151C:0384][2015-10-27T14:49:02]i199: Detect complete, result: 0x0
[151C:15E4][2015-10-27T14:50:46]i000: Setting numeric variable 'OptionInstallPostgres' to value 1
[151C:0384][2015-10-27T14:50:46]i200: Plan begin, 4 packages, action: Install
[151C:0384][2015-10-27T14:50:46]w321: Skipping dependency registration on package with no dependency providers: NetFx45Web
[151C:0384][2015-10-27T14:50:46]i052: Condition 'OptionInstallPostgres' evaluates to true.
[151C:0384][2015-10-27T14:50:46]w321: Skipping dependency registration on package with no dependency providers: postgresql.exe
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleLog_postgresql.exe' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_0_postgresql.exe.log'
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleRollbackLog_postgresql.exe' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_0_postgresql.exe_rollback.log'
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleRollbackLog_MainPackage' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_1_MainPackage_rollback.log'
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleLog_MainPackage' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_1_MainPackage.log'
[151C:0384][2015-10-27T14:50:46]i052: Condition 'OptionInstallPostgres' evaluates to true.
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleRollbackLog_PostgresInitializer' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_2_PostgresInitializer_rollback.log'
[151C:0384][2015-10-27T14:50:46]i000: Setting string variable 'WixBundleLog_PostgresInitializer' to value 'C:\Users\poverpec\AppData\Local\Temp\TabMon_20151027144902_2_PostgresInitializer.log'
[151C:0384][2015-10-27T14:50:46]i201: Planned package: NetFx45Web, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[151C:0384][2015-10-27T14:50:46]i201: Planned package: postgresql.exe, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: None
[151C:0384][2015-10-27T14:50:46]i201: Planned package: MainPackage, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[151C:0384][2015-10-27T14:50:46]i201: Planned package: PostgresInitializer, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[151C:0384][2015-10-27T14:50:46]i299: Plan complete, result: 0x0
[151C:0384][2015-10-27T14:50:46]i300: Apply begin
[17D8:02D4][2015-10-27T14:50:47]i000: Caching bundle from: 'C:\Users\poverpec\AppData\Local\Temp{f3e0f9a3-42d5-4e51-ba66-d9ea9f1d5e34}.be\InstallTabMon.exe' to: 'C:\ProgramData\Package Cache{f3e0f9a3-42d5-4e51-ba66-d9ea9f1d5e34}\InstallTabMon.exe'
[17D8:02D4][2015-10-27T14:50:47]i320: Registering bundle dependency provider: {f3e0f9a3-42d5-4e51-ba66-d9ea9f1d5e34}, version: 2.0.5762.41569
[17D8:0788][2015-10-27T14:50:48]i305: Verified acquired payload: postgresql.exe at path: C:\ProgramData\Package Cache.unverified\postgresql.exe, moving to: C:\ProgramData\Package Cache\E00C723134E29DFCA28E476541F7559881647872\postgresql.exe.
[17D8:0788][2015-10-27T14:50:48]i305: Verified acquired payload: MainPackage at path: C:\ProgramData\Package Cache.unverified\MainPackage, moving to: C:\ProgramData\Package Cache{536D8BB3-4D4F-4FAD-AEFA-EB7944FEB174}v2.0.2\TabMon.msi.
[17D8:0788][2015-10-27T14:50:48]i305: Verified acquired payload: PostgresInitializer at path: C:\ProgramData\Package Cache.unverified\PostgresInitializer, moving to: C:\ProgramData\Package Cache{8C3192D8-9D23-4C20-BBCE-459B898CD916}v<IP_ADDRESS>\TabMonServiceInstallerDBInitializer.msi.
[17D8:02D4][2015-10-27T14:50:48]i301: Applying execute package: postgresql.exe, action: Install, path: C:\ProgramData\Package Cache\E00C723134E29DFCA28E476541F7559881647872\postgresql.exe, arguments: '"C:\ProgramData\Package Cache\E00C723134E29DFCA28E476541F7559881647872\postgresql.exe" --mode unattended --prefix "C:\Postgres" --extract-only 1'
[151C:0384][2015-10-27T14:51:21]i319: Applied execute package: postgresql.exe, result: 0x0, restart: None
[17D8:02D4][2015-10-27T14:51:21]i323: Registering package dependency provider: {536D8BB3-4D4F-4FAD-AEFA-EB7944FEB174}, version: 2.0.2, package: MainPackage
[17D8:02D4][2015-10-27T14:51:21]i301: Applying execute package: MainPackage, action: Install, path: C:\ProgramData\Package Cache{536D8BB3-4D4F-4FAD-AEFA-EB7944FEB174}v2.0.2\TabMon.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" INSTALLFOLDER="C:\Program Files (x86)\TabMon " INSTALLSHORTCUTS="1"'
[151C:0384][2015-10-27T14:51:32]i319: Applied execute package: MainPackage, result: 0x0, restart: None
[17D8:02D4][2015-10-27T14:51:32]i325: Registering dependency: {f3e0f9a3-42d5-4e51-ba66-d9ea9f1d5e34} on package provider: {536D8BB3-4D4F-4FAD-AEFA-EB7944FEB174}, package: MainPackage
[17D8:02D4][2015-10-27T14:51:32]i323: Registering package dependency provider: {8C3192D8-9D23-4C20-BBCE-459B898CD916}, version: <IP_ADDRESS>, package: PostgresInitializer
[17D8:02D4][2015-10-27T14:51:32]i301: Applying execute package: PostgresInitializer, action: Install, path: C:\ProgramData\Package Cache{8C3192D8-9D23-4C20-BBCE-459B898CD916}v<IP_ADDRESS>\TabMonServiceInstallerDBInitializer.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" INSTALLFOLDER="C:\Program Files (x86)\TabMon" POSTGRESFOLDER="C:\Postgres" PORT="5432" USERNAME="tabmon" PASSWORD="password"'
[17D8:02D4][2015-10-27T14:51:43]e000: Error 0x80070643: Failed to install MSI package.
[17D8:02D4][2015-10-27T14:51:43]e000: Error 0x80070643: Failed to execute MSI package.
[151C:0384][2015-10-27T14:51:43]e000: Error 0x80070643: Failed to configure per-machine MSI package.
[151C:0384][2015-10-27T14:51:43]i319: Applied execute package: PostgresInitializer, result: 0x80070643, restart: None
[151C:0384][2015-10-27T14:51:43]e000: Error 0x80070643: Failed to execute MSI package.
[17D8:02D4][2015-10-27T14:51:43]i318: Skipped rollback of package: PostgresInitializer, action: Uninstall, already: Absent
[151C:0384][2015-10-27T14:51:43]i319: Applied rollback package: PostgresInitializer, result: 0x0, restart: None
[17D8:02D4][2015-10-27T14:51:43]i329: Removed package dependency provider: {8C3192D8-9D23-4C20-BBCE-459B898CD916}, package: PostgresInitializer
[17D8:02D4][2015-10-27T14:51:43]i351: Removing cached package: PostgresInitializer, from path: C:\ProgramData\Package Cache{8C3192D8-9D23-4C20-BBCE-459B898CD916}v<IP_ADDRESS>
[151C:0384][2015-10-27T14:51:44]i399: Apply complete, result: 0x80070643, restart: None, ba requested restart:  No

Hey,
It looks like the PostgresInitializer msi isn't executing with elevated permissions. To workaround this you should snag the msi from the package cache (C:\ProgramData\Package Cache{8C3192D8-9D23-4C20-BBCE-459B898CD916}v<IP_ADDRESS>\TabMonServiceInstallerDBInitializer.msi) and run the msi as an administrator (right click, Run as administrator).
If this doesn't resolve the issue let me know.

When I right click to look for the Run as administrator option it isn't there, which is odd. I have it for InstallTabMon but not TabMonServiceInstallerDBInitializer.msi
Here is a screen shot of what I see:

I tried just using the Install option but that doesn't seem to be working

Hey Phillip,
It looks like postgres is either unable to initialize or the service cannot be created/started.
Can you check in services to see if Tabmon-Postgres exists and is started?
If it does not exist can you attach the DBCreation.log file? It can be found in your temp directory.

I am not seeing DBCreation.log
That is just the C:\Temp directory that it should be in correct?
Some additional info, I am seeing that the TabMon Service itself is stopped and it doesn't change to start when I use the Start TabMon function from my start menu

So, there is no TabMon-Postgres in the services?
The best way to work around this may be to run the initialization powershell script manually.
To do this, please open up "Windows PowerShell ISE" as an administrator. Once there follow the steps below:

Select File > Open...
Navigate to the TabMon directory.
Select PGSetup in that directory.
Edit $InstallDir to point to the postgres directory.
Change $Port to the specified port that postgres was installed with.
Change $Username to the desired username.
Change $Password to the desired password.
Select Run Script (F5)

If errors occur when running the script let me know. There is the potential that the execution policy does not allow scripts to be run.

I am not seeing PGSetup in my TabMon Directory, here is a screen shot of what I see:

Hello Phillip,
The contents of the powerShell script can be found here. To use it, I suggest opening Windows PowerShell ISE, copying the script from git, and then paste the script in the PowerShell ISE.
Once the script is there, make the changes mentioned in my earlier post and hit run!

Hello Phillip,
I just wanted to check in to see if you were able to get TabMon installed.
-Dan

I haven't had a chance to test out the PowerShell ISE script you pointed me to yet. I will be spending some time on it today. Hopefully we can get it working

Ok. The script is failing to run. It looks like the C:\Postgres\data\postgresql.conf file doesn't exist. In fact I am not seeing the C:\Postgres\data folder in my C:\Postgres directory
Here is a screen shot of the error in power shell:

Hello Phillip,
The error "Cannot find path 'C:\Postgres\data\postgresql.conf' because it does not exist, is occurring because postgres failed to initialize. The initialization will generate the data directory and all of the files within.
We should try to manually initialize postgres before we move forward. To do so, please follow these instructions.

Open the "Command Prompt" as an administrator. (Right-click, run as administrator)
Navigate to the bin directory of postgres. Command if the default install path was used:
cd "C:\Postgres\bin"
Run the command below to initialize the database. Please be sure to change $InstallDir to the porstgres directory. (Default directory: C:\Postgres)
initdb --username=tabmonsuperuser --auth=trust --pgdata="$InstallDir\data" --encoding=utf8

Once this is done, the data directory should be created.
I'll pass the next steps once I hear back from you. If there are any questions let me know.

I ran the following:
initdb --username=tabmonsuperuser --auth=trust --pgdata="C:\Postgres\data" --encoding=utf8
I did not get any info or error messages, It just immediately went back to the standard blinking cursor mode

Hey Phillip,
Since we are unable to run initdb we should manually install and configure postgres. Steps for installing and configuring postgres are below:

Install Postgres
http://www.enterprisedb.com/products-services-training/pgdownload#windows
Setup superuser during setup
a. Username: tabmon
b. Password: your choice
c. Port: 5432
Open PGadminIII
a. Right click your postgres server and go to add databases
b. Input the following parameters
i. Owner = tabmon
ii. Encoding = UTF8
iii. Tablespace = pg_default
iv. Collation = English_United States.1252
v. Character type = English_United States.1252
vi. Connection Limit = -1
c. Under privileges
i. Give all privileges to tabmon
ii. Revoke all privileges from public

If this doesn't work please let me know.

Formatting was butchered, reposting.

Install Postgres http://www.enterprisedb.com/products-services-training/pgdownload#windows

Setup superuser during setup
-- a. Username: tabmon
-- b. Password: your choice c. Port: 5432

Open PGadminIII
-- a. Right click your postgres server and go to add databases

-- b. Input the following parameters
---- i. Owner = tabmon
---- ii. Encoding = UTF8
---- iii. Tablespace = pg_default
---- iv. Collation = English_United States.1252
---- v. Character type = English_United States.1252
---- vi. Connection Limit = -1
-- c. Under privileges
---- i. Give all privileges to tabmon
---- ii. Revoke all privileges from public

Is there a particular version that allows me to choose the superuser name? the 9.4 version is defaulting the superuser to postgres with no option to change it.
With that in mind after the install I justed added a second superuser called tabmon, but when I go to create the database I am not able to see any user other than public in the role drop down in the privileges tab.

Update: This approach worked.
I had to start the service by going into task manager and navigating to services tab and then selecting the Admin services option at the bottom right. Once that window opened I was able to start the TabMon service from there.

Now that I have the service running I am missing some of the fields that the Sample workbook your provide is using. The following fields are missing:

%_committed_bytes_in_use
%_disk_read_time
%_disk_write_time
%_free_space
%_processor_time
%CPU gradiant
%RAM gradient
bytes_received/sec
bytes_sent/sec
disk_read_bytes/sec
disk_write_bytes/sec
processes
thread_count

Based on the info above, it looks like we're running into one of two scenarios.

TabMon Service user does not have access to the perfmon counters
The processes required to pull perfmon counters are disabled

Here are a few things we should check.

If the server has the Windows firewall up, ensure an exception for the Performance Logs and Alerts is enabled.
Make sure the user that is running the TabMon service has admin access to the machine that is running TabMon as well as every node in the Tableau Server cluster.
Make sure the TabMon service user belongs to the Performance Log Users, Performance Monitor Users group, and the Event Log Readers group on the server (or domain).
Ensure the Remote Registry service is running on the Tableau Server machine(s).

If we are remotely pulling the counters, we should also look into whether the services required to run perfmon remotely are enabled on the Tableau Server machine(s). This link has some good information on what services should be running: http://help.logicmonitor.com/monitoring-with-logicmonitor/windows/perfmon-datasources-fail/
Can you also send me the TabMon.log file? This file is located in the Logs folder of the TabMon directory. This file may offer more insight into why the counters aren't pulling.

Is there a way I can define the run as user for TabMon? I have a user that should have the necessary permissions, but it isn't a user that I can log into the machine as.

Update: I was able to specify the run as user in the same window I started the service in originally
That user seems to have all the necessary permissions and all of the fields are now available.

Hey Phillip,
I'm happy to hear that everything is working as expected now. Is it cool if I close this issue?

Yes we can close the issue


Cannot click/select date in "sap.ui.unified.Calendar"

Describe the bug
I tried to select a date range in "sap.ui.unified.Calendar"
But through following code cannot click/select the date correctly.
await browser.asControl({
    	selector: {
            id: "application-BusinessUser-recordAuditTime-component---workarea--calendar--Month1",
            interaction: {
                    idSuffix: "20240508"
            }
    }}).press();

Screenshots
if applicable, add screenshots to help explain your problem.

Runtime Env (please complete the following information):

wdi5/wdio-ui5-service-version: ^2.0.6
UI5 version: 1.114.0
node-version (output of node --version): v20.11.0
Browser + Version: chrome 124.0.6367.92

Additional context
Add any other context about the problem here,
e.g. any options the target browser is started with like --headless or
if the tests run in a CI environment

Hi @pp0001,
thanks for reporting this issue! This is a bug. To give you more context:
The identification with the idSuffix is working fine. We have a problem with our press function as the idSuffix ist not passed here correctly.

@pp0001,
could you please test your issue again with wdi5 2.0.8?

Hi @Siolto ,
I tried to modify the version in the package.json, like "wdio-ui5-service": "^2.0.8"
Then repeat the following step, but the date cannot be selected.
        await browser.asControl({
            selector: {
                id: "application-BusinessUser-recordAuditTime-component---workarea--calendar--Month1",
                interaction: {
                        idSuffix: "20240508"
                }
        }}).press()

I have added a test for the fix and it is working fine on our site now.
Can you please check that you really have the newest version installed?

Hello,
Thanks for you reply.
I tried to re-install the dependencies, and currently the version of "wdio-ui5-service" is "2.0.8".

And the UI5 version is "1.114.0".
And from the local file I found that the code of "press" function.

async press() {
        // support fluent async api
        let className;
        let controlSelector;
        let logging;
        if (util.types.isProxy(this._domId)) {
            const _controlInfo = await Promise.resolve(this._metadata);
            className = _controlInfo.className;
            controlSelector = await Promise.resolve(this._controlSelector);
            logging = await Promise.resolve(this._logging);
        }
        else {
            className = this.getControlInfo().className;
            controlSelector = this._controlSelector;
            logging = this._logging;
        }
        // when the interaction locator is existing we want to use the RecordReplay press (interactWithControl)
        if (controlSelector.selector.interaction) {
            if (logging) {
                Logger.info(`using OPA5 Press action to interact with this ${className}...`);
            }
            const oOptions = {
                selector: controlSelector.selector,
                interactionType: "PRESS"
            };
            try {
                await this._interactWithControl(oOptions);
            }
            catch (error) {
                if (logging) {
                    Logger.error(`cannot issue OPA5-press() on control, because ${error.message}`);
                }
            }
        }
        else {
            // interact via wdio
            try {
                await (await this._getWebElement()).click();
            }
            catch (error) {
                if (logging) {
                    Logger.error(`cannot call press(), because ${error.message}`);
                }
            }
        }
        return this;
    }

But the press date is still not working.
        await browser.asControl({
            forceSelect: true,
            selector: {
                id: "application-BusinessUser-recordAuditTime-component---workarea--calendar--Month1",
                interaction: {
                        idSuffix: "20240509"
                }
        }}).press()

And following is my dependencies:
    "dependencies": {
        "@wdio/sauce-service": "^8",
        "deepmerge": "^4.3.1",
        "rimraf": "^5.0"
    },
    "devDependencies": {
        "@wdio/allure-reporter": "^8.27.2",
        "@ui5/cli": "^3",
        "@wdio/cli": "^8.32.4",
        "@wdio/cucumber-framework": "^8.32.4",
        "@wdio/dot-reporter": "^8.27.0",
        "@wdio/junit-reporter": "^8.27.0",
        "@wdio/local-runner": "^8.32.4",
        "@wdio/mocha-framework": "^8.27.0",
        "@wdio/spec-reporter": "^8.32.4",
        "ts-node": "^10.9.2",
        "typescript": "^5.3.3",
        "wdio-timeline-reporter": "^5.1.4",
        "wdio-ui5-service": "latest",
        "wdio-vscode-service": "^6.0.3",
        "dayjs": "^1.11.10"
    }

Are there any other suggestions? Thanks in advance.
Thanks,
Pamela

Hello @Siolto ,
Currently the version of "wdio-ui5-service" is "2.0.8" installed in my local environment. I think this is the latest version.
And then when I execute the following code, the date can be focused, but not selected.
The UI5 version is "1.114.0".
And I'm using this framework  "@wdio/cucumber-framework": "^8.32.4" to execute test.
Are there any other things I need to update?
        const sMonth1 = await browser.asControl({
            forceSelect: true,
            selector: {
                id: "application-BusinessUser-recordAuditTime-component---workarea--calendar--Month1",
                interaction: {
                        idSuffix: "20240509"
                }
        }})

        await sMonth1.press()

Thanks,
Pamela


rewrite_javascript doesn't touch JSON scripts

Hello,
I just mention that all my JSON scripts what I have on the page do not minify.
They have all spaces and comments.
How it can b fixed? Thank you.

duplicate


Checking If the Website Uses Specific Function

Hello, I am trying to check if the website uses specific function (i.e., window.showOpenFilePicker()). My aim is I will open the website and I want to get a True boolean value only if the website uses  window.showOpenFilePicker() function. As suggested by @vsemozhetbyt I am using  page.evaluateOnNewDocument(). However, the code as shown in below, always returns False and I am getting this error:
VM14:4 Uncaught TypeError: Cannot read property 'bind' of undefined
    at <anonymous>:4:65
    at <anonymous>:9:9

My code is:

'use strict';

const puppeteer = require('puppeteer');

(async function main() {

   const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

    try {

      const [page] = await browser.pages();

    await page.evaluateOnNewDocument(() => {
        window.showOpenFilePickerIsCalled = false;

        const oldShowOpenFilePicker = window.showOpenFilePicker.bind(window);
        window.showOpenFilePicker = function (...args) {
        window.showOpenFilePickerIsCalled = true;
         return oldShowOpenFilePicker(...args);
        };
      });

      await page.goto('https://example.org/');

      const check1 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check1); // false

   // const fileName = await page.evaluate(async () => {
   //     console.log("asd")
    //    return (await window.showOpenFilePicker())[0].name;
    //  });
     // console.log(fileName); // picked file name

      const check2 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check2);// true
    }
    catch(err) { console.error(err); } finally {
        //await browser.close();
    }
})();

How can I solve this issue?
Thanks.

@harunoz Can there be that you try to use this code on HTTP sites?
See Window.showOpenFilePicker():

This feature is available only in secure contexts (HTTPS)...

Hello thank you for your answer, I tried to use in 'https://example.org/' and I still get the same error.  I think the problem is we need to inject that function to evaluate by using exposeFunction utility as stated in here and here. But I could not figure out how am I going to achieve this.

It is strange: I get no errors with https://example.org/. Do you use the last version of Chrome shipped with the last version of puppeteer? Do you use the code without any changes?

Hello I believe that my problem is related with this. I am downloading puppeteer with npm install puppeteer and it automatically downloads Chrome/78.0.3882.0  which is the old version of Chrome. How can I update the Chrome that comes with the Puppeteer?

You can try npm install puppeteer@latest to install the last version.

Hello it worked, I am not seeing any errors. However, in the above code opens filePicker  for every website.
What I am trying to do this, I want puppeteer to continuously check if the showOpenFilePicker function (or any other function) is invoked by a website or user. If this function is invoked, my aim is to interrupt the website's activity and run my function. Is this possible?
For example if you run this code, it opens a file picker for google.com
'use strict';

const puppeteer = require('puppeteer');

(async function main() {

   const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

    try {

      const [page] = await browser.pages();
      const version = await page.browser().version();
      console.log(version)

    await page.evaluateOnNewDocument(() => {
        window.showOpenFilePickerIsCalled = false;

        const oldShowOpenFilePicker = window.showOpenFilePicker.bind(window);
        window.showOpenFilePicker = function (...args) {
        window.showOpenFilePickerIsCalled = true;
         return oldShowOpenFilePicker(...args);
        };
      });

      await page.goto('https://google.com');

      const check1 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check1); // false

    const fileName = await page.evaluate(async () => {
        console.log("asd")
        return (await window.showOpenFilePicker())[0].name;
      });
      console.log(fileName); // picked file name

      const check2 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check2);// true
    }
    catch(err) { console.error(err); } finally {
        //await browser.close();
    }
})();

Maybe something like this?
    await page.evaluateOnNewDocument(() => {
        window.showOpenFilePickerIsCalled = false;

        const oldShowOpenFilePicker = window.showOpenFilePicker.bind(window);
        window.showOpenFilePicker = function (...args) {
        window.showOpenFilePickerIsCalled = true;
         return oldShowOpenFilePicker(...args);
        };

        const checker = setInterval(() => {
          if (window.showOpenFilePickerIsCalled) {
            clearInterval(checker);
            console.log('There we go...');
            // your code or function call
          }
        }, 1000);
      });

I really lost in this step. I am really appreciate your help I tried code shown in below but it did not work. Where should I locate this code snippet?
'use strict';

const puppeteer = require('puppeteer');

(async function main() {

   const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

    try {

      const [page] = await browser.pages();
      const version = await page.browser().version();
      console.log(version)

      await page.evaluateOnNewDocument(() => {
        window.showOpenFilePickerIsCalled = false;

        const oldShowOpenFilePicker = window.showOpenFilePicker.bind(window);
        window.showOpenFilePicker = function (...args) {
        window.showOpenFilePickerIsCalled = true;
         return oldShowOpenFilePicker(...args);
        };

        const checker = setInterval(() => {
          if (window.showOpenFilePickerIsCalled) {
            clearInterval(checker);
            console.log('There we go...');
            // your code or function call
          }
        }, 1000);
      });
      await page.goto('https://mburakerman.github.io/file-system-access-api-demo/');

      const check1 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check1); // false

    const fileName = await page.evaluate(async () => {
        //page.setJavaScriptEnabled(false)
        return (await window.showOpenFilePicker())[0].name;
      });
      console.log(fileName); // picked file name

      const check2 = await page.evaluate(() => {
        return window.showOpenFilePickerIsCalled;
      });
      console.log(check2);// true
    }
    catch(err) { console.error(err); } finally {
        //await browser.close();
    }
})();

I am a bit lost too) Maybe you can describe what you really need to do after file dialog is closed?

Okay, what I am trying to do this, let's say we do have a website that uses Window.showDirectoryPicker() function stated in here. I would like first check if the user and/or website invokes Window.showDirectoryPicker() function. If the website uses that function, I would like to check whether the website tries to delete the user's files via removeEntry() function again stated in here.
So, my idea is I want to implement hooking technique to both Window.showDirectoryPicker() and removeEntry() functions to check if a website uses them. When I am able to find out that these functions are called by the website, I will interrupt the activities that the website is doing, and perform some operations on the files according to my research purposes.

If I have figured it out correctly, this is a possible solution with a test (assuming you have 1.txt file in the test directory):
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

try {
  const [page] = await browser.pages();

  await page.exposeFunction('_notifyShowDirectoryPicker', (directoryName) => {
    console.log(`showDirectoryPicker was called. Selected directory: ${directoryName}`);
  });
  await page.exposeFunction('_notifyRemoveEntry', (name) => {
    console.log(`removeEntry was called for ${name}.`);
  });

  await page.evaluateOnNewDocument(() => {
    const _oldShowDirectoryPicker = window.showDirectoryPicker.bind(window);
    window.showDirectoryPicker = async function newShowDirectoryPicker() {
      const directoryHandle = await _oldShowDirectoryPicker();
      window._notifyShowDirectoryPicker(directoryHandle.name);
      return directoryHandle;
    };

    const _oldRemoveEntry = FileSystemDirectoryHandle.prototype.removeEntry;
    FileSystemDirectoryHandle.prototype.removeEntry = async function newRemoveEntry(name, options) {
      // Uncomment to not prevent the deletion.
      // await _oldRemoveEntry.call(this, name, options);
      window._notifyRemoveEntry(name);
    };
  });

  await page.goto('https://example.org/');

  await page.evaluate(async () => {
    const directoryHandle = await window.showDirectoryPicker();
    await directoryHandle.removeEntry('1.txt');
  });
} catch (err) { console.error(err); } finally { await browser.close(); }

This code is work as intended. Now I would like to implement my own logic based on your code. I would like to hook to close() functions described in here. I want to prevent the writable.close() operation invoked by a website. I changed the code and add these two functions, but it doesn't work. How can I solve this issue?
To notify the close event
  await page.exposeFunction('_notifyWriteClose',(name) => {
    console.log('`WriteClose was called for ${name}.`')
  })

and prevent close operation
    const _oldWriteClose = FileSystemWriter.prototype.close;
    FileSystemWriter.prototype.close = async function newCloseEntry(name,options){
      await _oldWriteClose.call(this, name, options);
      window._notifyWriteClose(name)
    };

const puppeteer = require("puppeteer");

(async () => {
const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

try {
  const [page] = await browser.pages();

  await page.exposeFunction('_notifyShowDirectoryPicker', (directoryName) => {
    console.log(`showDirectoryPicker was called. Selected directory: ${directoryName}`);
  });
  await page.exposeFunction('_notifyRemoveEntry', (name) => {
    console.log(`removeEntry was called for ${name}.`);
  });

  await page.exposeFunction('_notifyWriteClose',(name) => {
    console.log('`WriteClose was called for ${name}.`')
  })

  await page.evaluateOnNewDocument(() => {
    const _oldShowDirectoryPicker = window.showDirectoryPicker.bind(window);
    window.showDirectoryPicker = async function newShowDirectoryPicker() {
      const directoryHandle = await _oldShowDirectoryPicker();
      window._notifyShowDirectoryPicker(directoryHandle.name);
      return directoryHandle;
    };

    const _oldRemoveEntry = FileSystemDirectoryHandle.prototype.removeEntry;
    FileSystemDirectoryHandle.prototype.removeEntry = async function newRemoveEntry(name, options) {
       //Uncomment to not prevent the deletion.
      await _oldRemoveEntry.call(this, name, options);
      window._notifyRemoveEntry(name);
    };

    const _oldWriteClose = FileSystemWriter.prototype.close;
    FileSystemWriter.prototype.close = async function newCloseEntry(name,options){
      await _oldWriteClose.call(this, name, options);
      window._notifyWriteClose(name)
    };

  });

  await page.goto('https://example.org/');

 // await page.evaluate(async () => {
  //  const directoryHandle = await window.showDirectoryPicker();
   // await directoryHandle.removeEntry('1.txt');
  //});
} catch (err) { console.error(err); } finally {   await new Promise(done => setTimeout(done, 100000));
    await browser.close(); }

})();

Hello thank you for your help, I was working on the code and I utilized a hooking for write() function as described below. I am able to perform the hooking however how can I get the file name that is called for write function?
  await page.exposeFunction('_notifyWrite',(name) => {
    console.log(`Write was called for ${name}.`)
  });

    const _oldCreateWrite = FileSystemWritableFileStream.prototype.write;

    FileSystemWritableFileStream.prototype.write = async function newWrite(name,options) {

      await _oldCreateWrite.call(this,name,options);
      page.setJavaScriptEnabled(false)

      window._notifyWrite(name);


Leaderboard: hit the API

Modified application to use API to add new scores.
Modified application to display existing scores.
Used ES6 concepts.
Used Gitflow.
Used async and await JavaScript features.

I am facing a webhint error in my project, I have made multiple attempts to fix it but failed to do so. All the files are working fine in my project you can check and the previous project had the same error and it got approved as well I am adding a screenshot as proof. Kindly ignore this error
regards.


ui suggestions

Super thx for your efforts.  I have a number of linux boxes on my network that need to start cron jobs for backup etc and this is the easiest way to management them from one place.
To make things a bit more intuitive here's a few suggestions to the ui
IHMO it makes more sense that a cronjob is either enabled or disabled  (I used to just do this by commenting in the crontab file.)  So maybe each cronjob should have an enabled check box.  That would mean you could remove the "stop" button which kinda implies that it would stop a job ran manually with the "run" button.    The run button since it has no a tool tip should maybe say "Run Now" which is just a way to test the job not enable with the cron timer.   One could even color background green of any enabled job.  Also with enabled field one could sort on either enabled or disabled jobs.
I assume the "save to crontab" saves any jobs which are not "stopped".  So instead drop that button and save whenever a enable checkbox changes state.  It would be nice if the crontab file was nosql or json so it would be CRUD compatible but being a flat text file makes management a pain  (or maybe better to use the cron.d is that what you are doing?).
If you are looking for a better more powerful way (and IMO way easierway) to write your UI consider vuejs and the quasarframework.  With these two I can whip out a great looking responsive ui with great layouts and things like tooltips easily.  Tool tips really help guide users without documentation.   https://quasar-framework.org/
Once again Thx!

Thanks for your feedback. All of these are good points. I will see what I can incorporate in my free time :)

I liked some of your suggestions. I have forked this repo, and trying some things myself. https://github.com/CausticD/crontab-ui


Test re-organisation

Test re-org

Make it obvious how to contribute additional testing
What should we do with the ConcreteCryptoTypes module? It's not parametrised everywhere anyway! Let's just drop it entirely.
Benchmarks should be pulled out of the tests directory entirely, and placed inside bench.
We want to be able to produce much longer traces
Improve the transaction/block generators

Shelley/Spec/Ledger/Test

Serialization

Generators
These generators only generate type-correct data for use in the round-tripping tests / CDDL tests.
Golden

Binary
Should have a means to "overwrite" the test output with a given flag.
Encoding (e.g. golden tests at the encoding level?)
Should we get rid of these entirely?

Tripping
CDDL
Q: Do we want to split this by type?

Property

Unit

Sometimes these need their own generators. They should be test specific and not exported.

Trace

Incorporate anything from the 'NonTrace' tests so that the 'NonTrace' tests can die

Examples
Split the examples up into self-contained modules, each of which should have a coherent description of what they're testing.
We could consider using literate haskell here.

Ex1
Ex2
Ex3
Framework
We should build something to allow us to write the examples in a more compact, explicit way - e.g. remove most of the manual threading of state.

We should review this ticket and see how much of it is still relevant.

The details in this issues are out of date, but we definitely still need to re-organized our tests.

closing in favor of  #2743


there is no search "parameters" contents on the swagger part in fhir-swagger-generator-4.10.0-cli.jar

Describe the bug
I can generate Patient-swagger.json and see the search "parameters" contents in the paths./Patient.get.parameters through com.ibm.fhir.swagger.generator.FHIRSwaggerGenerator in fhir-swagger-generator-4.9.2-cli.jar
However, I cannot see any contents in the fhir-swagger-generator-4.10.2-cli.jar
Environment
Which version of IBM FHIR Server?
4.10.2
To Reproduce
Steps to reproduce the behavior:

Go to https://github.com/LinuxForHealth/FHIR/releases
Download fhir-swagger-generator-4.10.2-cli.jar
Use command line to execute java -cp fhir-swagger-generator-4.10.2-cli.jar com.ibm.fhir.swagger.generator.FHIRSwaggerGenerator
Go into the folder swagger that just generated and open an example like Patient-swagger.json
You cannot see any contents in the paths.'/Patient'.get.parameters

Expected behavior
I expect it to have the same contents as version 4.9.2.
"parameters": [
{
"name": "given",
"description": "Multiple Resources: \r\n\r\n* Patient: A portion of the given name of the patient\r\n* Practitioner: A portion of the given name\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "identifier",
"description": "A patient identifier",
"in": "query",
"type": "string",
"required": false
},
{
"name": "birthdate",
"description": "Multiple Resources: \r\n\r\n* Patient: The patient's date of birth\r\n* Person: The person's date of birth\r\n* RelatedPerson: The Related Person's date of birth\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address",
"description": "Multiple Resources: \r\n\r\n* Patient: A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* Person: A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* Practitioner: A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* RelatedPerson: A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "deceased",
"description": "This patient has been marked as deceased, or as a death date entered",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address-state",
"description": "Multiple Resources: \r\n\r\n* Patient: A state specified in an address\r\n* Person: A state specified in an address\r\n* Practitioner: A state specified in an address\r\n* RelatedPerson: A state specified in an address\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "gender",
"description": "Multiple Resources: \r\n\r\n* Patient: Gender of the patient\r\n* Person: The gender of the person\r\n* Practitioner: Gender of the practitioner\r\n* RelatedPerson: Gender of the related person\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "general-practitioner",
"description": "Patient's nominated general practitioner, not the organization that manages the record",
"in": "query",
"type": "string",
"required": false
},
{
"name": "link",
"description": "All patients linked to the given patient",
"in": "query",
"type": "string",
"required": false
},
{
"name": "active",
"description": "Whether the patient record is active",
"in": "query",
"type": "string",
"required": false
},
{
"name": "language",
"description": "Language code (irrespective of use value)",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address-postalcode",
"description": "Multiple Resources: \r\n\r\n* Patient: A postalCode specified in an address\r\n* Person: A postal code specified in an address\r\n* Practitioner: A postalCode specified in an address\r\n* RelatedPerson: A postal code specified in an address\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address-country",
"description": "Multiple Resources: \r\n\r\n* Patient: A country specified in an address\r\n* Person: A country specified in an address\r\n* Practitioner: A country specified in an address\r\n* RelatedPerson: A country specified in an address\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "death-date",
"description": "The date of death has been provided and satisfies this search value",
"in": "query",
"type": "string",
"required": false
},
{
"name": "phonetic",
"description": "Multiple Resources: \r\n\r\n* Patient: A portion of either family or given name using some kind of phonetic matching algorithm\r\n* Person: A portion of name using some kind of phonetic matching algorithm\r\n* Practitioner: A portion of either family or given name using some kind of phonetic matching algorithm\r\n* RelatedPerson: A portion of name using some kind of phonetic matching algorithm\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "phone",
"description": "Multiple Resources: \r\n\r\n* Patient: A value in a phone contact\r\n* Person: A value in a phone contact\r\n* Practitioner: A value in a phone contact\r\n* PractitionerRole: A value in a phone contact\r\n* RelatedPerson: A value in a phone contact\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "organization",
"description": "The organization that is the custodian of the patient record",
"in": "query",
"type": "string",
"required": false
},
{
"name": "name",
"description": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address-use",
"description": "Multiple Resources: \r\n\r\n* Patient: A use code specified in an address\r\n* Person: A use code specified in an address\r\n* Practitioner: A use code specified in an address\r\n* RelatedPerson: A use code specified in an address\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "telecom",
"description": "Multiple Resources: \r\n\r\n* Patient: The value in any kind of telecom details of the patient\r\n* Person: The value in any kind of contact\r\n* Practitioner: The value in any kind of contact\r\n* PractitionerRole: The value in any kind of contact\r\n* RelatedPerson: The value in any kind of contact\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "address-city",
"description": "Multiple Resources: \r\n\r\n* Patient: A city specified in an address\r\n* Person: A city specified in an address\r\n* Practitioner: A city specified in an address\r\n* RelatedPerson: A city specified in an address\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "family",
"description": "Multiple Resources: \r\n\r\n* Patient: A portion of the family name of the patient\r\n* Practitioner: A portion of the family name\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"name": "email",
"description": "Multiple Resources: \r\n\r\n* Patient: A value in an email contact\r\n* Person: A value in an email contact\r\n* Practitioner: A value in an email contact\r\n* PractitionerRole: A value in an email contact\r\n* RelatedPerson: A value in an email contact\r\n",
"in": "query",
"type": "string",
"required": false
},
{
"$ref": "#/parameters/_profileParam"
},
{
"$ref": "#/parameters/_lastUpdatedParam"
},
{
"$ref": "#/parameters/_tagParam"
},
{
"$ref": "#/parameters/_securityParam"
},
{
"$ref": "#/parameters/_sourceParam"
},
{
"$ref": "#/parameters/_idParam"
}
],
Additional context

You can download the file fhir-swagger-generator-4.9.2-cli.jar here
You can download the file fhir-swagger-generator-4.10.2-cli.jar here
thank you very much if you can help me to resolve this issue

I confirmed that this is an issue in our latest release (4.11.1) as well as in main.
I think its a side-effect from when we changed the way we load the Search Parameters...we look them up from our internal registry now but the registry project was never added as a dependency here.
It works as expected when I run from eclipse (since the registry is on my classpath) but in the all-in-one executable cli jar it does not (because the registry--and thus the SearchParameter definitions--are not there).
I think the fix is pretty simple...we just need to add the fhir-registry component to the classpath.
And in main, we need to add fhir-core-r4b as well.

I confirmed the fix by building the cli jar after the above changes, executing it as described above, and opening the resulting Patient swagger json in an online swagger editor

got it, thank you very much for your time and help


Click one node but another one moves

When I select(clicked) an specific node and try to drag away from the others another node moves.
In this screenshot I try to move node #253 but the one that moves is node #250 (weird)

now, the issue doesnt happen If I use 3 or nodes and links, only with a bunch of data.
At first, I thought it was my data but I have tried it with 2 different frameworks such as react-vis-force and react-graph-vis and so far they are working fine.
Here's my data
P.D. is it possible to group nodes and assign a different color to said groups?, thanks

Hello, @corganfuzz thanks for the feedback. This is indeed a problem when defined nodes id's are numeric values. There is already a work in progress solution for this, this will certainly be included in the next release of react-d3-graph that I have scheduled for this weekend. Regarding the other question that you mentioned can you please open a separate issue so that it stays properly documented. Thanks 👍

Awesome. Yeah numeric data is coming from a GraphDB database which has  number values for ids, source, target which I think it's pretty much GraphDB default.
Thanks for the quick response, I will open a separate issue for group color assignment

Fixed with #42 and will soon be released in<EMAIL_ADDRESS>


Wrong installation command in README file

Thank you for the efforts you put in.
I faced a issue downloading the package using the command in readme. I tried this npm install tailwindcss-vanilla-rtl  --save-dev and it worked.

Good catch @Moohy! I probably copy-pasted that bit :)


TEST

TESTING ONLY

Job Test CentOS 8 on c40223a : canceled by @PaulTalbot-INL
test concluded

Job Test qsubs sawtooth on 431248a : canceled by @joshua-cogliati-inl
Was just a test.

Job Test qsubs sawtooth on eecbc72 : canceled by @wangcj05

Job Test Ubuntu 18 PIP on 291ee53 : invalidated by @joshua-cogliati-inl
restarted civet

Job Mingw Test on 291ee53 : canceled by @joshua-cogliati-inl
set python environment taking forever

Job Mingw Test on 7ed312b : canceled by @joshua-cogliati-inl
will fail due to conda issue.

I guess this PR can be closed.


Automated data processing pipeline scripts (makefile)

Can be done when the rest of the data is taken care of, the basis should be correct.

Create makefile to have folders, not done manually (e.g. from the example https://github.com/course-dprep/MovieGenre_IMDbAnalysis)


mat: add least square linear solver for Dense and VecDense

WIP: needs tests and likely some optimisations.
See https://github.com/gonum/gonum/issues/1205#issuecomment-623091024.
Please take a look.

I'm sorry for the drive-by, but it's not clear from the thread why this needs to exist. This is what Solve already does. Is there a particular case where this returns a different answer? If there's a need to explicitly use SVD, then maybe this should be SolveSVD instead?

For instance:
func main() {
	a := mat.NewDense(4, 2, []float64{
		0, 1,
		1, 1,
		2, 1,
		3, 1,
	})
	b := mat.NewVecDense(4, []float64{-1, 0.2, 0.9, 2.1})

	c := &mat.VecDense{}
	c.SolveVec(a, b)
	fmt.Printf("x=%.4v\n", mat.Formatted(c, mat.Prefix("  ")))
}

x=⎡    1⎤
  ⎣-0.95⎦

@btracey Please see the discussion at #1205.

Please take a look

I think that a better solution would be to have DGELSD or DGELSY and use it in mat. These functions take the matrix directly instead of the SVD factorization, so then the functions shouldn't be hanged on mat.SVD. A good thing is that we already have a lot of dependencies of DGELSD in lapack/gonum but still the implementation would require some effort.
If you want, then this can exist as an interim solution.

Would you expect the API to look the same?

I thought that it could look something like
// simplest but does not expose all computed information by Dgelsd
func SolveLeastSquares(dst *Dense, a, b Matrix) (ok bool)

// provides singular values and computed rank assuming the default rcond; allocates values
func SolveLeastSquares(dst *Dense, a, b Matrix) (values []float64, rank int, ok bool)

// provides singular values and computed rank assuming the given rcond; allocates values
func SolveLeastSquares(dst *Dense, a, b Matrix, cutoff float64) (values []float64, rank int, ok bool)

It could also have a dedicated type:
package mat

type LeastSquares struct {
    Cutoff float64 // or cutoff float64

    values []float64
    rank int
}

func (ls *LeastSquares) SolveTo(dst *Dense, a, b Matrix) (ok bool) {
or
func (ls *LeastSquares) SolveTo(dst *Dense, a, b Matrix, cutoff float64) (ok bool) {
    ls.cutoff = cutoff
    ls.values = reuse(ls.values)
    // ...
    ls.rank = ...
}
func (ls *LeastSquares) Rank() int { ... }
func (ls *LeastSquares) SingularValues(dst []float64) []float64 { ... }

but I'm not sure it's the right fit here.

It looks like there is indeed a fair bit to do to add either of those (about half the dependencies for DGELSD and more than half (though fewer) for DGELSY. Given this, it's probably worth having this go in now (when it's ready). Also, given that this approach is used in a other places, there's likely no reason to remove it when they are added (and for symmetry with the other decompositions that are used as solvers).
We can leave #1205 open or open a new issue to add (probably both of) DGELSD/DGELSY and add some functions like you have above, with the discussion about the exact form in that issue (I'm inclined towards the second on the basis that it works out of the box, but users can examine the returned values if they want to use a different rank condition threshold.

Agreed. I'll take a look at this PR now.

http://www.math.clemson.edu/~petersj/m860/LeastSquares/lecture001.html is one that I saw. NumPy uses dgelsd.

PTAL

And arm64 is failing.

Build fixed on arm64 (I need to remember to build these tricky things on my arm64 builder locally before I send them).

ping


Width of project roots

Hi,
when we select the fixed project root setting, the project roots width is 100% of the tree-view width, whiwh is beautiful, but when we disable the fixed project root, it has a margin or padding, can you fix that ?
Thank you

This has been an issue I've meant to fix for ages 😀 it's just a matter of moving the padding and margin rules outside the "fixed project root" guard. I'll try to remember to fix this asap!

Haha, sometimes it does even with fixed one

I got this done!!!!!
I'll probably cherry-pick it along with a couple of other disrputive issues during this eve:)

Now it's better. I noticed that there is still another margin or padding which causes a slight jump in the project directory list, I'll fix it now :)

I think this is good enough to get closed at its current state 🙋


is there any option to remove detectable language?

is there any option to remove detectable language?
simply i tested 'test' but it gives like below.
{language: "de", probability: 0.6367550492286682, is_reliable: false, proportion: 1}
if i narrow detectable language, it might give better result.

No, there isn't. cld3-asm provides 1:1 corresponding interface to cld3's language identifier (https://github.com/google/cld3/blob/fa5974a4d3b5e7934fcb166ff26ed6bfce68b18a/src/nnet_language_identifier.h#L67-L79) and doesn't intend to provide additional interfaces.
Cld3 itself recommends to supply sufficient length of text buffer to get accurate detection, at least more than 140char. Providing short word like test won't able to provide anywhere close to actual language detection since there can be too many false positives.


Unzipped size must be smaller than...

Hi!
I tried to follow steps listed in the page: https://github.com/graphcool/chromeless/tree/master/serverless#setup
but when I executed
npm run deploy

I get this error:

An error occurred: VersionLambdaFunction - Unzipped size must be smaller than 262144000 bytes.

I'm using:
npm --version
5.3.0
node --version
v6.6.0

git rev-parse HEAD
7d931568e6d64f7ab74c8e54ba205d6164c1d979

git remote -v
origin	https://github.com/graphcool/chromeless.git (fetch)
origin	https://github.com/graphcool/chromeless.git (push)

The generated files:
72M ./serverless/chromeless-serverless.zip

Here's a breakdown of the largest directories in the .zip:
187M	.//node_modules/@serverless-chrome/lambda/dist
 26M	.//node_modules/typescript/lib
 25M	.//node_modules/aws-sdk
9.8M	.//node_modules/aws-sdk/clients
8.2M	.//node_modules/babel-runtime
8.2M	.//node_modules/aws-sdk/dist
7.3M	.//node_modules/babel-register
7.2M	.//node_modules/babel-runtime/node_modules/core-js
7.2M	.//node_modules/babel-register/node_modules/core-js

Are there any known workarounds for this issue yet? This is blocking my deployment of chromeless.

Using yarn instead of npm solved the issue for me :

yarn install inside the chromeless/serverless directory, then
yarn run deploy

You obviously need yarn installed,

Yes even using npm.
I think that the last version of chromeless solves this issue.
Thanks!

Still have the problem , anyone can give some hints about how to solve it?

ok, I found the solution, deploy it with the ubuntu machine, do not why, but it turns out to be

not 118MB again on my linux machine

Had the same problem, on OSX with npm install build produced 120MB zip, using yarn install helped - 70mb zip.

npm install also installs dev-dependencies as well, so might be better to run npm install --production to see if that trims out unnecessary packages. I'm not sure what yarn is doing differently to achieve bundle size differences?

For time travelers from the future
cd serverless
rm -r node_modules
yarn global add @types/cuid @types/node serverless serverless-offline serverless-plugin-chrome serverless-plugin-typescript
yarn install --production
yarn run deploy


Extraneous infromation regarding Class number that does not exist /course/japan102r

In uwflow we see
"LEC 002 8117" listed for Winter 2016 but Open Data lists no such information:
https://api.uwaterloo.ca/v2/terms/1161/JAPAN/102R/schedule.json?
How are you getting that extra information?
cc @KartikTalwar @JGulbronson

Extraneous information regarding Class number that does not exist /course/japan102r

Good work everyone and Happy New Year! Thanks for all your help!


Implement all /films endpoints

Implement in a Films class in film.py:

/films
/films/autocomplete
/films/film-services
/films/genres

Done! Still need to handle HTTP status errors, but see bug #9 for this.
/films/autocomplete is deprecated, so I did not implement this.


Terminal welcome on first invocation

On a new terminal, whenever I invoke kubectx I get the standard built in Ubuntu terminal welcome. Afterwards kubectx works as expected. I'm wondering if anyone else has seen this happen to them? This is on WSL2 Ubuntu 22.04
➜  ~ kubectx
Welcome to Ubuntu 22.04 LTS (GNU/Linux <IP_ADDRESS>-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri  1 Jul 14:48:51 NZST 2022

  System load:  0.26025390625      Processes:             42
  Usage of /:   1.9% of 250.98GB   Users logged in:       1
  Memory usage: 9%                 IPv4 address for eth0: <IP_ADDRESS>
  Swap usage:   0%

 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.

   https://ubuntu.com/blog/microk8s-memory-optimisation

0 updates can be applied immediately.

Last login: Fri Jul  1 14:23:41 NZST 2022 on pts/11

Where did you install it from? Can you vi the executable and see if it is some sort of wrapper script?
I also don't understand why there are microk8s references in the shell startup (MotD?).

I'll save you reading the entire file but it matches master currently:
➜  ~ curl https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx | md5sum
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6108  100  6108    0     0  16716      0 --:--:-- --:--:-- --:--:-- 16734
d679716885e8592585af4fcf9d106ec7  -
➜  ~ cat $(which kubectx) | md5sum
d679716885e8592585af4fcf9d106ec7  -

Sorry for the late reply, was away from my PC for the last month

This was the installation script I used to set up my environment (started scripting it due to issues like this forcing me to recreate the wsl instance:
#!/bin/zsh

script_name=$0
script_full_path=$(dirname "$0")

rm -r /home/$USER/.kube

mkdir /home/$USER/.kube

echo "RUNNING: 'cp $script_full_path/files/kube-config /home/$USER/.kube'"
cp $script_full_path/files/kube-config /home/$USER/.kube/config

# Download the latest version of Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# Make the binary executable
chmod +x ./minikube
# Move the binary to your executable path
sudo mv ./minikube /usr/local/bin/
# Install the conntrack package
sudo apt install -y conntrack

# Install the needed packages
sudo apt install -yqq daemonize dbus-user-session fontconfig

sudo cp $script_full_path/files/enter-systemd-namespace /usr/sbin/enter-systemd-namespace
sudo cp $script_full_path/files/start-systemd-namespace /usr/sbin/start-systemd-namespace
sudo chmod +x /usr/sbin/enter-systemd-namespace

# sudo sed -i 2a"# Start or enter a PID namespace in WSL2\nsource /usr/sbin/start-systemd-namespace\n" /etc/bash.bashrc

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

curl --output helm-linux-amd64.tar.gz https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz
tar -zxvf helm-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
rm helm-linux-amd64.tar.gz
rm -rf linux-amd64

sudo git clone https://github.com/ahmetb/kubectx /usr/local/kubectx
sudo ln -s /usr/local/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /usr/local/kubectx/kubens /usr/local/bin/kubens

mkdir -p ~/.oh-my-zsh/completions
chmod -R 755 ~/.oh-my-zsh/completions
ln -s /usr/local/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/completions/_kubectx.zsh
ln -s /usr/local/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/completions/_kubens.zsh

Sorry I'm not able to repro this on WSL with Ubuntu as described (fetch the script via curl, chmod+x, add it to PATH and run it).


Stat Tracking of Store Operations

Description
This PR adds stat tracking of operations on a key.
Stat tracking can be enabled by passing Store(..., stats=True).
Stats can be retrieved with Store.stats(key) -> dict.
Currently, the number of calls of a method on a given key are recorded as well as the min, max, and average times of the calls.
(I also fixed an issue in the pre-commit flake8 config.)
Fixes #24
Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update (no changes to the code)
[x] CI change (changes to CI workflows, packages, templates, etc.)

Testing

New test cases added for the helper classes and for stores with stat tracking enabled.
Pull Request Checklist
Please confirm the PR meets the following requirements.

[ ] Code changes pass pre-commit (e.g., black, flake8, mypy, etc.).
[ ] Tests have been added to show the fix is effective or that the new feature works.
[ ] New and existing unit tests pass locally with the changes.
[ ] Docs have been updated and reviewed if relevant.

Remaining TODOs before merge:

[ ] ensure RemoteFactory reinstantiates the RemoteStores with tracking enabled.
[ ] consider changing the data structures for stats to a tabular structure.
[ ] decide how to track proxy resolve times.


ARROW-14749: [Python][Release] Set release verification script to use target source instead of current source directory

@kou Ready for review

@kou Ready for review

@kou Sorry, it works now. seemed to have missed a line setting value.

Sorry. I merged a conflicted change.
Could you rebase on master?

@kou Can rebase again if needed.

It seems that there are needless changes in this pull request.
Could you use git rebase apache/master instead of git merge apache/master?

Ok. Will do that.

It seems that the changes by #11696 are removed in this pull request.
Do you want me to rebase this branch?

Let me try once more.

Thanks for finding the missing section.

@kou Hopefully ok now. Tested jars, source, binary, wheels, binary + yum

git diff master shows only changes in the verification script


Apparent issue with ACF Pro 5.10

Hi,
It would appear that the field group editing experience with the editor palette field is (sort of) broken with ACF Pro 5.10. Instead of displaying the color name and a swatch, it looks like the wrapper HTML is being displayed as well. See this screenshot.

...confirmed it is 5.10 related as the labels render fine when I rolled back. Could this be related to the new HTML escaping defaults?
Thanks,
Ben

This should be fixed by the ACF team in 5.10.2

Confirmed this has been fixed in 5.10.2!

hey Brandon - @Log1x , not sure if you're keeping this repo updated but just found it (and superb work!) I've just found the same issue is back that Ben has. I'm using ACF Pro v6.2.7 and running into this issue. Is there a workaround I can do to fix this?
Thanks!

I'm using ACF Pro v6.2.7 and running into this issue.

hey, fun! i'll look into this when I get time.