[MJX] loading mjx_model.actuator_ctrlrange is not JITable

Hi,
I'm a maintainer of Gymnasium & the project manager of Gymnasium-Robotics, and I'm trying to use MuJoCo-MJX for "prototyping MJX-based RL environments in Gymnasium, Gymnasium-Robotics, Metaworld, MO-Gymnasium".
Here is the model tested: Gymnasium/HalfCheetah (though it should be not relevant for this question)
In the Gymnasium Environment API, we have the action_space member variable that specifies the set of valid actions the agent can perform.
I am trying to set the low and high limits of the action_space using the mjx_model.actuator_ctrlrange constant member variable of the loaded model (this is the way we do it with mujoco environments, we load model.actuator_ctrlrange), but I get this error:
(my test.py just JIT's the __init__ and runs it)
$ JAX_TRACEBACK_FILTERING=off python3.11 test.py
JIT success
Traceback (most recent call last):
  File "/home/master-andreas/gym/mjx/test.py", line 39, in <module>
    jit_test()
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/traceback_util.py", line 177, in reraise_with_filtered_traceback
    return fun(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/pjit.py", line 256, in cache_miss
    outs, out_flat, out_tree, args_flat, jaxpr = _python_pjit_helper(
                                                 ^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/pjit.py", line 162, in _python_pjit_helper
    args_flat, _, params, in_tree, out_tree, _ = infer_params_fn(
                                                 ^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/api.py", line 325, in infer_params
    return pjit.common_infer_params(pjit_info_args, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/pjit.py", line 486, in common_infer_params
    jaxpr, consts, canonicalized_out_shardings_flat = _pjit_jaxpr(
                                                      ^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/pjit.py", line 963, in _pjit_jaxpr
    jaxpr, final_consts, out_type = _create_pjit_jaxpr(
                                    ^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/linear_util.py", line 348, in memoized_fun
    ans = call(fun, *args)
          ^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/pjit.py", line 916, in _create_pjit_jaxpr
    jaxpr, global_out_avals, consts = pe.trace_to_jaxpr_dynamic(
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/profiler.py", line 314, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/interpreters/partial_eval.py", line 2203, in trace_to_jaxpr_dynamic
    jaxpr, out_avals, consts = trace_to_subjaxpr_dynamic(
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/interpreters/partial_eval.py", line 2225, in trace_to_subjaxpr_dynamic
    ans = fun.call_wrapped(*in_tracers_)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/linear_util.py", line 190, in call_wrapped
    ans = self.f(*args, **dict(self.params, **kwargs))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/gym/mjx/test.py", line 7, in test
    f_env = HalfCheetahMJXEnv()
            ^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/gym/mjx/Gymnasium-kalli/gymnasium/envs/mjx/half_cheetah_j_v5.py", line 50, in __init__
    MJXEnv.__init__(
  File "/home/master-andreas/gym/mjx/Gymnasium-kalli/gymnasium/envs/mjx/mjx_env.py", line 110, in __init__
    low=np.array(low_action_bound),
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/master-andreas/.local/lib/python3.11/site-packages/jax/_src/core.py", line 641, in __array__
    raise TracerArrayConversionError(self)
jax.errors.TracerArrayConversionError: The numpy.ndarray conversion method __array__() was called on traced array with shape float32[6].
The error occurred while tracing the function test at /home/master-andreas/gym/mjx/test.py:6 for jit. This value became a tracer due to JAX operations on these lines:

  operation a:f32[6,2] = device_put[device=None src=None] b
    from line /home/master-andreas/.local/lib/python3.11/site-packages/mujoco/mjx/_src/io.py:121:18 (put_model)
See https://jax.readthedocs.io/en/latest/errors.html#jax.errors.TracerArrayConversionError

But when I load mjx_model.nu it works fine (which is what your tutorial does), but this does not satisfy our requirements because we need to load the bounds along with the size of the action space.
class MJXEnv(gymnasium.functional.FuncEnv[...]):
    """The Base class for MJX Environments in Gymnasium."""
    def __init__(self, full_path, ...):
        self.model = mujoco.MjModel.from_xml_path(fullpath)
        self.mjx_model = mjx.put_model(self.model)

        # Set action space

        # This works
        self.action_space = gymnasium.spaces.Box(
            low=np.array(-np.ones(self.mjx_model.nu)),
            high=np.array(np.ones(self.mjx_model.nu)),
            dtype=np.float32,
        )
        # This does not work
        low_action_bound, high_action_bound = self.mjx_model.actuator_ctrlrange.T
        self.action_space = gymnasium.spaces.Box(
            low=low_action_bound,
            high=high_action_bound,
            dtype=jnp.float32
        )
      ...
    ...

Thanks!
Note: this is likely my last issue for MJX base-class for the release of Gymansium-MJX environments (hopefully).

Hi @Kallinteris-Andreas
self.mjx_model.actuator_ctrlrange is a jax Array, see here:
https://github.com/google-deepmind/mujoco/blob/1c7809e54261009698b5baab569faf700c8f8dad/mjx/mujoco/mjx/_src/types.py#L491
which gets "traced". When you try to create the gymnasium.spaces.Box, you are trying to materialize a traced array, which is what the error states.
Instead you can do:
        self.action_space = gymnasium.spaces.Box(
            low=self.model.actuator_ctrl_range[0],
            high=self.model.actuator_ctrl_range[1],
            dtype=np.float32
        )

Thanks!, it works!
For reference: I added the transpose operation
        self.action_space = gymnasium.spaces.Box(
            low=self.model.actuator_ctrlrange.T[0],
            high=self.model.actuator_ctrlrange.T[1],
            dtype=np.float32
        )


Feature: WebSocket Provider

Issue Type

[ ] Bug (https://github.com/ethjs/ethjs/blob/master/.github/CONTRIBUTING.md#bug-reports)
[x] Feature (https://github.com/ethjs/ethjs/blob/master/.github/CONTRIBUTING.md#feature-requests)

Description
Love love love this API, so much nicer to work with than web3.js.
Really hoping to see an ethjs-provider-wss module in the near future! 😁

There will be a round of bounties for it coming up. It's on the list.
Sent from my iPhone

On Feb 5, 2018, at 10:21 PM, Ron Gierlach<EMAIL_ADDRESS>wrote:
Issue Type
Bug (https://github.com/ethjs/ethjs/blob/master/.github/CONTRIBUTING.md#bug-reports)
Feature (https://github.com/ethjs/ethjs/blob/master/.github/CONTRIBUTING.md#feature-requests)
Description
Love love love this API, so much nicer to work with than web3.js.
Really hoping to see an ethjs-provider-wss module in the near future! 😁
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

the killer feature of the new<EMAIL_ADDRESS>is the support for websocket providers. But<EMAIL_ADDRESS>comes at a price, it's +100KB bigger than ethjs. Here is the result of npm run build in react project:
<EMAIL_ADDRESS>=> +170.26 KB
<EMAIL_ADDRESS>=> +62.94 KB

Given that Infura just recenlty added support for websocket =>  wss://rinkeby.infura.io/ws, we could now enjoy:
1- Enable use of filters eth_newFilter (available on infura websocket only)
2- Reduce network traffic when watching events (ws VS http polling)
Please upvote this issue to show your interest in a ws provider for ethjs :+1:

Any updates?

The websockets provider requires a lot of management, I would need to think about the API more. It might be that we just do a separate socket lib for now, which falls back on rpc under failure.
Sent from my iPhone

On Aug 6, 2018, at 10:49 AM, Sowmay Jain<EMAIL_ADDRESS>wrote:
Any updates?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.


Some Scroll Bars Too Small on Windows 10

Issue Type: Feature Request
I guess it has been several months since it changed, but the width of scroll bars on the explorer and bottom of the reading pane are thin, and I find myself having an annoying level of difficulty getting them to appear, and then stay appeared, long enough to get ahold of them with the mouse pointer.  Would be nice to have the same size as the vertial bar on the reading pane.
VS Code version: Code 1.41.1 (26076a4de974ead31f97692a0d32f90d735645c0, 2019-12-18T14:58:56.166Z)
OS version: Windows_NT x64 10.0.18362

Duplicate of https://github.com/microsoft/vscode/issues/68962


Spark nested schema pruning not working for lateral view explode

Description
This table contains a field with array type nested with tuple type.

explain formatted
   SELECT
            abflag,
            event.event_info,
            event.log_extra,
          FROM
            test_table
            LATERAL VIEW EXPLODE(events) t0 AS event
            LATERAL VIEW EXPLODE(split(event.log_extra [ 'abflags_v3' ], ',')) AS abflag
          WHERE
            event.event_id = 'xx'
            AND event.log_extra [ 'scene' ] = 'xxx' -- popular页
            AND event.event_info [ 'dispatch_id' ] IS NOT NULL
            AND event.event_info [ 'dispatch_id' ] != ''
            AND deviceid != 'xx'
            AND abflag IN ('xx', 'xx')
order by uid limit 100;

+----------------------------------------------------+
|                        plan                        |
+----------------------------------------------------+
| == Physical Plan ==
CHNativeColumnarToRow (10)
+- ^ ProjectExecTransformer (8)
   +- ^ FilterExecTransformer (7)
      +- ^ GenerateExecTransformer (6)
         +- ^ FilterExecTransformer (5)
            +- ^ GenerateExecTransformer (4)
               +- ^ ProjectExecTransformer (3)
                  +- ^ FilterExecTransformer (2)
                     +- ^ NativeScan parquet  (1)

(1) NativeScan parquet
Output [2]: [deviceId#130, events#151]
Batched: true
Location: InMemoryFileIndex [file:/data1/liyang/cppproject/spark/spark-3.3.2-bin-hadoop3/test_table]
PushedFilters: [IsNotNull(deviceId), Not(EqualTo(deviceId,xx)), IsNotNull(events)]
ReadSchema: struct<deviceId:string,events:array<struct<time:bigint,lng:bigint,lat:bigint,net:string,event_id:string,log_extra:map<string,string>,event_info:map<string,string>>>>

...

We observed that subcolumns in events field like time/lng/lat/net is read unnecessaryly.

SQL: 3750 has the same problem.


Use CloudFlare to host static assets (stylesheets, favicons, etc.)

CloudFlare recently launched a new way of hosting static assets from workers. https://developers.cloudflare.com/workers/static-assets/
This means we no longer have to embed our static assets directly into our WASM code. Small bundles load faster.


Added index and possibly added smaller thumbnails for in page slider

Thumbnail changes don't work on my local dev, so make sure you test it in dev before pushing to prod. The url should be correct.

Just FYI I saw this but may not have time to test and deploy it today. I'll try my best. Thanks gumby!


feat(instrumentation-fs): error hook

Which problem is this PR solving?
This adds a new error hook to the fs instrumentation to let users filter some errors from being reported as span events. This prevents trace data being polluted by irrelevant error events and failed spans for idiomatic filesystem access patterns where an error is expected, for instance opening a file without checking whether it exists then dealing with that case in the error handler.
Short description of the changes

Adds an optional errorHook option to the config that is called with the function name and error before reporting the error event. If the hook is present and returns false, the error event is not reported.
The error is still always propagated

@open-telemetry/javascript-approvers would it be possible for anyone to take a look ?


fix: Remove shortcut-key bindings

Fixes https://github.com/fabric8-analytics/fabric8-analytics-vscode-extension/issues/442

LGTM


chore: add volunteer nouraellm

Thanks for volunteering @nouraellm . Can you please make the changes @RakeshSangem suggested

@codewithvoid @RakeshSangem thanks for the review! changes ✅ .

Thanks you @nouraellm for making the changes. Welcome!


SR messaging channels not connected

Describe the bug
App fails to recognize incoming and outgoing channels configured in properties. This wasn't an issue in old kogito release version.
This warning is also not seen in quarkus dev mode, but only when a jar is built and executed.
mp.messaging.incoming.itemupdate.connector=quarkus-http
mp.messaging.incoming.itemupdate.path=/itemupdate
mp.messaging.outgoing.failureevent.connector=quarkus-http
mp.messaging.outgoing.failureevent.url=https://somehost.com/v1/pushEvent
Expected behavior
No warning should be displayed at startup and configured incoming, outgoing channels should be ready to receive and emit events respectively.
Actual behavior
WARN  [io.sma.rea.mes.provider] (main) SRMSG00207: Some components are not connected to either downstream consumers or upstream producers:
- IncomingConnector{channel:'itemupdate', attribute:'mp.messaging.incoming.itemupdate'} has no downstream
- OutgoingConnector{channel:'failureevent', attribute:'mp.messaging.outgoing.failureevent'} has no upstream
How to Reproduce?
No response
Output of uname -a or ver
Windows 11
Output of java -version
java 17
GraalVM version (if different from Java)
No response
Kogito version or git rev (or at least Quarkus version if you are using Kogito via Quarkus platform BOM)
999-snapshot
Build tool (ie. output of mvnw --version or gradlew --version)
gradle 8.6
Additional information
No response

@deepakkapoor23  I have tested https://github.com/apache/incubator-kie-kogito-examples/blob/stable/serverless-workflow-examples/serverless-workflow-consuming-events-over-http-quarkus/README.md on windows (similar scenario that the one you describe) and it is working fine.
C:\git\incubator-kie-kogito-examples\serverless-workflow-examples\serverless-workflow-consuming-events-over-http-quarkus\target>java -jar quarkus-app\quarkus-run.jar
__  ____  __  _____   ___  __ ____  ______
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2024-07-10 15:29:48,365 INFO  [org.kie.kog.add.qua.mes.com.QuarkusKogitoExtensionInitializer] (main) Registered Kogito CloudEvent extension
2024-07-10 15:29:48,397 INFO  [org.kie.kog.eve.imp.AbstractMessageConsumer] (main) Consumer for move started
2024-07-10 15:29:48,397 INFO  [org.kie.kog.eve.imp.AbstractMessageConsumer] (main) Consumer for start started
2024-07-10 15:29:48,567 INFO  [io.quarkus] (main) serverless-workflow-consuming-events-over-http-quarkus 1.0-SNAPSHOT on JVM (powered by Quarkus 3.8.4) started in 3.519s. Listening on: http://<IP_ADDRESS>:8080
2024-07-10 15:29:48,567 INFO  [io.quarkus] (main) Profile prod activated.
2024-07-10 15:29:48,567 INFO  [io.quarkus] (main) Installed features: [cache, cdi, jackson-jq, kie-addon-messaging-extension, kie-addon-process-management-extension, kie-addon-source-files-extension, kogito-serverless-workflow, qute, reactive-routes, resteasy, resteasy-client, resteasy-client-jackson, resteasy-jackson, security, security-properties-file, smallrye-context-propagation, smallrye-openapi, smallrye-reactive-messaging, smallrye-reactive-messaging-http, vertx]
2024-07-10 15:40:57,486 INFO  [org.kie.kog.eve.imp.ProcessEventDispatcher] (kogito-event-executor-1) Starting new process instance with signal 'start'
2024-07-10 15:40:57,686 INFO  [org.kie.kog.ser.wor.act.SysoutAction] (kogito-event-executor-1) [ "Hello!" ]

Therefore, we we need a reproducer to rule out something in your env or example that is causing this

@fjtirado did you try this on main or stable branch? I believe 999-snapshot is built from main?

@fjtirado This is again a gradle build issue. I tried the same example with both gradle and maven builds. Maven jar runs ok but gradle jar throws this warning and channels are disconnected. Can we please reopen this and have someone look at gradle build?
2024-07-10 16:29:07,814 WARN  [io.sma.rea.mes.provider] (main) SRMSG00207: Some components are not connected to either downstream consumers or upstream producers:
- IncomingConnector{channel:'move', attribute:'mp.messaging.incoming.move'} has no downstream
- IncomingConnector{channel:'start', attribute:'mp.messaging.incoming.start'} has no downstream

@fjtirado @gitgabrio See a comparison of gradle vs maven builds for generated sources in this example.
The gradle build has the entire kogito directory missing and hence has no controllers or emitters for messaging.
Gradle build output:

Maven build output:


Allow to remove Failed pods with no OwnerRef

Is your feature request related to a problem? Please describe.
Currently, Failed pods with no OwnerRef cannot be evicted by RemoveFailedPods policy.
Manually created pods are taken out of consideration as they will not be recreated by controllers. Though, I think it should not be a concern for Failed pods.
Describe the solution you'd like
Make Failed pods evictable despite lack of OwnerRef.
Describe alternatives you've considered
Manually deleting pods
What version of descheduler are you using?
descheduler version: 0.22.1

I commented in your PR before I saw this issue, but just for reference here applying the descheduler.alpha.kubernetes.io/evict annotation to any pod will make it evictable regardless of the various eviction checks. So I don't think this is necessary for just one strategy

@damemi well, when there are many people experimenting in the same dev-cluster, it's hard to force everyone to always add the annotation. E.g. when people create Jobs and then never clean them up. So, I thought it would be much easier to simply deschedule Failed pods in that case. Setting up mutation webhook would be way more difficult.

So we don't have to duplicate the comments, I propose we keep the discussion for this in this issue rather than the PR 🙂  From there (so others can see):

@weisdd I understand your point, but couldn't the same be said for other strategies like PodLifetime? Maybe we should delineate a group of strategies that apply to "expired" pods to consider this kind of behavior.
If we do add this, it should be as a non-default option since it is a change in behavior from the current default.

So we don't have to duplicate the comments, I propose we keep the discussion for this in this issue rather than the PR

@damemi agreed, was about to suggest the same :)
I've actually used descheduler for the first time today (it's been on my list of things to try for ages), so my perception of how things can potentially be done might be too far from the project's maintainers vision :)
Making Failed pods evictable felt in line with what I'd expect from descheduler. The change in the PR seemed to be the easiest solution and, which is more important, to be based on a safe assumption that nobody would want to have those pods around for longer than minPodLifeTimeSeconds (+ safe enough to make it default). Though, I'm open to whatever feels better to you.
Again, since I'm not very familiar with the code base, not sure how to properly design that delineation of strategies. :sweat_smile:
As for making the option non-default, maybe introduction of something like: evictFailedPodsWithNoOwnerRef: false (as a policy) would work.

Yeah I think there's definitely a useful solution here. It's an interesting suggestion, so I'd like to see if we can get some input from others on possibly fleshing it out a bit more. @ingvagabund @seanmalloy wdyt?

Make Failed pods evictable despite lack of OwnerRef.

Reading this sentence again, it makes sense to allow to remove these pods as well. Though, only as an option. Such pods still have logs which can be used for debugging.
/good-first-issue

Hi @ingvagabund, @weisdd
How about we add a flag RemoveBarePod  and default to false when initializing the DeshedulerServer? Then, define the removeBarePod flag on PodEvictor to accept the configuration from the command. Finally, we move theoriginal constraint
to Evictable() to add constraints depending on the removeBarePod.
...
ownerRefList := podutil.OwnerRef(pod)
if !pe.removeBarePod {
   	ev.constraints = append(ev.constraints, func(pod *v1.Pod) error {
		if  len(ownerRefList) == 0 {
			return fmt.Errorf("pod does not have any ownerrefs")
		}
		return nil
	})
}
...

I was wondering if these are the direction we would like to move forward. If that is OK, I could help with the change.

@babygoat I think that general approach sounds good, though rather than a flag this should be a Policy field (we're moving away from config flags)
@ingvagabund wdyt?

Definitely a Policy field. The approach looks good.

Thank @ingvagabund and @damemi  for your suggestions!  I will provide the PR later to address with the Policy approach.

/assign

Was about to say that I should be able to work on this soon, though thanks @babygoat for picking this up, I'll wait for your PR then :)

Hi @weisdd, thanks for your willingness to let me try. I was wondering if we could use the #688 to address the issue instead of your original PR #645.

Implemented by #688
/close


Vite monaco + Graphql

WIP - running into

error loading worker Error: Unexpected usage at EditorSimpleWorker.loadForeignModule

@jeffsee55 What is the purpose of this PR?

Sorry @alexdima - This was supposed to go to my fork! Just investigating issue with Vite + GraphQL, will close


bug: Error in Firefox: "ResizeObserver loop completed with undelivered notifications."

OS: Windows x64
Browser: Firefox 114

UserAgent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0

Description:

When I access localhost:7001 in Firefox browser while in development mode, I attempted to delete an existing application. However, when I clicked on the "Delete" button, an error popped up (see the error details below). Despite the error, the functionality was not affected, and the application was successfully deleted.
https://github.com/casdoor/casdoor/assets/3787410/c301b81c-521c-44eb-b6bd-e2ff43c88de4

Error:

Compiled with problems:
ERROR
ResizeObserver loop completed with undelivered notifications.
./node_modules/webpack-dev-server/client/overlay.js/createOverlay/<@http://localhost:7001/static/js/bundle.js:275054:58
ERROR
ResizeObserver loop completed with undelivered notifications.
./node_modules/webpack-dev-server/client/overlay.js/createOverlay/<@http://localhost:7001/static/js/bundle.js:275054:58
ERROR
ResizeObserver loop completed with undelivered notifications.
./node_modules/webpack-dev-server/client/overlay.js/createOverlay/<@http://localhost:7001/static/js/bundle.js:275054:58

Production mode doesn't have this issue
When I ran the following command:
yarn build 8000

After the completion of the yarn build command, I accessed localhost:8000 in Firefox browser and performed the same operation, but this time, the previous error did not occur.

Related to: https://github.com/ant-design/ant-design/issues/26621
Found by: @Baihhh


Missing data for Tranception_no_retrieval/Tranception_M in zero_shot_clinical_indels_scores.zip

Hi,
I downloaded  zero_shot_clinical_indels_scores.zip from https://proteingym.org/download webpage. All of the csv files in Tranception_no_retrieval/Tranception_M seem to be empty. Unfortunately, it may lead to unfair comparisons if the data for a method is missing.
I was wondering if you can take a look at the source of this problem.
Best wishes,
Mustafa

Thank you for flagging @tekpinar -- we will look into it asap

Hi @tekpinar -- issue should be now fixed. Thank you @danieldritter for taking care of it!
Will close the issue, but @tekpinar feel free to reopen if anything else is missing.
Best,
Pascal


Checking if a Listener is already registered.

The Allure Report adapter I'm working on is based on a Listener and a Library that spawns the listener. The pure Listener is started through the command line argument and the second is through the Library import in the Robot file.
The challenge I'm facing is when both options have been applied. In this case two listeners are active and this results in two files. Though it's an easy fix, remove the Library declaration, I'd like to prevent it by checking if the Allure Listener is already active in the Library initialization. Is there a way to do this?
In the source code I see a few references, but nothing that stands out as clear way of accessing the Listener registry and what attributes/methods are then available.

There's no direct way to accomplish this via Robot API. Probably you could do it somehow, but you'd most likely need to use internal APIs that are not stable between (major) versions. Easiest solution you could do is using a class level attribute that you increment or modify otherwise when instances are created. This is so simple that I doubt creating a public API to access registered listeners makes sense.

Your suggestion sparked the idea to use set a Robot Global variable using BuiltIn().set_global_variable('${ListenerActive}', True). This variable I then read during the initialisation of the Library BuiltIn().get_variable_value('${ListenerActive}', False). Using this boolean I then decide to initialize the Library Listener or not. This way I've been able to prevent the creation of duplicate log files.
It appears to me that the Listeners are processed in sequence of their initialisation. That would mean the Global Listener is initialised before the Library one and allows me to set a variable just before the Library are loaded. What do you think? I've checked this while running Robot and Pabot and all appears to be well.


Move to Material 3, Dependency and version updates

Annoyance: M3 text fields are @ExperimentalMaterial3Api. That would be confusing to new users, I think?

Annoyance: M3 text fields are @ExperimentalMaterial3Api. That would be confusing to new users, I think?

Yes, I think for now it is still better to use material2. There are still a lot of material3 functions that should be annotated with ExperimentalMaterial3Api in Compose Multiplatform 1.4.0.

Waiting for androidx.compose.material3:material3:1.1.0 to be in Compose Multiplatform (as per internal https://jetbrains.slack.com/archives/C015PT6ALK1/p1683958041731039?thread_ts=1683923364.886949&cid=C015PT6ALK1)

Hi,
material3 1.1.0 has been released! Will this be merged?
https://developer.android.com/jetpack/androidx/releases/compose-material3#1.1.0

@KevinnZou Thanks! I checked, looks great. I like your approach to add library publication with sample of usage this library. It is very usefull!
Feel tree to post such interesting topics to Kotlin Slack in channel #compose or #compose-desktop


Install the Cloud Foundry Command Line Interface (CLI)

Tutorial URL: https://developers.sap.com/tutorials/cp-cf-download-cli.html
Please specify the step you are referring to
Clicking on Done is not possible in step 1 & 3

Issue resolved - probably temporary problem.

Thanks for your feedback. I will close the issue.


fix: pytest-rerunfailures compatibility

Closes #879
TODO: We likely need a test that leverages pytest-rerunfailures directly. Maybe we should introduce a set of e2e tests with a number of different plugins and merge test coverage.

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

v4.7.1
GitHub release

Your semantic-release bot :package::rocket:


Deploy docs

Also:

Corrected docs URL for stable version
Added docs badge on dev version

@c42f Looks like the doc deployment works! Preview version on this PR here.
However, the CI is not happy with the nightly version despite not changing any other code besides adding deploydocs in docs/make.jl. It looks like failing in package pre-compilation.
Restarted the job in the previous build, which was successful and it seems to be failed too now - same error.


⚠ Bofrost.lu has degraded performance

In 02845d9, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2113 ms

Resolved: Bofrost.lu performance has improved in 46570db after 24 minutes.


API Restructure

Closes #8

Create Firestore device doc on device registration
Update device list "cache" on device doc creation
Listening for data telemetry batch from Pub/Sub, pushing data to Firestore

Tested, works


Hidden patterns

I would like the ability to hide files from any objects passed to templates for iteration in a consistent way. This could either be part of the filename (_hidden.file) or a Frontmatter property. The main thing is being able to include partials but not have them be visible by themselves in the styleguide.
A dumb example (only using the underscore here so I don't have to show the frontmatter contents of every file):
└── button/
    ├── _base.hbs      Won't show up in style guide
    ├── primary.hbs    May include {{> "button.base" }}
    └── secondary.hbs  May include {{> "button.base" }}

At present, patterns can be hidden by adding a collection.y(a)?ml or collection.json file to the collection (i.e. parent directory) and using the hidden property:
hidden:
  - base

I'd rather this be defined in the patterns themselves, for the same reasons as stated in #31.

Possible in patterns as well.


Missing items: [ITEMS]

Links to WOTLK Wowhead for each item:
https://www.wowhead.com/wotlk/item=38231/choker-of-forceful-redemption

Thanks for the report! This item is below our ilvl threshold though; we exclude items below ilvl 140 to keep the download size of the website manageable.


refactor: #160 revise and validatecommand methods to lift out the logging

Description
In order to better support consumption of the revise and validate logic, the ValidateCommand and Revise(-> RevisionCommand) has been refactored to handle returning a response object to allow for consumers to handle all messaging/logging and errors as they wish. The associated cobra commands have also been updated to support these changes and provide an example for consumers.

feat: create RevisionResponse struct
feat: create ValidationResponse struct
refactor!: revise.Revise -> revise.RevisionCommand
refactor!: ValidateCommand func now returns ValidationResponse instead of validation.Validator
refactor!: RevisionResponse func now returns RevisionResponse instead of revision.Reviser
fix: ReviseCmd now properly sets the default version to the latest supported oscal version.

Related Issue
#160 #164
Type of change

[x] Refactor (breaking)

Checklist before merging

[x] Test, docs, adr added or updated as needed
[x] Contributor Guide Steps followed

@mike-winberry As this project has evolved - I am curious on your thoughts about moving all required elements for library use out to src/pkg such that the expectation for library module support (thinking about library module contracts if you will) lives in a consolidated location. It's a bit of a tangent but the response structs look like they would be well suited with the rest of the  revision package. Thoughts?


Fix/footer UI misalignment

fixes #972
Resolved merge conflicts in #1033
Screenshots:

Great contribution to Hacktoberfest'24! 🎉


CTRL-P opens printer dialogue

When i start alm, i get a message saying: 'Find a file to work with Ctrl+P'. When i hit CTRL-P on my chromebook, it opens the printer dialogue!

it does on the npm version! but when i chekout master from git it seems to work!

@elmerbulthuis if you have focus on the browser address bar then it will open the print dialog (I don't think there is a way to intercept that). But if you have focus anywhere inside the browser window you get the file search :rose:
Maybe I should add a note here : https://basarat.gitbooks.io/alm/content/features/omni-search.html

@elmerbulthuis I think its because the version on npm is broken : https://github.com/alm-tools/alm/issues/59 I am investigating :rose:

@elmerbulthuis this is fixed in v 0.0.20 onwards


[password] Improve UX of password: validate if password is correct immediately after asking.

Currently, the script works as follows:

Asks for password
Downloads trader repository
Validates password after downloading trader repository.

The user might notice that the script proceeds to step 2 even after introducing a wrong password (but it will fail validating it later...).
This may give the impression to the user that the script is proceeding with a wrong password...
A possible improvement is to validate immediately after the user enters the password. This would require refactor when the trader repository is downloaded.

Another UX improvement would help Mac users to avoid confusion between two passwords: service-level password and sudo password.
Namely, the script asks for a first password (service-level)
`Enter your password
Your key files are protected with a password.
Please, enter your password: `
later in the execution it may ask for a password again (sudo password)
`Generated Deployment!
Type:                 docker-compose
Agents:               1
Build Length          10799
Password:`


added: script to generate markdown table

PoC script to auto-generate markdown table from variable definitions of our cluster-class.
The script renders the cluster-class.yaml template using helm template and parses the spec.variables to generate a markdown table. The result is only printed to stdout currently.
The source cluster-class.yaml is hard-coded to cluster-stacks/providers/openstack/scs/1-27/cluster-class/ as of right now. This needs to be adapted once the consolidation of the directory structure (#56) is done.
Usage:
To use the script, the pyyaml library needs to be installed.
# execute script
python cluster-stacks/hack/docugen.py

The output can then be copied to a markdown file, redirected to a file:
python cluster-stacks/hack/docugen.py > <destination_file>.md

or piped to xclip for example:
python cluster-stacks/hack/docugen.py | xclip -selection clipboard

Possible extensions
While the script does a good amount of "legwork" already, it could be further extended to feed the result to our documentation as @mxmxchere commented in the issue. This could be implemented in a way that either:

the script uses a "template" file for the corresponding docs page, fills the table and provides the output to manually commit to the docs repo
or:
prepare a docs page file from a template as above and then utilize a git library to automatically create a commit

With the later being a bit more complicated but further automatic this task.
closes: #72

Result example

Name
Type
Default
Example
Description
Required

external_id
string
"ebfe5546-f09f-4f42-ab54-094e457d42ec"
"ebfe5546-f09f-4f42-ab54-094e457d42ec"
ExternalNetworkID is the ID of an external OpenStack Network. This is necessary to get public internet to the VMs.
False

controller_flavor
string
"SCS-2V-4-20"
"SCS-2V-4-20"
OpenStack instance flavor for control-plane nodes.
False

worker_flavor
string
"SCS-2V-4-20"
"SCS-2V-4-20"
OpenStack instance flavor for worker nodes.
False

controller_root_disk
integer

20
Root disk size in GiB for control-plane nodes. OpenStack volume will be created and used instead of an ephemeral disk defined in flavor. Should be used also for the diskless flavors.
False

worker_root_disk
integer

20
Root disk size in GiB for worker nodes. OpenStack volume will be created and used instead of an ephemeral disk defined in flavor. Should be used also for the diskless flavors.
False

yawol_flavor_id
string
""
"0a79590e-10d7-4c2c-8f69-ca0a2c6208d2"
ID of the existing flavor used as a default yawol flavor.
False

yawol_image_id
string
""
"f0b2ef46-f0ff-43d2-9c08-f58a5a6e9060"
ID of the existing imaged used as a default yawol image.
False

kube_vip_network_id
string
""
"40a51f6c-9e4b-4b24-9187-49851a410c97"
ID of the existing network. The network should have one subnet with one port reserved as virtual IP.
False

kube_vip_apiserver_virtual_ip
string
""
"<IP_ADDRESS>"
Virtual IP address reserved in kube_vip_network_id.
False

kube_vip_apiserver_public_ip
string
""
""
Public IP address associated with kube_vip_apiserver_virtual_ip. It is needed only when the management cluster is on a different network as a workload cluster.
False

openstack_security_groups
array
[]
['security-group-1']
The names of the security groups to assign to the instance
False

cloud_name
string
"openstack"
"openstack"
The name of the cloud to use from the clouds secret
False

secret_name
string
"openstack"
"openstack"
The name of the clouds secret
False

controller_server_group_id
string
""
"3adf4e92-bb33-4e44-8ad3-afda9dfe8ec3"
The server group to assign the control plane nodes to.
False

worker_server_group_id
string
""
"869fe071-1e56-46a9-9166-47c9f228e297"
The server group to assign the worker nodes to.
False

ssh_key
string
""
"capi-keypair"
The ssh key to inject in the nodes.
False

apiserver_loadbalancer
string
"octavia-amphora"
"none, octavia-amphora, octavia-ovn, kube-vip"
"In this cluster-stack we have two kind of loadbalancers. Each of them has its own configuration variable. This setting here is to configure the loadbalancer that is placed in front of the apiserver.To configure the loadbalancer for the workloads, see variable workload_loadbalancer.You can choose from 4 options:none:  No loadbalancer solution will be deployedoctavia-amphora:  (default) Uses openstack's loadbalancer service (provider:amphora)octavia-ovn:  Uses openstack's loadbalancer service (provider:ovn)kube-vip:  Uses kube-vip as loadbalancer.  You have to provide the following additional variables:     kube_vip_network_id    kube_vip_apiserver_virtual_ip    kube_vip_apiserver_public_ip    Requires Kubernetes version < 1.29  Also the settings node_cidr and dns_nameservers will no longer have an effect.
False

workload_loadbalancer
string
"octavia-amphora"
"none, octavia-amphora, octavia-ovn, yawol"
"This setting here is to configure the loadbalancer solution for your services inside your cluster.If you want to configure the loadbalancer in front of your apiserver, see variable apiserver_loadbalancer instead.You can choose from 4 options:none:  No loadbalancer solution will be deployedoctavia-amphora:  (default) Uses openstack's loadbalancer service (provider:amphora)octavia-ovn:  Uses openstack's loadbalancer service (provider:ovn)yawol:  Uses yawol as loadbalancer.  You have to provide the following additional variables:     yawol_flavor_id    yawol_image_id   Also note this setting does not work with application credentials (only username/password)"
False

dns_nameservers
array
['<IP_ADDRESS>', '<IP_ADDRESS>']
['<IP_ADDRESS>', '<IP_ADDRESS>']
"DNSNameservers is the list of nameservers for the OpenStack Subnet being created. Set this value when you need to create a new network/subnet while the access through DNS is required.This setting has no effect when apiserver_loadbalancer is set to kube-vip.However you can set the dns server when creating the subnet for kube-vip."
False

node_cidr
string
"<IP_ADDRESS>/20"
"<IP_ADDRESS>/20"
"NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.This setting has no effect when apiserver_loadbalancer is set to kube-vip.However you can set the node_cidr when creating the subnet for kube-vip."
False

certSANs
array
[]
['mydomain.example']
CertSANs sets extra Subject Alternative Names for the API Server signing cert.
False

Nicely done! Good work, as this is currently a standalone tool without any side effects i am proposing to merge this quickly and sort further topics in consecutive issues. You already mentioned a few of those further topics. Unfortunately we have, from my point of view, not yet sorted out a good folder structure/versioning/releasing, that is all kind of a mess. But regardless of the final folderstructure i think that the docu-script (or a mechanism including this script) will need to be able range/loop over different versions/clusterstacks. I think it is best to use the current folder structure (provider->providername->versions) although we know that this will likely change in the future, i just assume that it should not be too hard to then adapt the new fold-structure.
When the new mechanism (could be standalone or part of the script) loops over the folderstructure it can create one docu-page per clusterclass. I also like the idea of "enriching" the generated markdown file a little bit. We could have something like header.md and footer.md that is put above and below the table. Perhaps even with templating (i like jinja :) ), but currently i see no use for that yet. But that might come in the future, i am thinking of a complete example cluster.yaml where the cluster-class field could be templated. And lastly you have been talking about making automated PRs in the docs repo, i really like that idea. It would be best if the script can detect if there is an actual change before opening a PR, that way we can trigger the script as often as we like too and it will only start to alter the outside world when it becomes necessary (idempotentcy). So now i will try to parse my words into a better list:

[ ] range mechanism
[ ] header + footer
[ ] PR against docs repo (if actual changes exist)


Windows - <C-o> - Open file/folder with default system application causes errors

Description
Hello, thanks for this great plugin :)
When I try to open the current file or folder via <C-o>, then I get the following error message:
session.vim 2.13.1: Opened global 'angulart-test-project' session from ~\VimFiles\sessions\angulart-test-project.vim.
Do you need to configure your work environment as `luassert`?
E5108: Error executing lua ...\site\pack\packer\start\plenary.nvim/lua/plenary/job.lua:106: start: Executable not found
stack traceback:
	...\site\pack\packer\start\plenary.nvim/lua/plenary/job.lua:106: in function 'new'
	....nvim/lua/telescope/_extensions/file_browser/actions.lua:512: in function 'run_replace_or_original'
	...packer\start\telescope.nvim/lua/telescope/actions/mt.lua:65: in function 'key_func'
	...k\packer\start\telescope.nvim/lua/telescope/mappings.lua:341: in function 'execute_keymap'
	[string ":lua"]:1: in main chunk
stack traceback:
	[C]: in function 'error'
	...\site\pack\packer\start\plenary.nvim/lua/plenary/job.lua:106: in function 'new'
	....nvim/lua/telescope/_extensions/file_browser/actions.lua:512: in function 'run_replace_or_original'
	...packer\start\telescope.nvim/lua/telescope/actions/mt.lua:65: in function 'key_func'
	...k\packer\start\telescope.nvim/lua/telescope/mappings.lua:341: in function 'execute_keymap'
	[string ":lua"]:1: in main chunk

I am not sure what the issue might be, maybe it has something to do with the fact that I use windows.
Thanks for your help
Neovim version
NVIM v0.8.0-1210-gd367ed9b2
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

Operating system and version
Windows 10 - 64 bit
Steps to reproduce

Open the file browser
Select any file
Use the <c-o> shortcut to the current file via a system application

Expected behavior
The file should open via the default system application without any errors
Actual behavior
Error get thrown
Minimal config
local telescope = require('telescope')
telescope.setup({})
telescope.load_extension('file_browser')

I'm currently travelling for my job. Could you please give me a friendly ping next week and I will look into this? Thanks :)

Hey, I can take a look into this.
My initial impression is that this is Windows related. Since I don't have a Windows machine I can test off of you'll have to bare with me a little bit.
Can you open up command prompt and run start .? This should open up the File Explorer in the current path but from the looks of that error message, seems like start isn't an executable for you... which doesn't seem right.

Hello. I tested out start . with cmd but it seems to be working fine, it opens the file explorer in the current window.

Ok, I managed to do a little testing on a Windows machine. I believe the issue comes down to how shell built-ins aren't in the $env:Path on Windows for whatever reason.
Can you confirm :echo executable('start') returns 0 but :!start . works?

Yes, i tested it out and this is exactly what happens

Ok, I managed to do a little testing on a Windows machine. I believe the issue comes down to how shell built-ins aren't in the $env:Path on Windows for whatever reason.

plenary.jobs won't also be able to pick up start then, because it has the same $PATH visibility as nvim itself. From what I can tell, @DasOhmoff will have to adjust $PATHs make :echo executable('start') to show 1 and then it just works. Unfortunately, I cannot test with Windows so I wouldn't know how to fix this.

That will probably be the best thing to do but looking into it a bit, I couldn't find any obvious way to do it.
A dirty fix might be to bind <C-o> to a custom open function. Something like this maybe?
local my_open = function(prompt_bufnr)
  local quiet = action_state.get_current_picker(prompt_bufnr).finder.quiet
  local selections = fb_utils.get_selected_files(prompt_bufnr, true)
  if vim.tbl_isempty(selections) then
    fb_utils.notify("actions.open", { msg = "No selection to be opened!", level = "INFO", quiet = quiet })
    return
  end

  for _, selection in ipairs(selections) do
    vim.cmd(string.format('silent !start "%s" &', selection:absolute()))
  end
  actions.close(prompt_bufnr)
end

Here is my workaround:
local actions = require("telescope.actions") require("telescope").setup {   extensions = {     file_browser = {       mappings = {         ["i"] = {           ["<C-o>"] = actions.select_default         },         ["n"] = {           ["o"] = actions.select_default         },       },     }   } }

@khanghy1000 Thank you for your workaround, this works perfectly and has been driving me crazy!


Error message when applying traits

Describe the bug
The error message is unsharp when TraitDefinition template is wrong
Expected behavior
Displayed in application events
Additional context
TraitDefinition.yaml
apiVersion: core.oam.dev/v1beta1
kind: TraitDefinition
metadata:
  annotations:
    definition.oam.dev/description: "TraitDefinition"
  name: wrong
spec:
  appliesToWorkloads:
    - worker
  podDisruptive: false
  schematic:
    cue:
      template: |
        // trait template can have multiple outputs in one trait
        outputs: service: {
        	apiVersion: "v1"
        	kind:       "Service"
        	metadata:
        		name: context.name
        	spec: {
        		selector: {
        			"app.oam.dev/component": context.name
        		}
        		port: [
        			for k, v in parameter.http {
        				port:       v
        				targetPort: v
        			},
        		]
        	}
        }

        parameter: {
        	// +usage=Specify the mapping relationship between the http path and the workload port
        	http: [string]: int
        }

ports => port
Application.yaml
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: nginx
spec:
  components:
    - name: nginx
      type: worker
      properties:
        image: "nginx"
      traits:
        - type: wrong
          properties:
            domain: basic.example.com
            http:
              "/": 80

Yes, we should do something like kubectl dry-run in webhook for the rendered results.


Review prototypes and designs to identify common elements to add to Aurora

Based on prototypes and wireframes built in the last several months. Identify some common design elements that we may want to include as a standard going forward in Aurora.

This card will carry into next sprint. A google docs file will be made to capture the elements.
https://docs.google.com/document/d/1xG-DYAWquVFYj8CQ_ahZmH999xHG4IgzkKuisyxuhFw/edit?usp=sharing

A draft list is now available for additions, review and more discussion!
https://docs.google.com/document/d/1xG-DYAWquVFYj8CQ_ahZmH999xHG4IgzkKuisyxuhFw/edit
@s-duffey
@LemieuxGen

@MPM2018 I'm good with all the items proposed and will create Github issues for them! :) @LemieuxGen can help determine when we would want to work on each / priority levels


Batcher not sending cookies with each request.

We are loving the http batcher but have found that it breaks our login system as it is not passing the cookies along with each header in the POST call to /api/batch.
The main headers for the overall POST have the cookies, but not the "wrapped" ones.
  We are using Web API 2

Hmmm, this is an interesting one.  I'm not sure what the spec says about sending cookies with every sub request.  The cookies are added to the post automatically by the browser and it seems silly to send large cookies up with every sub request as this would dramatically increase the size of the message.  However, it does make sense to send them from an atomic point of view.  I think the way the web api http batcher handler is implemented is that is make a sub request for each item in the batch.
I think we should look at two approaches here:

See if I can send cookies with each request in the batch if needed.
See if we can modify the web api http batch handler to append the cookie is receives on the parent request to all sub requests.  This would reduce the size of the request from the client.

Let me know what you think.
Jon

I'm with you on it feeling like a waste and would love to see if we can get #2 working, that seems ideal, but if we can't then it would probably have to be #1.

Any update on this?

Hi Jon, we have only a few weeks left in our project and this one is a major bug for us right now  Is there an estimate as to when you will have some time to work on this?
Thank you!

I'm looking at it today - sorry I have neglected this I have been so busy!  A few quick questions:

Are you cookies HTTPOnly?
Do you need to send cookies on CORS requests?

Thanks.

No CORS for us. I'm not sure what you mean by Http only. All traffic is https if that's what you mean.
Sent from my iPhone

On May 28, 2015, at 4:17 PM, Jon Samwell<EMAIL_ADDRESS>wrote:
I'm looking at it today - sorry I have neglected this I have been so busy! A few quick questions:

Are you cookies HTTPOnly?
Do you need to send cookies on CORS requests?

Thanks.
—
Reply to this email directly or view it on GitHub.

OK, if you don't know about it they more than likely aren't!
So the new release v1.8.0 have code to include cookie on each segment of the batch request.  You will need to enable this by setting 'sendCookies' to true on the config object for each batch endpoint.
    app.config([
            'httpBatchConfigProvider',
            function (httpBatchConfigProvider) {
                httpBatchConfigProvider.setAllowedBatchEndpoint(
                        'http://localhost:8080',
                        'http://localhost:8080/api/batch', {
                            batchRequestCollectionDelay: 500,
                            minimumBatchSize: 2,
                            sendCookies: true,
                            enabled: false
                        });
            }
    ]);

If this doesn't work you have HTTPOnly cookie so we will need to figure out a server solution to this such as appending the cookies to each sub request as we mentioned above.  Let me know how this goes.
Sorry again for the delay!

@dsargent3220  did this work for you?

Jon, sorry I hadn't gotten back to you on this.
No it didn't as it turns out we did have HTTPOnly cookies, so we went with the server route instead.
My coworker took that on and got it working.
Here's the code we used.  This is the default auto batch code from web API with the exception of the changes as noted in the comments (around line 53)
namespace System.Web.Http.Batch
{
	using System.Collections.Generic;
	using System.Diagnostics.CodeAnalysis;
	using System.Net.Http;
	using System.Threading;
	using System.Threading.Tasks;

	/// <summary>
	/// Default implementation of <see cref="HttpBatchHandler"/> that encodes the HTTP request/response messages as MIME multipart.	///
	/// </summary>
	/// <remarks>
	/// By default, it buffers the HTTP request messages in memory during parsing.
	/// </remarks>
	public class SelHttpBatchHandler : DefaultHttpBatchHandler
	{
		/// <summary>
		/// Initializes a new instance of the <see cref="SelHttpBatchHandler"/> class.		///
		/// </summary>
		/// <param name="httpServer">The <see cref="HttpServer"/> for handling the individual batch requests.</param>
		public SelHttpBatchHandler(HttpServer httpServer)
			: base(httpServer)
		{
			this.ExecutionOrder = BatchExecutionOrder.Sequential;
		}

		/// <summary>
		/// Converts the incoming batch request into a collection of request messages.
		/// Override so we can copy the header information from the batch request in to each inner request.
		/// </summary>
		/// <param name="request">The request containing the batch request messages.</param>
		/// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
		/// <returns>A collection of <see cref="HttpRequestMessage"/>.</returns>
		[SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "We need to return a collection of request messages asynchronously.")]
		public override async Task<IList<HttpRequestMessage>> ParseBatchRequestsAsync(HttpRequestMessage request, CancellationToken cancellationToken)
		{
			if (request == null)
			{
				throw new ArgumentNullException("request");
			}

			List<HttpRequestMessage> requests = new List<HttpRequestMessage>();
			cancellationToken.ThrowIfCancellationRequested();
			MultipartStreamProvider streamProvider = await request.Content.ReadAsMultipartAsync();
			foreach (HttpContent httpContent in streamProvider.Contents)
			{
				cancellationToken.ThrowIfCancellationRequested();
				HttpRequestMessage innerRequest = await httpContent.ReadAsHttpRequestMessageAsync();

				// This is different from DefaultHttpBatchHandler
				// Next three lines are custom (Blake Barnett).
				// Gets the request cookie information and passes it to each inner request
				IEnumerable<string> cookie = null;
				if (request.Headers.TryGetValues("Cookie", out cookie))
				{
					innerRequest.Headers.Add("Cookie", cookie);
				}

				// Get properties from Batch request
				innerRequest.CopyBatchRequestProperties(request);
				requests.Add(innerRequest);
			}

			return requests;
		}
	}
}

You would then use this the same way you would the default batch handler in the web api config section.
	config.Routes.MapHttpBatchRoute(
	routeName: "batch",
	routeTemplate: "api/batch",
	batchHandler: new SelHttpBatchHandler(GlobalConfiguration.DefaultServer));

Hope that helps.

Thanks for this I'll add it to the read me in case anyone else has the same issue.


Better error messages from ledger

What
Error messages given by the CLI to the user should:

Give specific, usable details about the error.
Reveal what caused the error.
Help the user to solve the error.

On this Discovery process we have the following goals:

[ ] Audit error messages coming from ledger.
[ ] Figure how to resolve serialization issues surrounding the changing of error messages.

Drivers

DevX

Why
Cryptic, unclear error messages can lead to waste of time and frustration.  Good error messages reduce friction and make the coding experience more enjoyable.
Benefits by persona
Dapp Developers, SPO: Quick recovery from errors, improved satisfaction, reduced errors.
Dependencies
Talk Ledger team about serialization of error messages.

How about assigning a unique number to each of the error messages? CNE(rror) or CNW(arning) as prefix, then two digits for the range
01 Consensus
02 configuration
03 network
04 block production
And then a four digit error number
CNE020001 invalid json in node config file
This way it will become possible to quickly find content and answers in web, chat and forum mediums


increment ims version to 3.9.5

Summary and Scope
Added virtiofs daemon configuration annotation to IMS configmaps. This resolves a bug where images built without DKMS  and subsequently customized with DKMS enabled would result in filesystem extended attributes failing to write.
Issues and Related PRs

Resolves CASMCMS-8362

Testing
Tested on:
This fix was tested on the Mug system.
Test description:
Added the annotations to IMS configmaps and ran jobs successfully.
Risks and Mitigations
The bug was the risk.
No risk that I can foresee for this inclusion.
Pull Request Checklist

[x] Version number(s) incremented, if applicable
[x] Copyrights updated
[x] License file intact
[x] Target branch correct
[x] CHANGELOG.md updated
[x] Testing is appropriate and complete, if applicable

/backport stable/1.5


Use for Streaming Record Batches?

The Table abstraction is good when you have all the data, but I want to be able to receive an initial message (over a websocket) with a schema and the first record batch, and then periodically receive more record batches for the same schema on the websocket.
Is there an easy way to bend this code to my will or is an additional abstraction required?

@mindjuice yes! we plan to support streaming record batches via AsyncIterables (and an Observable API should follow soon after). We haven't done it yet, but we just need an async generator form of readBuffers and readStream, e.g:
export async function* readBuffersAsync(buffers: AsyncIterable<Uint8Array | Buffer | string>) {
    const dictionaries: Dictionaries = {};
    for await (let { schema, batch } of readStreamAsync(buffers)) {
        /* etc. */
        yield vectors;
    }
}

Cool...looking forward to that.  I think I've found a way to use the code as is for now, but that enhancement will be great.

@mindjuice sounds good. you should be able to reuse most of the functions in reader/ with an async scan form of readBuffers. If you only need access to a single RecordBatch worth of values at a time, this should be all you need. Since this is essentially what I'd do for the AsyncIterable version, feel free to submit a PR if you settle on an implementation you're happy with.
The concrete Vector types will also virtualize values across RecordBatches, so they can be accessed as a single logical Vector, so it's easy to do things like slice all values to a dense TypedArray for WebGL. The Table.from method does this to create a unified view of its columns across RecordBatches.


Project Tutorial Proposal - ThousandthStar

Making a snake clone with Pygame. - Intermediate
Making a discord bot that can speak in voice channels - Intermediate
Make a small website with Django - Advanced

Note: for the discord bot that can speak in voice channels, this could be difficult because the library I would use (pyttsx3) uses the system voice which works differently on some OSs. I would have to find another library.

Hi @ThousandthStar! Woohoo! So glad you came. We love:

"Build a Snake Game with Pygame" and

3 "Build a Website with Django"

Second one is great too, but we just released a Discord Bot project last month. Very different than your idea but still, trying to diversify right now.
One more thing before we get started. Can you let us know more about yourself: what's your name, where do you live, how long have you been coding, and maybe a one-liner about what you do? Just want to make sure we are good to go and we can post about you after the project drops.
If you don't feel comfortable sharing that here in this Isssue, totally understand, you can also email us at<EMAIL_ADDRESS>with the above info! Looking forward to getting this started. 🙏

I sent an email with the above information.

Cn i contribute with you developing that django website

Hi @ThousandthStar, the program is super interesting 🎉
Just a few changes:

Please follow the formatting guidelines.
Python indentations are two spaces
Are the collisions still a bit buggy? If yes, please make them less buggy
Instead of having a running=True, maybe have a setup() function and a game_loop() function to make the code more readable


Offline-First guide misses a microflow practice.

The Offline-first guide mentions that a microflow can be called from a nanoflow. But it comes with some strong limitations, that are seriously limiting the use of microflow with this approach, and prevent to implement any "online" capability.
The workaround is to trigger the microflows by an event during synchronization. This allows to pass persistable objects to the microflows, as inputs or ouputs. Of course, like any synchonization, the app will need to be online to be successful.
I think this practice should be part of the documentation.
Example : you want to implement a search functionality in a mobile app.
1-Create a persistable "SearchCriteria" persistable entity with an "after commit" event that calls a "PerformSearch" microflow.
2-on the mobile, create a "SearchCriteria" and synchronise it.
3-Synchronisation uploads the searchcriteria and commit it in server DB
4-the "PerformSearch" microflow is executed as an event, it attaches the results to the "SearchEntity"
5-Synchronization downloads the results

Thanks @NicolasBRUNAUD
Please verify this with the team @ConnorLand

Will do @Adam-Dupaski .

Hello @NicolasBRUNAUD,
I've had a chat with the development team about this. I'd like to pass along two key points of information:

From the workaround and example you provided, the developers guess that you found pain points passing/returning persistable data to your microflows. Does that sound accurate? To address that point, we currently suggest the following in the Best Practices section of Offline-First: Use before- and after-commit microflows to pre- or post-process data. You may have already seen that text, but I just wanted to drop it here again in case.
Stefanos and others are currently researching offline-first user patterns. That research will be turned into internal documentation, and then public-facing external documentation. Stefanos has added a link from this GitHub issue to his research so that he can keep it in mind when improving technology. I will keep it in mind as I hone documentation.

I can keep this issue open, or I can copy/paste your pattern into Stefanos' research doc. Either way, rest assured that future improvements to tech and docs will improve this pain point you've identified. Thank you.

Thanks for the response, I appreciate. You're right, I realize now that it's already mentioned in the best practice.  I still think that it deserves more exposure. You're understanding is correct, passing /returning is technically the limitation that we can workaround with this practice, and by extension, I think that any online functionality requires to pass or return objects. The need for such functionality comes very early in development process and we should teach this practice in the guide, and even in the learning path, because "offline first" doesn't mean "offline only". Have a great weekend! Envoyé depuis mon appareil Galaxy
-------- Message d'origine --------De : ConnorLand @.> Date : 25/06/2021  15:34  (GMT+01:00) À : mendix/docs @.> Cc : NicolasBRUNAUD @.>, Mention @.> Objet : Re: [mendix/docs] Offline-First guide misses a microflow practice. (#3474)
Hello @NicolasBRUNAUD,
I've had a chat with the development team about this. I'd like to pass along two key points of information:
From the workaround and example you provided, the developers guess that you found pain points passing/returning persistable data to your microflows. Does that sound accurate? To address that point, we currently suggest the following in the Best Practices section of Offline-First: Use before- and after-commit microflows to pre- or post-process data. You may have already seen that text, but I just wanted to drop it here again in case.
Stefanos and others are currently researching offline-first user patterns. That research will be turned into internal documentation, and then public-facing external documentation. Stefanos has added a link from this GitHub issue to his research so that he can keep it in mind when improving technology. I will keep it in mind as I hone documentation.
I can keep this issue open, or I can copy/paste your pattern into Stefanos' research doc. Either way, rest assured that future improvements to tech and docs will improve this pain point you've identified. Thank you.
—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.

I have noted the need for more explicit descriptions of pass/return functionality in Stefanos' Offline-First research doc. We want to make sure we are teaching our customers best practices in a quick, straightforward way.
We will make sure the docs and learning paths receive upgrades this quarter when Stefanos' research is implemented.


Clean up manifest apply output

Changes this:
✔ Finished applying manifest for component Pilot.
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
Deployment is not ready: istio-system/istiod
Waiting for resources ready with timeout of 5m0s
- Applying manifest for component AddonComponents...

to this:
✔ Finished applying manifest for component Pilot.
  Waiting for resources to become ready...
  Waiting for resources to become ready...
- Applying manifest for component AddonComponents...

Timeout amount is reported if the command times out.

@ostromart: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
c23898d556adad4e68db40f7f419f1fc74a356d2
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Add pages and effects

I have added different pages to the site and tried to enhance the effects
please accept the PR ..

Hey @papali1305! Please provide the changed what you made in a video. I'll review it and will go with the best because your PR has conflicts with 3 components. Thanks for the efforts


states tag translation in contribution tab

Description
Used the JSON states taxonomy to translate States tags in contribution tab.
⚠ Need to clear storage and restart the app because Taxonomy are loaded only at first start.

Related issues

Fixes #1497

Screenshots

For french,

For Estonian (translation not available in API)

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

It is in build.gradle.kts 🚀
https://github.com/openfoodfacts/openfoodfacts-androidapp/blob/1bcc4b7d7fd77bb550aedc54a6360b1828e99fbd/app/build.gradle.kts#L347

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

It is in build.gradle.kts 🚀
https://github.com/openfoodfacts/openfoodfacts-androidapp/blob/1bcc4b7d7fd77bb550aedc54a6360b1828e99fbd/app/build.gradle.kts#L347

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

It is in build.gradle.kts 🚀
https://github.com/openfoodfacts/openfoodfacts-androidapp/blob/1bcc4b7d7fd77bb550aedc54a6360b1828e99fbd/app/build.gradle.kts#L347

Thanks @VaiTon . I have pushed the changes.

I have tried adding the create table and db version to OFFDatabaseHelper , but that doesn't seem to help with the SQLite Exception for table does not exist.
@VaiTon can you please look into where the config for db version is maintained, I was unable to find that

It is in build.gradle.kts 🚀
https://github.com/openfoodfacts/openfoodfacts-androidapp/blob/1bcc4b7d7fd77bb550aedc54a6360b1828e99fbd/app/build.gradle.kts#L347

Thanks @VaiTon . I have pushed the changes.

Thank you! 🎉

Thank you! 🎉


minor updates to aws pages

Description
Remaking Diana's PR
Checklist:

[ ] I have reviewed the style guide.

Good with these changes barring the potential broader than expescted layout change


xbescanner: Adds mechanism to load save game icons.

I thought it might be interesting to show the save game icon for either all of the XBEs or the actively selected one.

I really like the idea of this, but I fear it might slow down hw renderer progress significantly.
Might be a while before I merge this.

No problem, given that the framerate is already quite low on hardware I think it's entirely reasonable to let this sit until accelerated rendering is available. Hopefully we can also render the DXT1 textures without having to decompress them as well.

Putting in draft until #110 is resolved


in getAll, added callback error.

Thanks. This is an issue I ignored, but it requires thinking it through a little more. We probably don't want to call the callback more than once. Should we abort the entire getAll if one get fails? Continue fetching the rest and call the callback with both error and data arrays? Hmm.

" Continue fetching the rest and call the callback with both error and data arrays?...
hum.... i think it is the best solution....
thx for your reply...

I actually ended up going with the choice of continuing or stopping on error; what do you think of e0398ed6?

nice, i sended a mail to you...check<EMAIL_ADDRESS>


Improve Menu/Navigation Experience

[x] Welcome is not needed, you click on starbeam.one, and there you are
[x] Help should go down in footer (the icon in the header is also not needed)
[x] Every item of Information can go to the footer
[x] Except support, that should be a simple mailto in the footer. Users do understand the chat icon. Discord invitation should be in the footer at follow section (I guess it is already there, never clicked it)
[x] The catalogs of the users can be at one page with tabs of artists, collectors, all users, there is no need for 3 menu items
[x] The markets.. well.. I already issued something about having one market... you could start with one market page that offers a choice on the top of the page filtering for the current ones, this way it can become one menu point as well, this will also result quicker switch between markets
[x] Definitions, new inventory, existing inventory should be also one menu entry. Currently they are on a same page, which is great
[x] Identities should not be in the menu, but on the user profile
[x] Assets should be removed from the menu, and even the page should not exist. This is a technical details that you create assets for inventory items. Also unused assets should be checked every day and deleted automaticaly if they are not linked. This way you get some space back. I know it's a bit rough, but believe me, people don't care about these.
[x] Add notifications to the menu. If deposit, withdraw and user account can get a menu item, this can as well. Starvault also deserves a place here.

Except support, that should be a simple mailto in the footer. Users do understand the chat icon. Discord invitation should be in the footer at follow section (I guess it is already there, never clicked it)

The support page outlines all of this.  There is a button to email support there.  It seems like you are suggesting the Discord but then correctly denote that it's already there.  It is unclear the ask here.

Identities should not be in the menu, but on the user profile

Note that this is the Sales Profile which does not exist until you promote your profile to do so.  Identities are already listed there.
Changes above are deployed in staging:
https://staging.starbeam.one/
You may need to sign in and promote your profile to test the Sales Profile functionality above.  This uses a different database than production.

Also unused assets should be checked every day and deleted automaticaly if they are not linked. This way you get some space back

Captured in #63

Hmm.. It's not exactly what I proposed..  The first and foremost error is, that I am not able to issue an inventory.
Inventroy:

Add one menu point for inventory/definition page

Market:

There should not be a middle page
Proposing two menu points: sale and resale listings
Both can be filtered for standard, featured and traditional

Catalogs:

There should not be a middle page
Proposing two menu points: license and user explorer
User explorer should have filter/tabs/buttons to show artists, collectors or all users

Account:

Maybe it should be renamed, as it is about my flares
Deposit and withdraw can come here with a button
Deposit and withdraw will not needed in the menu

What is okay:

Notifications
StarVault

Ungroup (no groups are needed, not even for user):

There is no need for User group, instead just put Profile in the menu and ungroup what's under it

Also why are new footer elements put in a new line?

"Get Help" should be renamed to "Support". I still don't think it needs a standalone page, but at least let's keep the name professional. Order footer elements by their importance. Those which open a new tab should be last.

Menu does not need header: "MENU". We know it's that :)

I am having a little difficulty with what you mean by ungroup, can you please elaborate?

Note that we had one member already request deposit/withdraw on the menu as it was not clear where to do this.  I suggest stating Account (Deposit / Withdraw) as the line item in this case.

No more scrolling in desktop I likey

I like the middle page link as otherwise it will be a title just sitting there.  Linking to a middle page adds more value for those who try to press the title. :)

Sign out should be definetely on the bottom.

I am having a little difficulty with what you mean by ungroup, can you please elaborate?

Well, I had the idea to remove group titles, like "Catalogs", "Markets", etc. but looking at your screenshot they look good now that it's more compact.

I agree with moving Sign Out to bottom but people might not realize you can scroll and might get confused/frustrated on how to sign out 🤔

Come on, they realized it until now :) Just put sign out to the bottom of the menu.

Note that we had one member already request deposit/withdraw on the menu as it was not clear where to do this. I suggest stating Account (Deposit / Withdraw) as the line item in this case.

Manage flares? Balance? Credits? StarWallet? :) Anything, but no long descriptions and brackets.

Come on, they realized it until now :) Just put sign out to the bottom of the menu.

I've actually had one report where they could not find it, which is why I mention it.  However, they felt silly they didn't see it before I mentioned it.  I am guessing you are correct, however, with the new lightweight menu. :)

Manage flares?

Winner 👍

Latest version deployed to staging 👍

I do not think that the  element is needed above the user account. Everything else is okay. Maybe license explorer and users could be aligned.. Explore users, explore licenses.. License explorer, Explore users.. Idk. Leaving this to you. Can go to prod.

<hr /> is such a callback from when I started learning HTML, so had it in there mostly for sentimental reasons as it was a part of the original template.  Removing it does clean it up.  I have made normalized Catalog entries to be Users and Licenses to match the one-word entries of the previous.  Deployed to production. 👍

Closing issue, nice work

🙏🙏🙏


Trying to render a Trigger component as a Slot throws type error

Bug report
Current Behavior
After updating radix packages to their latest versions, I noticed that for 3 of them (@radix-ui/react-dialog, @radix-ui/react-alert-dialog and @radix-ui/react-popover), when I try to render their Trigger components as Slot (@radix-ui/react-slot), I get some typing error, preventing me from doing so.
Expected behavior
As with previous versions, the Trigger components in the above mentioned packages should not throw any errors when I try to render them as Slots.
Reproducible example
CodeSandbox Template
Suggested solution

Additional context
If I set the packages to older versions, everything works as expected: https://codesandbox.io/s/optimistic-keldysh-b8wss
It seems that even with react-slot on the latest version, the example works as long as react-popover is @<=0.0.15.
Your environment

Software
Name(s)
Version

Radix Package(s)

React
n/a

Browser

Assistive tech

Node
n/a

npm/yarn

Operating System

Did a bit of digging here, initially I thought it was because of this change: https://github.com/radix-ui/primitives/pull/618/files#diff-444aece5662ae3d455daa84d8be1dafa6c878ca67278a99556c830b7f461b155 but I changed locally and that doesn't fix it.
On top of that, the fact that that second sandbox works with the latest slot but not latest popover makes me think it's not because of slot or changes in that package, and probably not because of popover itself either but probably more to do with changes in polymorphic?

@alexandrunemes This has now been released.


Added 1 node of 1 candidate and updated the info of the 1st node

Added:

1 node of @blockshield:matrix.org and updated the information of the 1st node of this candidate

@ironoa Element handle of the candidate was verified

@kubaw3f watch out, the candidate file is invalid

hint: comma missing

Closing because of merge conflicts. Kuba opened a new one: https://github.com/w3f/1k-validators-be/pull/2624


VS 2017 15.5 F# can't set breakpoint when TargetFramework net45

This is very similar to #4084 in that I can't set breakpoints at all in a project. I have an F# .NET Core project that is an exe and a couple of library projects. All of them are set to <TargetFramework>net45</TargetFramework>.
I have VS 2017 15.5.2 installed. It is a commercial project that I'm consulting for.  They target Unity, which Unity now supports net46, so I bumped the version. After bumping the version, I was able to set breakpoints. As far as I'm concerned, you can close this as won't fix, but I thought I should get it documented. May be it will become a known issue. It would probably be okay to support only net46 and above.

Was this before switching from TargetFrameworks to TargetFramework?  The following works for me:

New .NET Core app
Change TFM to net45
Set breakpoint in Program.fs
Run and observe that it breaks at the breakpoint

Thanks for testing. I am unable to reproduce it with a simple test case. I also just tried to rollback some changes in the project and was not able to reproduce. I don't know, but troubleshooting it is not worth it. I observed it was only on the referenced library projects that I was unable to set the breakpoint.


Is it possible to use Controlnet, IPAdapter, and Lora

Is it possible to use Controlnet, IPAdapter, and Lora

We have trained ControlNet and Lora for PixArt-Alpha. If you want a use them here, need to train a new one.

I used the ControlNet code in  PixArt-Alpha but got an error: No such file or directory: 'output/pretrained_models/ControlNetHED.pth' Has the pre-trained model been released? How can I get this file?

https://huggingface.co/PixArt-alpha/PixArt-alpha/blob/main/ControlNetHED.pth

Is any plane to train and release ControlNet models, such as canny, hed, depth etc. in the near future?

Nope. Will only release the training script.

Nope. Will only release the training script.

When will the training script of controlnet released?

Lora released.


Make Collections Implement Serializable

First of all, awesome library! I played with it for a while and really like it. We currently have a library just like yours also inspired by Clojure, PCollections, Scala and of course ADHD Spiewak. We would like to freeze that library and take another route because of our upgrade to Java8.
Maybe be a strange question but are there any plans to make the collections Serializable?

Great idea!  I think...  Wait; why weren't they Serializable already?
We could just slap the word Serializable on there and add the serialVersionUID and hope for the best!  But I think we should write some tests to prove that they work as expected.  Some details deserve a second look, like how the empty collections are implemented (they might be better made as enums because they automatically serialize and deserialize as singletons - thank you Josh Bloch).
Is there anything special about the way you are (de)serializing these things that might influence what makes a good test?
Functions
When Java 8 first came out, I implemented some Comparators as lambdas.  But lambdas are not serializable, so when you supply such a Comparator to a TreeSet or whatever, then serialize and deserialize the collection, the Comparator comes back as null.  What a surprise!  Maybe the function interfaces in this project should be serializable too?
Equator
The Equator interface needs to be Serializable.  Oops.  I just looked at it and the default comparator in there is a lambda.  Test case!  Enum!
Tuples
I did not make these serializable because I wanted people to extend them and not have to make their resulting classes serializable (it would have forced all subclasses to be serializable).  I think I like that decision, but I'm open to constructive argument.
Hmmm... Tuple2 to implements Map.Entry.  That requires some thought.   Subclass?  Entirely separate class?  This might be 50% of the changes in the project!
Caveats
I feel like I'm more than half-way done with a RRB-Tree which I've been spending all my free time on (which isn't much).  I really want to finish that.  But your suggestion is in the top 3, the other one being a Java 7 version for Android devs.  I guess I'd want to make the serialization changes first, so this suggestion is currently in the top 2.
Conclusion
We should do this!  I don't think there will be that many changes (outside the tests) but I'm not sure how much more we'll uncover after more thinking.  I don't expect anything from you, just if you have time to do it before I do...  If you want me to merge your code, please match the style, strive for absolute minimal changes, and write tests for every meaningful line of code you add.

Thank you for your explanation and enthusiasm.
In theory the collections should be Serializable but without marking them they probably won't be allowed to be (de/)serialized through Java the default way. I know that at least the members of the class that is being serialized should be marked Serializable as well. Function (if not being a member of the class) or Tuple (also not being a member of the class) do not need to be Serializable. If they are a member they need to be marked. It should be fine if lambda's are used in functions but I see that for example PersistentHashMap has a member Equator. But I think that with minimal work this could be done.
I don't care that much about serialization format as long as it is thin which most of the times they are when not in XML or JSON. But our focus is Java8 and the use of standard Serialization markers for use in GWT (browser)/EhCache/Hazelcast. In GWT you would need to write Field_Serializer classes cluttering the project. Though we use custom serializers and deserializers that can convert the objects to JSON and allow retrieval through a REST api. Also what I really like about UncleJim is that there are no dependencies to other frameworks.
To fast-check if an object serializes and deserializes correctly I use this generic test function:
protected <T> T roundTripEquals(T obj) throws IOException, ClassNotFoundException {
	// write
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	ObjectOutputStream oos = new ObjectOutputStream(baos);
	oos.writeObject(obj);

	final byte[] data = baos.toByteArray();

	ByteArrayInputStream baip = new ByteArrayInputStream(data);
	ObjectInputStream ois = new ObjectInputStream(baip);
	final T read = (T) ois.readObject();

	assertTrue(obj.equals(read));

	return read;
}

I will try and spend some time on this with minimal work. If I come up with something sooner I will definitely share with you what I have and match your code-styles, without tests it's incomplete.

OK, my bad: this is a bug, not an enhancement.  APersistentMap, APersistentSet, and APersistentVector in the Clojure source all implement Serializable.  My copies don't.  Thanks to Robert Harvey and kdgregory on Programmers StackExchange (and to you!) for pointing this out.
In Clojure AMapEntry extends APersistentVector.  I think in type-safe Java land, that suggests that Tuple2 should not implement UnmodMap.UnEntry.  Instead, a new class should implement UnmodMap.UnEntry<A,B>, extend Tuple2<A,B> and override the tuple equals implementation.  That cleans up all the tuple equals implementations too, and might clarify some weirdness with Transform.toImMap().
As a bug, this feels like it trumps my hobby project of the RRB-Tree.  I'll make an effort to see how much of this I can get done this weekend if you don't do it before then.  I'm probably going to have to do the tuple stuff anyway due to the complexity of the tuple generator.  I also want to add StaticImports.xform(String).  I'll use your test code though - thank you for that!

It is done, but it's in a separate branch for now with a SNAPSHOT build number (1.1.0-SNAPSHOT).  If you follow that link I made a first pass at release notes.  Thank you very much for your unit test - I used most of that verbatim and gave you a credit in the code comments.
I incorporated the new version into 2 of my work projects this weekend.  I ran all the tests on the one project and they passed.  I also tried out the other and it worked fine.  You will not be the first person trying this code.  :-)
Are you able to try this out and let me know if it fixes your issue(s)?  If so, I might be able to merge it to the main branch and post it to Maven Central as early as next week.  Thank you again for reporting this issue.

But that was pretty fast! :+1: Good to know you did not run into too many problems. I will give it a go as soon as I have time. Fortunately for me I'm on a holiday trip but will report back soon. I should be able to easily swap collection api-s for I did that already.
Thank you !!

Glad to know that PersistentHashMap passed!
As you've seen, the basics seem to work, but I'm still hunting down dribs and drabs.  I've been going through some of the default methods on the interfaces to find anything else that I can reasonably make serializable.  I just found out that, keySet() on UnmodSortedMap is not serializable (yet - maybe tomorrow or this weekend).  Most of the unmod...() methods on FunctionUtils are not serializable.  I will probably fix those as well (this weekend).  There are probably a few more anonymous classes and lambdas hiding in there...  It's so easy to write them, yet they aren't serializable, so I'm converting them all to Serializable named classes wherever practical.
I learned today that java.util.TreeMap.entrySet().iterator() is not serializable.  I can't fix that.  But I wanted you to know that like the java.util collections, these collections will probably have limits to what's serializable.  I'll try to document that before doing a release, but it's going to be another weekend anyway.

Do you need any Itera**tors** to be serializable?  That might be where I draw the line because none of these seem to be Serializable in the java.util collections, which makes my interface changes really hard to test.  entrySet() and keySet() I think should be serializable, though I'm not sure how useful those really are when UnmodMap implements Itera**ble**.
Also, when you serialize these collections, are you thinking of this as long-term storage, or just short term to throw a collection over a network connection or something?  Currently the collections serialize their internal representations.  It might be better, long-term, to serialize just the contents in order (if they are ordered) and rebuild the internal tree when reading them back.
Presumably, you already know to be careful about declaring your Comparators for serialization - if they are not serializable, they either quietly disappear on deserialization, of they throw an exception (not sure which - I think I usually see the quiet disappearance).

I've merged all changes to the master branch and released version 2.0.2 to Sonatype/MavenCentral.  Each of the 5 main collections (Hash/Tree-Map/Set and Vector) now has a custom serialized form which is completely separate from it's internal representation and designed for minimal storage size.  This means that if you save a collection, and UncleJim/Paguro changes how that collection is stored in memory (within reason), it will still deserialize correctly.  All the map.keySet(), .entrySet(), and .values() should be serializable too (verified with tests).  There's a complete list on the home page of this project of exactly what's serializable and what's not.
I did not do the FunctionUtils.unmodifiable... methods (yet?).  The PersistentTreeMap  iterator returns Map.Entries that are not serializable.  Each one is actually a branch or leaf node of the internal tree representation.  You wouldn't care about this unless you are serializing these items.  I can sort of patch this, but it will probably have a performance impact.  Fixing the root issue involves a major overhaul of the data structure.  I don't think it will bother you.  If it does, let me know, and use entrySet() to work around it in the meantime.
I'll wait a few days to hear back from you, then I'll probably close this ticket.  You can just reopen it or create a new one if you need to.

Hi Glen, this is absolutely amazing and well implemented. It exactly fits the bill for our use case as long as the 5 main collections are serializable we are good to go. I'll fiddle with it and report any issues back here. Thank you very much.
And I like the name Paguro

FYI, there is a class FunctionUtils that has all kinds of methods: unmodList(List<E> ls), unmodSet(Set<E> ss), etc. for converting a very mutable project to an immutable one.  These have all been modified to return serializable classes in v.2.0.13.  I'm still not planning to make Functions, Iterators, or Mutable collections serializable, but as far as I know, everything else is serializable now.


[Bug] C++ keyword highlighting for alternate spellings

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Code
// The Monaco Editor can be easily created, given an
// empty container and an options literal.
// Two members of the literal are "value" and "language".
// The editor takes the full size of its container.

monaco.editor.create(document.getElementById('container'), {
	value: "void f() { if (a and not b) { } }",
	language: 'cpp'
});

Reproduction Steps
No response
Actual (Problematic) Behavior
When viewing C++ code and using the basic highlighting the alternate spellings for keywords like and, or, etc. are not properly highlighted.  The C++ standard has had these keywords since C++98 (see also [lex.key]/2).
Not having such keywords highlighted actively hurts code review.
Expected Behavior
The alternative spellings are highlighted.
Additional Context
See also src/basic-languages/cpp/cpp.ts where the spellings are missing.

Just a quick ping on this issue as it has been some time since it was submitted with no update.


External installer scripts handling

Apart from https://github.com/skelly37/nupac/issues/4, it would be useful to allow devs to add installing scripts (they would have to be approved by the users, of course) as pre-install hooks.
Especially useful when the package needs some external dependencies (like pythonic modules)
More specific design: To be discussed...

@Yethal since you've already started working on it, I've changed the milestone and assigned you.


Unwanted overflow on large screens when CSS value length is high

Hello, I tried to fix the issue
This is what I did:
Added hover styles for quaternary-200, secondary-200, and tertiary-200 color classes to match the existing pattern and address the GitHub issue.
I also created pull request: https://github.com/ita-design-system/bricss/pull/2

[!CAUTION]
Disclaimer: This fix was created by Latta AI and you should never merge before you check the correctness of generated code!
The fix provided by Latta AI might not be complete and it can serve as an inspiration.

This bug was fixed for free by Latta AI - https://latta.ai/ourmission
If you no longer want Latta AI to attempt fixing issues on your repository, you can block this account.


Change the generated cass to an enum.

Also there are too many imports that are just unnecessary.

It now seems to be working well.


extending casper for multiple test

Is there a way to extend casper as illustrated here when running multiple tests at once using $ casper test path/to/tests?
I'd like to add some app specific extensions to the casper api that will be available to all tests

Actually the casper test [path] command is just a shortcut for casper /path/to/casperjs/tests/run.js (file can be found here) :)
So your best bet os to write your own runner and extend the casper object instance from there :)

Awesome, that works, thanks a lot for the quick response. I'd suggest to put this hint into the documentation.


'NSManagedObject+RKAdditions.h' not found

Hi,
I have come across the issue of a header not being found when building a project that has RestKit as a dependency via CocoaPods. I have an example project to reproduce it:
https://github.com/ezescaruli/CocoaPodsExample
This is the build error that I get:

The Podfile is quite simple, and only includes RestKit pointing to its development branch:
https://github.com/ezescaruli/CocoaPodsExample/blob/master/Podfile
What I noticed is that the Headers Search Path for the RestKit target are set to be:
"${PODS_ROOT}/Headers/Private"
"${PODS_ROOT}/Headers/Public"
However, ${PODS_ROOT}/Headers doesn't exist in the repository:
https://github.com/ezescaruli/CocoaPodsExample/tree/master/Pods
I checked in my local file system, and the Headers directory exists, but there is nothing inside it and that is why git didn't add it to the repo.
So, is it fine that the Headers directory is empty? The Podfile has use_frameworks!, so I'm unsure of whether the headers should be actually there or not.
If the headers should be there and they are not, is it a CocoaPods or RestKit issue? I'm using CocoaPods from its master branch.
Thanks!

See issue #2356


Bug with Kithgard Gates level - tmp2[tmp3] is not a function

This is using Coffeescript

Which boots were you wearing?
If you were wearing anything other than Simple boots, then your hero won't have a moveDown method.
What is really odd to me is that it looks like the @moveDown() part is inside the "header" (dashed border area) meaning it cannot be edited, but when I open the level here, there is no "header" part -- that is, the entire code is editable for me.

As UltCombo suggests, you either have moveDirection OR moveXY not both...
That isn't the error I'd expect to get for that problem, but when you mix coco with your coffescript :smile: you get some pretty bizarre errors and that is the error I get when the move command and my boots are mismatched.

Ah, let's keep it open until I fix that error message. (Again–I could have sworn I had it, but maybe I didn't get all the cases. Anyway, it's really easy to reproduce, so it's silly that I thought I fixed it.)

Should be fixed with @basicer's new Esper interpreter.