Starting the Coordinator

Thanks for hinting at running the coordinator module here:
https://github.com/PyMoDAQ/pymodaq_plugins_mock/blob/1b7eaeedf31a7bd1cd7a2ba43b651234fd98d7dd/src/pymodaq_plugins_mock/daq_move_plugins/daq_move_LECODirector.py#L6
I did not know, that that works. Thanks.
In order to simplify starting the Coordinator (and other services), I added the Coordinator to the installed tasks similar to the pymodaq dashboard.
Now you can execute coordinator in the terminal and it will start as well.
Just as an information.

Ok that will do!
I think we also should have a menu entry in the dashboard allowing to start the coordinator. in the code, we could do that using a subprocess. Do you know how it works? If no, I can do it! Moreover during pymodaq initialization and given a config parameter value (start_leco_coordinator boolean for instance) one could start it there
Seb

I think we also should have a menu entry in the dashboard allowing to start the coordinator

Yes, that is, what I proposed in the leco-test PR

in the code, we could do that using a subprocess. Do you know how it works? If no, I can do it! Moreover during pymodaq initialization and given a config parameter value (start_leco_coordinator boolean for instance) one could start it there

I don't know (yet) the dashboard, so I'd prefer you to do it.

However we have an issue with the testing, pyleco is only available for python >= 3.9. This make my CI fail for python == 3.8
Do you have an idea on how to solve this?

I tried to make pyleco compatible with Python 3.8, but my dependency requires Python 3.9...

can we mark the tests needing pyleco to run only if python >=3.9

hum sorry, obviously you did it in the leco repo...

is there a way to check if a coordinator is already running? In order to not start it twice (startup and in dashboard)

can we mark the tests needing pyleco to run only if python >=3.9

Yes

is there a way to check if a coordinator is already running? In order to not start it twice (startup and in dashboard)

You could check, whether you can connect to a Coordinator:
from pyleco.directors.director import Director

with Director(actor="COORDINATOR") as director:
    if director.communicator.namespace is None:
        start_coordinator()

start_coordinator is your method starting it
The Director creates a Communicator, which tries to sign in.

If the sign in is successful, the namespace is not None anymore.
If not, you start a new coordinator.

@BenediktBurger could you check the way the coordinator is now started in the init of pymodaq is doing it properly? and close the issue if yes!

I just verified it. It works.


Can you add Multi Row support

Hi this package seems great for creating custom popups but can you add support for multiple rows as I can see it only works for one row, so we cannot create design like below for now:

The is the property maxColumns can do it


Update timed_saber.py

Fixes a bug found in #231.
CDAweb renamed the core TIMED_SABER directory for the 2.00 data.

Minor update to path, passing unit tests.  Merging based on self-review.


Vector database

Parsed articles must be stored in a vector database. Please decide on a database to store the vectorized parsed articles and confirm they are being stored and can be retrieved in a branch called 'issue-03'

This was finished with PineCone


Custom display proof of concept

What does this do?
Allows Clover's Viewer component to bypass default "viewer components" (Open Seadragon and HTML Video player) and render custom display component(s).  A consuming application would pass in a custom React component to Viewer, alongside targeting criteria for which items in the source IIIF Manifest should be rendered by the custom display.
Motivation
Motivation for this POC is from a use case proposed needing to display a Collection of PDFs using pdf.js.
How does it work?
Create your own "viewer" component.
Then configure the Viewer to target Manifest items in one of two ways:

Target by Canvas ids, or
Target by a mime/type value (ie. application/pdf), which is represented by the painting.format property in Clover's Viewer (see src/components/Viewer/Painting/Painting.tsx)

import { Viewer } from "@samvera/clover-iiif";

function MyDisplayComponent({ id }) {
  return
...
;
}

type Target = {
  target: {
    canvasIds?: string[],
    paintingFormat?: string
  }
}

<Viewer
  iiifContent="https://manifest-url-here"
  customDisplays={[
    {
      target: {
        // Target by canvas ids
        canvasIds: ["http://a-canvas-id-in-manifest/access/0"],
        // Or by paintingFormat
        paintingFormat: "image/tiff" // "application/pdf", etc...
      },
      component: MyDisplayComponent,
    },
  ]}
/>

A user defines their own custom React component, which wraps their own display code/logic/parsing/etc.  Clover's Viewer passes back an id prop to the custom component, which is the Canvas target value . The custom component (in this situation) is then responsible for parsing the manifest, finding the source item to display, and then free to render the source content however they like.
// Clover's Viewer will pass back the Canvas id used above in "customDisplays" prop
const MyDisplayComponent = ({ id }) => {
  // Some psuedo code
  const canvas = getCanvas(id);
  const src = getSourceOfTheItem(canvas.items[0].items[0].body);
  return

;
}

For a more complete example, see this file in the PR:  docs/components/CustomDisplays/PDFViewer.tsx
How to test?

Run the branch locally
Navigate to the "Viewer Demo" page, it will default to using a local manifest which contains a PDF fixture as the first of three Canvases in the Manifest file (public/manifest/custom-displays/pdf.json).  The PDF file has a placeholderCanvas defined, and will follow the Viewer pattern of "clicking into" a Work.
In the Manifest URL bar, test out a second fixture manifest (public/manifest/custom-displays/pdf-no-placeholder.json).  This example has no placeholderCanvas and might be another example of how a user would want to implement.

More Notes
@mathewjordan I'm not sure we want to go down the road of passing back painting as an expected prop to user-defined Custom Display components.  I made some comments in the code.  It is a nice convenience, but maybe it's a better pattern to keep maximum control on the client-side for flexible implementations?

This one ready for review @adamjarling ?

@mathewjordan @davidschober Yea, I think it's definitely ready for review but I'm not sure it's a priority to merge?  Why don't you put some eyes on it Mat, we can further refine a Draft PR, and then run it by Collective Access to see how this looks from their end?
I'm also writing some tests for the Painting component (and it's underlying components), so at least a commit, or a few testing commits from this branch could be cherry-picked on another branch, independent of "Custom Display" code, which could be ready to merge earlier.

@mathewjordan Just made some updates which support target.paintingFormat as string[] values.   Thanks for the feedback.

We are working on  a pdf viewer and newspaper viewer for Clover. We will make the plugins opensource  so anyone can add them to their Clover app.   Can you add an options key to component to make the  plugins customizable? Maybe something like:
<Viewer
  iiifContent="https://manifest-url-here"
  customDisplays={[
    {
      target: {
        canvasIds: ["http://a-canvas-id-in-manifest/access/0"],
      },
      component: {
         name: MyDisplayComponent,
         options: { backgrondColor: 'red', zoomLevel: '5'}
      }
    },
  ]}
/>

We are working on a pdf viewer and newspaper viewer for Clover. We will make the plugins opensource so anyone can add them to their Clover app. Can you add an options key to component to make the plugins customizable? Maybe something like:
<Viewer
  iiifContent="https://manifest-url-here"
  customDisplays={[
    {
      target: {
        canvasIds: ["http://a-canvas-id-in-manifest/access/0"],
      },
      component: {
         name: MyDisplayComponent,
         options: { backgrondColor: 'red', zoomLevel: '5'}
      }
    },
  ]}
/>

Hi @wykhuh. Could these not be props on the custom component?
<Viewer
  iiifContent="https://manifest-url-here"
  customDisplays={[
    {
      target: {
        paintingFormat: ["application/pdf"]
      },
      component: <MyCustomComponent options={{}} />,
    },
  ]}
/>

The alternative if we don't want to pass it as JSX, perhaps we just do a generic props property and then spread out whatever it contains?
<Viewer
  iiifContent="https://manifest-url-here"
  customDisplays={[
    {
      target: {
        canvasIds: ["http://a-canvas-id-in-manifest/access/0"],
      },
      component: {
         name: MyCustomComponent,
         props: {
           options: {
             backgroundColor: 'red',
             zoomLevel: '5'
           }
         }
      }
    },
  ]}
/>

Rendering generically as...
<MyCustomComponent {...props} />

Hey @mathewjordan @wykhuh I just pushed up a commit which allows custom props to be passed through to a client component.  Something like this work?
https://github.com/samvera-labs/clover-iiif/pull/149/commits/663689cc37480627d5735d600dac230ce17081ad

@mathewjordan @wykhuh Just added another commit which removes painting as a prop passed automatically into a client's Custom Display component.  Feels more clean to me to keep Clover only passing minimal data to avoid any slippery slopes, unless it's super convenient to pass something along and saves the client a headdache.
So the Viewer now passes to a Custom Display component:

The canvas id
Any custom props the client Custom Display component wishes to pass through: ...restProps
~painting~

https://github.com/samvera-labs/clover-iiif/pull/149/commits/db6914c276bfadb1ad47903d7251d9bafa0922fa

If this is ready to merge in, I think the last commit @mathewjordan will be reverting the Viewer documentation to use the original demo.mdx code, and make a reference to how a user could get their hands on a customization example.  Maybe even a StackBlitz or CodeSandbox playground example referenced in the docs in addition to leaving this file in the repo: docs/components/CustomDisplays/PDFViewer.tsx

@adamjarling If

@mathewjordan @wykhuh Just added another commit which removes painting as a prop passed automatically into a client's Custom Display component. Feels more clean to me to keep Clover only passing minimal data to avoid any slippery slopes, unless it's super convenient to pass something along and saves the client a headdache.
So the Viewer now passes to a Custom Display component:

The canvas id
Any custom props the client Custom Display component wishes to pass through: ...restProps
~painting~

db6914c

In docs/components/CustomDisplays/PDFViewer.tsx,  the iiifContent url is hard-coded, which  won't work for a production-ready component. I'm assuming we would use componentProps to pass in the  iiifContent url.
If the  Custom Display component loads  iiifContent, then there will be multiple http get request to iiifContent url. (1st in src/components/Viewer/index.tsx, and 2nd in the Custom Display component). Is extra networks requests an issue?
docs/components/CustomDisplays/PDFViewer.tsx  is called 3 times, which means three http requests to iiifContent url. Not sure why that is happening.

@wykhuh Thanks for the feedback.  I'll go through the comments below...

In docs/components/CustomDisplays/PDFViewer.tsx,  the iiifContent url is hard-coded, which  won't work for a production-ready component. I'm assuming we would use componentProps to pass in the  iiifContent url.

Yea, via display.componentProps could be one way to pass the Manifest URI into a custom component.  I assumed that since this URI is the same value passed into the top level instance of Viewer through iiifContent prop (<Viewer iiifContent="" />, then it'd be accessible by the custom display component.  But I suppose if there are multiple IIIF Manifests your application is managing, it'd be easier to get direct access too.
Perhaps this example CustomDisplay component is being biased by it's use of (or my misuse of 😀) the vault package too though.  This code assumes vault needs the root IIIF Manifest to begin the path towards parsing content, digging for canvas > annotation > body.  If your IIIF canvas URIs are dereferenceable, then you wouldn't need the manifest URI, and could just grab the Canvas itself via a network request (using vault, fetch, etc).

If the  Custom Display component loads  iiifContent, then there will be multiple http get request to iiifContent url. (1st in src/components/Viewer/index.tsx, and 2nd in the Custom Display component). Is extra networks requests an issue?

Mmmm, I suppose this is a valid point.  And would ultimately depend upon the size of the Manifest or Canvas being fetched?  We wouldn't consider it a big performance hit, but if this is on your end, then I'm open to passing some data straight through to a custom display component (like painting, or even the canvas itself if that helps?

docs/components/CustomDisplays/PDFViewer.tsx  is called 3 times, which means three http requests to iiifContent url. Not sure why that is happening.

This was just due to a quick, lazy implementation on my end.  I pushed a commit, wrapping the network request in a useEffect hook to avoid unnecessary network requests.

In src/components/Viewer/Painting/Painting.tsx,  if painting.length >0, Clover will show a select menu that lets people choose which painting to show. If I'm reading the code correctly, that select menu won't work with Custom Display since Custom Display doesn't have access to annotationIndex or painting.

I'll look into this...

@mathewjordan @wykhuh

In src/components/Viewer/Painting/Painting.tsx,  if painting.length >0, Clover will show a select menu that lets people choose which painting to show. If I'm reading the code correctly, that select menu won't work with Custom Display since Custom Display doesn't have access to annotationIndex or painting.

I think this behavior may have some issues independent of this Custom Display work?   Looks like the Select Choice was intended to support https://github.com/samvera-labs/clover-iiif/blob/main/public/manifest/cookbook/0033-choice.json. Do you think you'd use this feature @wykhuh ?   The way I read this code, a custom display doesn't need to know about annotationIndex or painting, as that's handled by Painting in this new block:  https://github.com/samvera-labs/clover-iiif/blob/f91d4efd06cc788b27f4d7cadca12d97e18d11a0/src/components/Viewer/Painting/Painting.tsx#L56. So I think this code would hold up, but maybe it could be more defensive in displaying options without labels, dark mode/light mode and making sure it flows nicely in the layout w/ a Custom Display component.
I'd suggest opening a separate ticket to address these concerns if ya'll are ok with it?

@adamjarling @mathewjordan

@wykhuh Thanks for the feedback. I'll go through the comments below...

In docs/components/CustomDisplays/PDFViewer.tsx,  the iiifContent url is hard-coded, which  won't work for a production-ready component. I'm assuming we would use componentProps to pass in the  iiifContent url.

Yea, via display.componentProps could be one way to pass the Manifest URI into a custom component. I assumed that since this URI is the same value passed into the top level instance of Viewer through iiifContent prop (<Viewer iiifContent="" />, then it'd be accessible by the custom display component (which is why it's hardcoded in the example). But I suppose if there are multiple IIIF Manifests your application is managing, it'd be easier to get direct access to the specific resource.
But, perhaps this example CustomDisplay component is being biased by it's use of (or my misuse of 😀) the vault package. This code assumes vault needs the root IIIF Manifest to begin the path towards parsing content, digging for canvas > annotation > body. If your IIIF canvas URIs are dereferenceable, then one may not need the manifest URI, and could just grab the Canvas itself via the canvas id value being passed back to the custom component via a network request (using vault, fetch, etc).

Currently, we can't grab the Canvas itself using the  canvas id. So we would need pass in Manifest URI as componentProps,  to do a network request for the Manifest URI, and parse the returned data  in order to get the width and height for the media.

If the  Custom Display component loads  iiifContent, then there will be multiple http get request to iiifContent url. (1st in src/components/Viewer/index.tsx, and 2nd in the Custom Display component). Is extra networks requests an issue?

Mmmm, I suppose this is a valid point. And would ultimately depend upon the size of the Manifest or Canvas being fetched? We wouldn't consider it a big performance hit, but if this is on your end, then I'm open to passing some data straight through to a custom display component (like painting, or even the canvas itself if that helps?

For the newspaper viewer,  we have multiple page newspaper issues with OCR text for each page. We are considering displaying all OCR text in Clover for each page by using annotations. If we include the OCR text in root manifest, the manifest will be a decent size.

@wykhuh Gotcha.  Was chatting with @mathewjordan this morning, and it does sound like the case is building to feed the painting (now called annotationBody), to a Custom Display component, alongside the Canvas id and pass-through, user-defined props.   Just pushed up a commit, and updated the PDFViewer example component, which does simplify it quite a bit.   Glad we chatted through this. 👍

@mathewjordan @wykhuh

In src/components/Viewer/Painting/Painting.tsx,  if painting.length >0, Clover will show a select menu that lets people choose which painting to show. If I'm reading the code correctly, that select menu won't work with Custom Display since Custom Display doesn't have access to annotationIndex or painting.

I think this behavior may have some issues independent of this Custom Display work? Looks like the Select Choice was intended to support https://github.com/samvera-labs/clover-iiif/blob/main/public/manifest/cookbook/0033-choice.json. Do you think you'd use this feature @wykhuh ?
The way I read this code, a custom display doesn't need to know about annotationIndex or painting, as the targeting is handled by Painting here:
https://github.com/samvera-labs/clover-iiif/blob/e6cace2ab8b8ac23a2ec52334872e51c6b88ee34/src/components/Viewer/Painting/Painting.tsx#L57
I think this code would hold up, but maybe it could be more defensive in displaying options without labels, dark mode/light mode and making sure it flows nicely in the layout w/ a Custom Display component.
I'd suggest opening a separate ticket to address these concerns if ya'll are ok with it?

@adamjarling For my current projects, I we don't have a need for Select Choice. I only noticed it because I was browsing the Painting  component and noticed the select menu.  If you have projects that need an improved Select Choice, then creating a separate ticket makes sense.


[CDC + Improvement] Need some log after bootrapping all tablets of table

For automation, instead of putting static wait, its better if some log saying in connector log:
"Bootstrap completed for table <table_name>"

You can also query prometheus. There are a couple of metrics that track snapshot progress - snapshot_total_tables and snapshot_completed_tables

Closing this as it's the duplicate for issue #58


[plugin/iframely] Could not parse embed! TypeError: This library (validator.js) validates strings only

24/7 14:51:42 [3641] - error: [4568/3641] [plugin/iframely] Could not parse embed! TypeError: This library (validator.js) validates strings only
24/7 14:51:42 [3641] - error: [4568/3641]  Error: Callback was already called.
    at /usr/src/app/node_modules/async/dist/async.js:903:32
    at /usr/src/app/node_modules/async/dist/async.js:1071:13
    at Immediate.<anonymous> (/usr/src/app/node_modules/nodebb-plugin-iframely/library.js:310:5)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

https://github.com/NodeBB/nodebb-plugin-iframely/blob/72bd373dc4dcc74ec9a6783d50d9cb2cae134d37/library.js#L310
Don't have time to look into it further right now, but I'll look later today if I have time.

I think problem was with code line: https://github.com/NodeBB/nodebb-plugin-iframely/blob/master/library.js#L255
context.embedHtmlEscaped = validator.escape(embedHtml);
when embedHtml is null or undefined. I've made some changes to prevent this 4e02831e42e9a8a4b6e20f1c4015510e7283cfa4


Add support for Spot fleets

See documentation about the feature here:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html
Adding a --spot-fleet-request-config flag that points to the user-supplied config.json file would be great!

@sylvinus - Can you summarize the value of this feature to you and contrast it with auto-scaling groups? I haven't used either feature, but it looks like you can launch spot instances as part of an auto-scaling group, so I'm wondering what the difference is.

@nchammas I think what Spot fleets add is the notion of instance weight, to be able to mix instance types in order to take advantage of lower spot prices and fall back automatically to other launch configurations when prices surge.
I have not used the feature myself yet but it's definitely something I'd test.


Added some ghost blocks for a better experience

Added more blocks to the toolbox with a ghost command, hopefully fixing the missing blocks in step 10.

looks like the same ```ghost section got added twice?

looks like the same ```ghost section got added twice?

looks like the same ```ghost section got added twice?

The documentation says that ```ghost only adds the blocks to the level where you put them, so I added it to the last two.
Is that not the case?

looks like the same ```ghost section got added twice?

The documentation says that ```ghost only adds the blocks to the level where you put them, so I added it to the last two.
Is that not the case?

oops yeah, looks like that documentation is wrong. we don't filter the toolbox between steps, so all blocks for a tutorial are always available in every step, including ghost blocks

oops yeah, looks like that documentation is wrong. we don't filter the toolbox between steps, so all blocks for a tutorial are always available in every step, including ghost blocks

oops yeah, looks like that documentation is wrong. we don't filter the toolbox between steps, so all blocks for a tutorial are always available in every step, including ghost blocks

@shakao   Cool beans.  I fixed.

oops yeah, looks like that documentation is wrong. we don't filter the toolbox between steps, so all blocks for a tutorial are always available in every step, including ghost blocks

@shakao   Cool beans.  I fixed.


investigate dynamic braille keycaps

chazz suggested braille feedback on keycaps
Are there braille displays small enough to put on a keycap?

There are some keyboard stickers with braille on them and you just have to stick them on the keycaps. Is that what you meant?

That's cool, I'd like to get some of those, but it's not what I meant.
I was wondering if I could take apart an orbit reader 20 ( https://www.aph.org/research/orbit-reader-20-details/ ) and see if I could somehow fit individual braille character displays into a keycap. I doubt it's possible, but I won't know until I take one of those apart and see how they work.

What would the goal of that be? Would the goal be having the braille letters on each keycap change when the key bindings/assignments are moved around? Kinda confused about what exactly you mean; I'm no expert in keyboards or braille keyboards. (I would love to help, I'm all for making technology and programs more accessible!)

I also no expert in any of this! I just come up with ideas and see if they might work.
Yes, exactly as you described, i'd want braille keycaps that change to display the current binding of a key.
Someone suggested using the optimus keyboard since it has a tiny LED display in every keycap.
But you can't see the display while your finger is on it, so I figured a one character braille display would make more sense.


Allow newer hashdiff?

Right now, the dependency is locked on ~1.0.0, but 1.10 is out (https://rubygems.org/gems/hashdiff/versions). Without this, it's causing us some version conflicts. any chance for an update that bumps the dependency?

https://github.com/k8s-ruby/k8s-ruby/blob/master/k8s-ruby.gemspec#L31


refactor: ♻ dataset rights update

Also remove the commented out parts and remove that additional packages added


Language generation pipeline code

Hi authors,
Thanks for the great work !
I'm glad to know that you have the plan for releasing scene graph generation codes, and I'm looking forward to it.
But I wonder do you plan to release language generation pipeline codes including how to use the constructed 3d scene graph?
Thank you !

Hi we've finished the scene-graph generation code, please check it out. In terms of language generation, we followed the pseudo code to generate language, we tried to make it easy to follow, if there is extra need, we will try wrapping up the generation code as well :-)

Closing issue as we have already released the data, feel free to re-open it!


pull request for e2e test at 11/05/2016 19:56:00

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

Details

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


41

Description of Change

Linked Issues

Fixes #

PR Checklist

[ ] Has a linked Issue, and the Issue has been approved(bug) or Championed (feature/proposal)
[ ] Has tests (if omitted, state reason in description)
[ ] Has samples (if omitted, state reason in description)
[ ] Rebased on top of main at time of PR
[ ] Changes adhere to coding standard
[ ] Documentation created or updated: https://github.com/MicrosoftDocs/CommunityToolkit/pull/XYZ

Additional information

 Quality gate: Passed
 Everything looks good
Details


[yurtctl] Disable the nodelifecycle-controller if kube-controller-manager deployed in other ways except static pod

Background:
OpenYurt uses the nodelifecycle-controller in yurt-app-manager  to replace it in kube-controller-manager to manage the node life cycle to achieve edge autonomy. Therefore, we need to close the nodelifecycle-controller in kube-controller-manager.
What would you like to be added:
When kube-controller-manager is not deployed as a static pod, yurtctl convert/revert can automatically close the nodelifecycle controller in kube-controller-manger. So OpenYurt cluster created by yurtctl can run normally and support the high availability of kube-controller-manager.
Why is this needed:
Currently yurtctl only supports automatic shutdown of the nodelifecycle-controller if kube-controller-manager is deployed as a static pod. If the user deploys in other ways, yurtctl cannot automatically close the nodelifecycle controller.
others
/kind enhancement

Is that wrong?

When kube-controller-manager is not deployed as a static pod

Do you mean that the kube-controller-manager will not be deployed in other ways?

yeah, I don’t know what other ways mean :laughing:

Since kcm runs as a pod, its deployment method is the same as that of a normal Pod. For example, it can be run directly with kubectl apply pod.yaml. Of course, this is rare.
In addition, we may need to consider the high availability of kcm. Because the conversion(yurtctl convert/revert) will only run once, only the nodelife-controller of the leader at the time of conversion will be modified. When the leader is changed, its kube-controller-manager.yaml file remains unchanged, that is, the nodelife-controller is not closed.

may I have a try

/assign @eightzero

Yes, of course.

Do you have some suggestions about how to patch a normal pod with golang

If you have the clientSet(*kubernetes.Clientset), just use clientSet.CoreV1().Pods("kube-system").Patch() to patch pod.
And you can refer to using kubeutil.GenClientSet(openyurt/pkg/yurtctl/util/kubernetes/util.go)  to generate clientSet  in yurtctl.

Does this meet your expectations?
// 4. disable node-controller
	ok, _ := enutil.FileExists(co.PodMainfestPath + "/kube-controller-manager.yaml")
	if ok {
		// static pod
		if err = kubeutil.RunServantJobs(co.clientSet, func(nodeName string) (*batchv1.Job, error) {
			ctx := map[string]string{
				"node_servant_image": co.NodeServantImage,
				"pod_manifest_path":  co.PodMainfestPath,
			}
			return kubeutil.RenderServantJob("disable", ctx, nodeName)
		}, kcmNodeNames); err != nil {
			return fmt.Errorf("fail to run DisableNodeControllerJobs: %s", err)
		}
	} else {
		// normal pod
		patchFmt := `{"spec":{"containers":[{"command":["--controllers=-nodelifecycle,*,bootstrapsigner,tokencleaner"]}]}}`
		podList, err := kubeutil.FilterPodWithSubStr(co.clientSet, "kube-controller-manager")
		if err != nil {
			klog.Error("get normal kube-controller-manager pod fail")
		}
		for _, pod := range podList.Items {
			co.clientSet.CoreV1().Pods("kube-system").Patch(context.TODO(), pod.Name, types.StrategicMergePatchType, []byte(patchFmt), metav1.PatchOptions{})
		}
	}

yurtctl is a binary which can be executed on non-master nodes, the following method may not be very appropriate to distinguish static pods from normal pods.

ok, _ := enutil.FileExists(co.PodMainfestPath + "/kube-controller-manager.yaml")

How about submitting a pr so that others can review it?


(How to) Provide a random agent for evaluation

Dear maintainers,
for various research it would be great to have a random Agent/Model at hand to evaluate the model one created.
Is it possible that you can provide a random agent or a code snippet to create one in self-service?
Great work and kind regards!

A simple way is just follow the code example on the OpenAI Gym website: https://gym.openai.com/
If you want to reuse evaluation code for ChainerRL agents, for discrete-action envs, chainerrl.wrappers.RandomizeAction can be used to simulate a uniform random policy. It is used in https://github.com/chainer/chainerrl/blob/master/examples/atari/reproduction/dqn/train_dqn.py#L78.  The wrapper does not support continuous actions, but you can write a similar wrapper.


No demo of how to pass in values directly under "Step 2: Enter API Credentials"

Under Step 2: Enter API Credentials--
There is only one method being demonstrated right now to add in values for the following variables:

api_base_url
api_username
api_password
api_token

... and that is by following input prompts
We should also highlight how to directly add values so users don't need to be prompted each time
For example, we could say:
# Prompt the user for API credentials
api_base_url = input("Enter the POP API base URL (include http:// or https://): ")
api_username = input("Enter your POP API username: ")
api_password = getpass("Enter your POP API password: ")
api_token=None

# Or add the API credentials directly as strings
api_base_url = "http://simple.url.com"
api_username = "username123"
api_password = "mY_passw0rd"
api_token=None

Thanks for pointing this out. You’ve got a good point—right now, the tutorial only shows how to enter API credentials by prompting the user, and it doesn’t explicitly mention that you can hardcode values if you prefer. The main reason we’re using input prompts here is to avoid embedding sensitive information directly in the code. This is just a best practice, especially if you’re planning to share your notebook or keep it in version control.
That said, this tutorial is meant to demonstrate how to use the library. Still, you can modify your notebook and directly assign values to these variables if that’s more convenient for your workflow.
Thanks for the feedback!


[FIX] Change recording entity to REQUIRED for pet/blood modality

To make it consistent with the rules and the examples

Not sure what the circleci thing is about.

Hi @ghisvail! Thanks for raising this issue. It states in the PET-BIDS spec that the recording entity is optional, unless several recordings are used (i.e. manual and autosampler).  So the example case you are referring to is not incorrect, but the recording entity could in principle be left out, and then the type of recording should be stated in the corresponding json file. I am somewhat hesitant to support your proposed change, because sometimes only the data after combining manual and autosamples is available (+ after additional modeling), and then it would be unclear what entity this data should have, as it is now a mixture between manual and autosamples. In this case, the entity could be left out (because it’s optional) and then described more thoroughly in the json. I know this is actually now derived data after combining the blood recordings, but I have seen cases where only this information is available. I would like not to block the sharing of this data. Let me know what you think of these potential concerns.

The intent is for the recording entity to provide clarification if there are multiple blood recording files (or to simply provide more specificity). It looks like inverse is what needs to happen such that the rules yaml needs to be changed from required to optional here.
Would that be satisfactory? Or do you feel there still needs to be an update or additional example added to the examples?

The lack of consistency between the generated template in the docs, the wording of the paragraph and the example I linked to really makes the interpretation of this part of the spec quite confusing. Assuming the recording entity is indeed optional, then we should go with @bendhouseart suggestion to fix the rules generating the template and the inconsistent example I linked.

The example you are referring to won't be inconsistent independent of whether the recording entity is required or optional. But after thinking more about this I am inclined to keep the recording entity required, as it provides clarity on the recording type, which is important for the person modelling the blood data and may not be present in the corresponding json file. My previous argument was indeed for derived blood data, so this is considerations to take into account for the PET derivatives.

Again, thanks for raising this issue @ghisvail.

You're welcome. Thank you all for taking time reviewing it and providing the additional pieces of context I was missing.

This feels like the 80/20 rule ought to take prevalence here: I think it's going to be a very small minority of PET datasets for which the auto / manual nature of the blood samples is no longer known.  I would support the change to make the recording type required.
From a purely pragmatic perspective, I've dealt with data where I've not had access to which samples were auto and manual, and one just has to treat everything as if it's manual data. I think that's quite an uncontroversial take (though of course you could do something fancy with guessing which are which, but it would be need to be tailored for the specifics of the dataset). So one strategy might be to just include in the text that if the auto/manual nature of the data is unknown, that everything can just be labelled as manual?

So one strategy might be to just include in the text that if the auto/manual nature of the data is unknown, that everything can just be labelled as manual?

I'd be happy to add the proposed change to this PR. Is everyone in favour for it?

Thanks for your take on this @mathesong - I agree with you. @ghisvail please feel free to add the proposed change to this PR. Thank you.

Thanks for your take on this @mathesong - I agree with you. @ghisvail please feel free to add the proposed change to this PR. Thank you.

Done :+1:

Thanks everyone :+1: @mnoergaard could you briefly confirm that the validator does not need to be adjusted due to the changes here?

LGTM - thanks @sappelhoff


Introduce context object in request lifecycle

Currently, all request lifecycle event listeners have access to options, and this is the recommended way to pass metadata between multiple listeners (e.g. storing a reference to a spinner container in interaction, and then actually showing and hiding a spinner in start and complete, respectively).
In hindsight, I don't think this belongs to options. I'd like to dedicate options to the actual configuration of the request's behavior, and add a context object that would clearly serve as a storage for request-scoped metadata. To emphasize this distinction, maybe as soon as the request is being dispatched, options should be frozen and added to context?

Note to self: this addition could be included in 2.x as a new feature, and instead of freezing options, it should be wrapped in a proxy that emits deprecation warnings on modification 🤔


Add support for JDK 10

javah tool has been removed in JDK 10, I think this plugin needs to use other ways to generate JNI header files.

I wasn't aware of that, thanks for reporting the issue.
It looks like the new method to generate headers is with javac -h. This may be tricky to use with Scala files as javac expects Java source files. Previously we could just pass compiled ".class" to javah.

I posted a question on stackoverflow. Any help would be greatly appreciated.

Also related: https://stackoverflow.com/questions/48816188/kotlin-replacement-for-javah

I think we can use ASM to implement a simple header file generator

That does indeed look like the most viable approach atm

I am trying to implement it now

https://github.com/Glavo/gjavah
You can try using this library to generate header files. I am migration it to Scala

That library looks really great! I'd like to adapt it to Scala and include it in sbt-jni if possible. Under what license is it available?

I added MIT license to this library.

Any updates on this?

Any news?

Please feel free to port Glavo's gjavah to Scala and submit a PR

Currently gjavah is just a simple prototype, I will re-implement and submit a PR recently.

Closed by #33

Sorry, I forgot about the issue. gjavah is just a prototype I made in a short time, it ignores a lot of things, I will fix these issues and open a pull request.

Don't worry, your changes have already been incorporated by @kammoh in the mentioned PR. Thanks for creating gjavah!


Add missing subject-level data to graph

[x] Add cognitive assessment
[x] Add paths to session-specific imaging data

You can now expect

bg:filePath to be a datatype property of a session with a string path object
bg:assessment to be an object property of a subject with a bagel namespaced made-up IRI as an object


Add Weave Message Ids document

Codecov Report

Merging #499 into master will increase coverage by 0.29%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #499      +/-   ##
==========================================
+ Coverage   54.02%   54.32%   +0.29%
==========================================
  Files         344      329      -15
  Lines       59089    56987    -2102
==========================================
- Hits        31925    30960     -965
+ Misses      27164    26027    -1137

Impacted Files
Coverage Δ

src/lib/support/FlagUtils.hpp
0% <0%> (-100%)
:arrow_down:

src/lib/profiles/security/WeaveCert.h
16.66% <0%> (-83.34%)
:arrow_down:

src/lib/profiles/security/WeaveKeyExport.h
11.11% <0%> (-34.35%)
:arrow_down:

...iles/data-management/Current/SubscriptionHandler.h
0% <0%> (-30%)
:arrow_down:

src/lib/profiles/security/WeaveCASE.h
58.9% <0%> (-29.1%)
:arrow_down:

...files/data-management/Current/SubscriptionEngine.h
0% <0%> (-25%)
:arrow_down:

...files/data-management/Current/ResourceIdentifier.h
75% <0%> (-12.5%)
:arrow_down:

...c/lib/profiles/data-management/Current/TraitData.h
34.48% <0%> (-8.08%)
:arrow_down:

src/lib/core/WeaveBinding.h
41.17% <0%> (-6.65%)
:arrow_down:

...files/data-management/Current/SubscriptionClient.h
7.14% <0%> (-6.2%)
:arrow_down:

... and 20 more

Continue to review full report at Codecov.

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


Timeout the Moderator Loading in the Purchase View

When the purchase view loads moderators, it's possible for the async fetchprofiles call to never return one or more of the moderators.
There should be a timer of some kind to hide the loading message after a reasonable amount of time.
We'll need to account for the fact that the server could still return the profile after the loading message is hidden.

Closed by #1681


Programmatically create collection views

I've recently discovered this library and would really love to work with it. I downloaded the example project and it works like a charm!
Unfortunately, I can neither use storyboards for my case (as the number of collection views needs to be adjusted to the number of arrays in my data) nor do I have a lot of time due to my next semester starting next week (and therefore being a little stressed).
(Did I miss some non-storyboard code for the collection views? If so, please let me know.)
Anyway, for 2 days now, I tried to implement this library such that it takes my data and creates as many collection views as arrays in my data (= array of arrays of ProgrammaticallyDragAndDropItems). I've tried a lot at this point but can not at all put my finger on why I am constantly getting the same error (EXC_BAD_ACCESS at performBatchUpdates in KDDragAndDropCollectionView.swift) whenever I try to drag one of the cells to another position - the app crashes immediately. If nothing is moved and the cell remains at its previous position, however, nothing happens, i.e. the recognition of the right cell (and the item's index in the data if I print it in the console) works fine.
This is what invariably happens:

I know you probably don't have a lot of time but I'd really appreciate if you could take a glance at my code and tell me what I should try or what you think could be the problem since I'm really frustrated at this point. It's very close to the code in the example. I'll post it below and focus on the important things first. I hope I am not missing something obvious. Please bear with me 😬
Here is the extension for the collection views first (below is the class of the controller & the item):
// cvIndex = index of the collection view in the array of KDDragAndDropCollectionViews (instead of tags)
extension ProgrammaticallyDragAndDropController: KDDragAndDropCollectionViewDataSource, UICollectionViewDelegateFlowLayout {

    // UICollectionViewDataSource

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        guard dragAndDropItems.count != 0, let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }) else { return 0 }

        return dragAndDropItems[cvIndex].count

    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        guard let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }), let cell = collectionView.dequeueReusableCell(withReuseIdentifier: kdCollectionViewsIDs[cvIndex], for: indexPath) as? ProgrammaticallyDragAndDropItemCell else {
            fatalError("fatal: cell for item at index path")
        }

        cell.programmaticallyDragAndDropItem = dragAndDropItems[cvIndex][indexPath.item]

        cell.isHidden = false

        if let kdCollectionView = collectionView as? KDDragAndDropCollectionView {

            if let draggingPathOfCellBeingDragged = kdCollectionView.draggingPathOfCellBeingDragged {

                cell.isHidden = draggingPathOfCellBeingDragged.item == indexPath.item

            }

        }

        return cell

    }

    // added by KDDragAndDropCollectionViewDataSource

    func collectionView(_ collectionView: UICollectionView, dataItemForIndexPath indexPath: IndexPath) -> AnyObject {

        guard let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }) else { fatalError("fatal: data item for index path") }
        print("data item for cvindex indexpath", cvIndex, indexPath.item)

        return dragAndDropItems[cvIndex][indexPath.item]

    }

    func collectionView(_ collectionView: UICollectionView, insertDataItem dataItem: AnyObject, atIndexPath indexPath: IndexPath) {

        if let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }), let dragAndDropItem = dataItem as? ProgrammaticallyDragAndDropItem {
            dragAndDropItems[cvIndex].insert(dragAndDropItem, at: indexPath.item)
        }

    }

    func collectionView(_ collectionView: UICollectionView, deleteDataItemAtIndexPath indexPath: IndexPath) {

        if let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }) {
            dragAndDropItems[cvIndex].remove(at: indexPath.item)
        }

    }

    func collectionView(_ collectionView: UICollectionView, moveDataItemFromIndexPath from: IndexPath, toIndexPath to: IndexPath) {

        if let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }) {
            let dragAndDropItem = dragAndDropItems[cvIndex][from.item]
            dragAndDropItems[cvIndex].remove(at: from.item)
            dragAndDropItems[cvIndex].insert(dragAndDropItem, at: to.item)
        }

    }

    func collectionView(_ collectionView: UICollectionView, indexPathForDataItem dataItem: AnyObject) -> IndexPath? {

        if let candidate = dataItem as? ProgrammaticallyDragAndDropItem, let cvIndex = kdCollectionViews.firstIndex(where: { $0 == collectionView }) {

            for (index, item) in dragAndDropItems[cvIndex].enumerated() {
                if candidate != item { continue }
                return IndexPath(item: index, section: 0)
            }

        }

        return nil

    }

    func collectionView(_ collectionView: UICollectionView, cellIsDroppableAtIndexPath indexPath: IndexPath) -> Bool {
        return true
    }

    func collectionView(_ collectionView: UICollectionView, cellIsDraggableAtIndexPath indexPath: IndexPath) -> Bool {
        return true
    }

    func collectionView(_ collectionView: UICollectionView, stylingRepresentationView: UIView) -> UIView? {
        return nil
    }

}

This is the class (which probably isn't especially important):
import UIKit
import Stevia
import KDDragAndDropCollectionViews

class ProgrammaticallyDragAndDropController: UIViewController {

    var kdManager: KDDragAndDropManager?
    var dragAndDropItems = [
        [ProgrammaticallyDragAndDropItem(id: "id1", name: "name1", belongsTo: "group1"), ProgrammaticallyDragAndDropItem(id: "id2", name: "name2", belongsTo: "group1"), ProgrammaticallyDragAndDropItem(id: "id3", name: "name3", belongsTo: "group1")],
        [ProgrammaticallyDragAndDropItem(id: "id4", name: "name4", belongsTo: "group2"), ProgrammaticallyDragAndDropItem(id: "id5", name: "name5", belongsTo: "group2"), ProgrammaticallyDragAndDropItem(id: "id6", name: "name6", belongsTo: "group2")],
        [ProgrammaticallyDragAndDropItem(id: "id7", name: "name7", belongsTo: "group3"), ProgrammaticallyDragAndDropItem(id: "id8", name: "name8", belongsTo: "group3"), ProgrammaticallyDragAndDropItem(id: "id9", name: "name9", belongsTo: "group3")]
    ]

    var kdCollectionViews = [KDDragAndDropCollectionView]()
    var kdCollectionViewsIDs = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()

        setupViews()

        kdManager = KDDragAndDropManager(canvas: view, collectionViews: kdCollectionViews)
    }

    private func setupViews() {

        // fixme: for loop -> number of groups = number of collection views
        // in this case 3 collection views (created below)
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .horizontal

        let testCVs = [KDDragAndDropCollectionView(frame: .zero, collectionViewLayout: layout), KDDragAndDropCollectionView(frame: .zero, collectionViewLayout: layout), KDDragAndDropCollectionView(frame: .zero, collectionViewLayout: layout)]
        let testCVIDs = ["cellID0", "cellID1", "cellID2"]

        kdCollectionViews.append(contentsOf: testCVs)
        kdCollectionViewsIDs.append(contentsOf: testCVIDs)

        let safeView = UIView()

        view.sv(
            safeView.sv(
                kdCollectionViews
            )
        )

        safeView.fillHorizontally()
        safeView.Top == view.safeAreaLayoutGuide.Top
        safeView.Bottom == view.safeAreaLayoutGuide.Bottom

        for (index, kdCollectionView) in kdCollectionViews.enumerated() {

            kdCollectionView.dataSource = self
            kdCollectionView.delegate = self
            kdCollectionView.register(ProgrammaticallyDragAndDropItemCell.self, forCellWithReuseIdentifier: kdCollectionViewsIDs[index])

            // layout with Stevia (just sugar, it's the same as constraints)
            kdCollectionView.fillHorizontally()
            kdCollectionView.height(100)

            kdCollectionView.backgroundColor = .red

            // attach to top of safe view (safe area insets) if first cv
            if index == 0 {
                kdCollectionView.Top == safeView.Top

            // otherwise attach 100 points below previous cv
            } else {
                kdCollectionView.Top == kdCollectionViews[index - 1].Bottom + 100
            }

        }

    }

}

The cell is pretty much a UICollectionViewCell with another background color right now.
This is my item class:
class ProgrammaticallyDragAndDropItem: Equatable {

    var id: String
    var name: String
    var belongsTo: String

    init(id: String, name: String, belongsTo: String) {
        self.id = id
        self.name = name
        self.belongsTo = belongsTo
    }

    static func == (lhs: ProgrammaticallyDragAndDropItem, rhs: ProgrammaticallyDragAndDropItem) -> Bool {
        return lhs.id == rhs.id && lhs.name == rhs.name && lhs.belongsTo == rhs.belongsTo
    }

}

Gonna close this since it works since 1.5.2


Implement maximum depth criterion.

As the trees might get unreasonable large I want to implement a maximum depth criterion.

I manage to implement this feature by adding a single statement to the if clause in _fit_node.


v1.6.0

For the "title" metadata, add option to append the site title to the page title.
For "title" metadata, add option to specify the text that separates the page and site titles.

FYI - your repo does not have develop branch. I could only pull request to your master.


Implement a full device scan

https://github.com/mdeweerd/zha-toolkit/blob/main/custom_components/zha_toolkit/scan_device.py
We should include this functionality in ZHA. We should schedule this post device join.

Here is some initial scratch code to do this...
    default_response = GENERAL_COMMANDS[GeneralCommand.Default_Response].schema

    async def discover_attributes(
        cluster: Cluster,
    ) -> list[DiscoverAttributesResponseRecord]:
        """Discover attributes for a cluster."""
        attribute_id: int = 0
        discovery_complete: bool = False
        attributes: list[DiscoverAttributesResponseRecord] = []
        while not discovery_complete:
            response = await cluster.discover_attributes(
                start_attribute_id=attribute_id, max_attribute_ids=10
            )
            if isinstance(response, default_response):
                _LOGGER.debug("Default response received: %s", response)
                break
            discovery_complete, attribute_info = response
            attributes.extend(attribute_info)
            for attribute in attribute_info:
                _LOGGER.debug(
                    "Discovered attribute: %s: %s",
                    attribute.attrid,
                    attribute.datatype,
                )
                attribute_id = attribute.attrid + 1
        return attributes

    async def discover_commands(
        cluster: Cluster,
    ):
        """Discover generated and received commands for a cluster."""
        response: dict[str, list[t.uint8_t]] = {}
        for command in ("discover_commands_received", "discover_commands_generated"):
            command_id: int = 0
            discovery_complete: bool = False
            command_method = getattr(cluster, command)
            command_ids_discovered: list[t.uint8_t] = []
            while not discovery_complete:
                command_response = await command_method(
                    start_command_id=command_id, max_command_ids=10
                )
                if isinstance(command_response, default_response):
                    _LOGGER.debug("Default response received: %s", command_response)
                    break
                discovery_complete, command_ids = command_response
                command_ids_discovered.extend(command_ids)
                for discovered_command_id in command_ids:
                    _LOGGER.debug(
                        "Discovered received command id: %s", discovered_command_id
                    )
                    command_id = discovered_command_id + 1
            response[command] = command_ids_discovered
        return response

    async def scan_device(service: ServiceCall) -> None:
        """Issue command on zigbee cluster on a zigbee group."""
        device_id: int = service.data[ATTR_DEVICE_ID]
        zha_device: Device = async_get_zha_device_proxy(hass, device_id).device
        _LOGGER.debug("Scanning device: %s", zha_device.ieee)
        for endpoint_id, endpoint in zha_device.endpoints.items():
            if endpoint_id == 0:
                continue
            for cluster in endpoint.zigpy_endpoint.in_clusters.values():
                _LOGGER.debug("Scanning input cluster: %s", cluster.cluster_id)
                await discover_attributes(cluster)
                await discover_commands(cluster)
            for cluster in endpoint.zigpy_endpoint.out_clusters.values():
                _LOGGER.debug("Scanning output cluster: %s", cluster.cluster_id)
                await discover_attributes(cluster)
                await discover_commands(cluster)


Alternatives to pip

Check if there are better alternatives to pypi.

I guess only reasonable alternative would be conda?!
Why was pypi not a good option though again? @hach-ol-dlr

The problem is not PyPI, the problem is pip, because it doesn't have the possibility to assign a priority to different installation sources. There is no way to enforce that a certain package is installed from the source that is specified via --extra-index-url. If - in our case - there was a package called "pyBladed" on PyPI, pip would rather install this package then our package on github.
Possible solutions:

we use no --extra-index-url and install all dependencies from PyPI
we use a different tool for the installation - poetry has the possiblilty to specify the preferred source

Additional infos can be found in this blog post for example.

Yes, PyPI is the right place.
I have no personal experiences with poetry yet. We should probably test it in an example project first. Or in a separate brach, if technically possible.


Update deps

bem-components to 2.2.1
other deps to fit deps of bem-components

@eGavr will you be able to resolve the task or should we do it ourselves?

See the PR.


PIp install django-pagedown RuntimeError  maximum recursion depth exceeded

pip install django-pagedown:
i got RuntimeError  maximum recursion depth exceeded,
then i try
 pip install -e<EMAIL_ADDRESS>still got the same error,i am using py2.7.
Thanks you

Apologies for the very late reply, but I can't replicate this. I tried installing in a virtualenv on OSX with Python 2.7 using pip install django-pagedown and it worked OK:
Collecting django-pagedown
  Downloading django-pagedown-0.1.3.tar.gz (80kB)
    100% |████████████████████████████████| 81kB 1.2MB/s
Collecting Django>=1.3 (from django-pagedown)
  Downloading Django-1.11.6-py2.py3-none-any.whl (6.9MB)
    100% |████████████████████████████████| 7.0MB 177kB/s
Collecting pytz (from Django>=1.3->django-pagedown)
  Using cached pytz-2017.2-py2.py3-none-any.whl
Building wheels for collected packages: django-pagedown
  Running setup.py bdist_wheel for django-pagedown ... done
  Stored in directory: /Users/timmyomahony/Library/Caches/pip/wheels/d0/65/f3/ee048e721f6234cbc2d75a09dd4a450f03b3885a378db7493e
Successfully built django-pagedown
Installing collected packages: pytz, Django, django-pagedown
Successfully installed Django-1.11.6 django-pagedown-0.1.3 pytz-2017.2

I'm closing this for the moment but if you can replicate the issues please let me know.


1.III ¦Support for a subset of MIPS Instructions

'Necessary to show basic architecture functionality'
Related

1.III.I ¦ C: Support for pseudo-Instructions - converted to assembly instructions at runtime.
1.III.I.I ¦ *W: highlighting of original pseudo code in Code window next to converted instructions.
1.III.II ¦ *W: Keyboard Input/Terminal Interaction. (Print to terminal)
1.III.II.I ¦ *W: Support for Full MIPS Instruction Set, including system calls necessary to draw graphics. (Display bitmap graphics)

Instruction Format Reference
Pseudo-Instructions Reference
(ps) < means pseudo instruction
R_Type

[x] add $rd, $rs, $rt
[x] sub $rd, $rs, $rt
[x] halt    # (ps) li $v0, 10& systemcall

I_type

[x] addi $rt, $rs, Imm
[ ] lw $rt, label    # (ps) lw $rt, off(imm)
[x] sw $rt, label    # (ps) st $rt, off(imm)
[ ] lw $rt, off(Imm)
[ ] sw $rt, off(Imm)
[ ] la $rt, off(Imm)    # (ps) same as li
[ ] li $rt, Imm    # (ps) of lui $rt, Imm& ori $rt, Imm

Branches

[ ] beq $rs, $rt, Imm
[ ] bne $rs, $rt, Imm
[ ] blez $rs, Imm    # $rt = 0
[ ] bgtz $rs, Imm    # $rt = 0

J_type

[x] J address
[ ] Jal address

Additional References:
https://www.d.umn.edu/~gshute/mips/itype.xhtml - Branch Instr $rt value
https://stackoverflow.com/a/48315588 - li la Instr difference
https://chortle.ccsu.edu/AssemblyTutorial/Chapter-26/ass26_4.html (Jal PC+8)
Possible Instructions to Add in the future:
R_type:
[ ] Jr $rs
[ ] Jalr $rd, $rs
[ ] Jalr $rs    # (ps) jalr $ra, $rs
[ ] mfhi $rd
[ ] mflo $rs
[ ] mult $rs, $rt
[ ] div $rs, $rt
[ ] and $rd, $rs, $rt
[ ] or $rd, $rs, $rt
[ ] xor $rd, $rs, $rt
[ ] nor $rd, $rs, $rt
[ ] not $rt, $rs    # (ps) nor $rt, $rs, $zero
[ ] move $rt, $rs    # (ps) or $rt, $rs, $zero
[ ] slt $rd, $rs, $rt
[ ] nop    # (ps) sll $zero, $zero, 0
I_type:
[ ] ori $rt, $rs, Imm
[ ] xori $rt, $rs, Imm
[ ] slti $rt, $rs, Imm
[ ] bgt # (ps)
[ ] blt # (ps)
[ ] bge # (ps)
[ ] ble # (ps)
[ ] beqz  # (ps)   $rt = 1

Win DLX instructions:
https://www.computing.dcu.ie/~ray/teaching/CA226/mips/winmips64.html
Instructions are based on 64Bit registers DoubleWords,  and double precision floating point.
Because of this, you try to only use Even numbered registers only.
Does not support system calls.  Instead it uses halt to terminate.
and Memory-Mapped IO

lw/sw using a label is a pseudo instruction.   until Pseudo instruction conversion is implemented,  I_Type ins ,  Immediate value, will be used to hold the address.


fix: add new pages to sidebar after patch approval

This PR addresses issue #244 (refer to the full description there).
Problem
New Wiki Pages can be published in two distinct ways: (i) immediately, if the creator holds the Wiki Approver role; or (ii) pending manual approval of the associated Wiki Page Patch if the creator lacks the Wiki Approver role.
The logic for this is embedded in the whitelisted update function within the wiki/doctype/wiki_report/wiki_report.py file. This function checks if the user possesses the submit perm for that doctype to determine whether to submit it immediately or not. There is an issue within this function: it expects to receive the new_sidebar_items argument from the API call, and subsequently stores it (at runtime) in the Wiki Page Patch object. However, this doctype lacks a corresponding field, thus the information is not persisted in the database. Consequently, when the doctype is not immediately submitted, this information is lost, preventing its later use in updating the sidebar.
Solution
In my opinion, there is a design flaw in how sidebar updates are currently managed. Nevertheless, I have chosen not to alter the existing mechanism within this PR (such a refactor could be pursued in a following PR). My solution leverages the new_sidebar_group property (an existing property of the doctype) to compute the position in the sidebar and to update it when the  new_sidebar_items  property is not present (preserving the original behavior).

Hi @BreadGenie @rmehta , could you please review this when you have a chance? Thank you for your time!

Hi @BreadGenie , just a friendly reminder to check this PR. In my opinion, it fixes a very annoying bug in wikis with many contributors that require approvals to publish new pages.


Create ragc-core library

Goal is to convert the base of the AGC computer into ragc-core nostd library. This will allow for RAGC to be more portable in Rust applications.

Closing this issue for now. Code was converted with #13 minimally. In the future, there maybe a need to make a separate package out of this. For now, it works.


[SPARK-33775][BUILD] Suppress sbt compilation warnings in Scala 2.13

What changes were proposed in this pull request?
There are too many compilation warnings in Scala 2.13, this pr add some -Wconf:msg= regexes rules to SparkBuild.scala to suppress compilation warnings and the suppressed will not be printed to the console.
The suppressed compilation warnings includes:

All warnings related to method\value\type\object\trait\inheritance deprecated since 2.13

All warnings related to Widening conversion from XXX to YYY is deprecated because it loses precision

Auto-application to () is deprecated. Supply the empty argument list () explicitly to invoke method methodName, or remove the empty argument list from its definition (Java-defined methods are exempt).In Scala 3, an unapplied method like this will be eta-expanded into a function.

method with a single empty parameter list overrides method without any parameter list

method without a parameter list overrides a method with a single empty one

Not suppressed compilation warnings includes:

Unicode escapes in triple quoted strings are deprecated, use the literal character instead.

view bounds are deprecated

symbol literal is deprecated

Why are the changes needed?
Suppress unimportant compilation warnings in Scala 2.13
Does this PR introduce any user-facing change?
No
How was this patch tested?
Pass the Jenkins or GitHub Action

Test build #132766 has started for PR 30760 at commit d8922c2.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37368/

Test build #132766 has finished for PR 30760 at commit d8922c2.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132766/

Does this just suppress for one file?

Does this just suppress for one file?

Will suppress all files use -Wconf:msg= regexes

Test build #132789 has started for PR 30760 at commit 0fbde1e.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37390/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37390/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37390/

Test build #132800 has started for PR 30760 at commit 092b493.

Test build #132789 has finished for PR 30760 at commit 0fbde1e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132789/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37403/

Test build #132806 has started for PR 30760 at commit 45e3287.

Test build #132800 has finished for PR 30760 at commit 092b493.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37408/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132800/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37408/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37408/

Test build #132806 has finished for PR 30760 at commit 45e3287.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132806/

@srowen It seems that all compilation warnings added in Scala 2.13 have been suppressed,

Test build #132867 has started for PR 30760 at commit 8e03c13.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37470/

Test build #132872 has started for PR 30760 at commit d97e0a7.

Test build #132874 has started for PR 30760 at commit 3cd8174.

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37470/

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37474/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37470/

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37476/

Test build #132867 has finished for PR 30760 at commit 8e03c13.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/37476/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37474/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132867/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/37476/

Test build #132872 has finished for PR 30760 at commit d97e0a7.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #132874 has finished for PR 30760 at commit 3cd8174.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132872/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/132874/

thx ~ @srowen and @dongjoon-hyun


Installation hangs on Cmder upgrade.

While installing today on Win10 Pro x64 in a KVM Virtual Machine, the extraction of the cmder.7z file to c:\tools\cmder hung, for two hours, until I hit Enter on the keyboard. This delay took place in the following step:
[NuGet] Installing 'Cmder 1.3.14'.
[NuGet] Successfully installed 'Cmder 1.3.14'.

Cmder v1.3.14 [Approved]
cmder package files upgrade completed. Performing other installation steps.
Extracting C:\ProgramData\chocolatey\lib\Cmder\tools\cmder.7z to C:\Tools\Cmder...
Extracting C:\ProgramData\chocolatey\lib\Cmder\tools\cmder.7z to C:\Tools\Cmder...

I got the following error:
VERBOSE:
Chocolatey timed out waiting for the command to finish. The timeout
 specified (or the default value) was '2700' seconds. Perhaps try a
 higher `--execution-timeout`? See `choco -h` for details.
VERBOSE:
VERBOSE:
VERBOSE:
The upgrade of cmder was NOT successful.

Definitely odd. Have you tried reproducing the issue?

This seems to be fixed, but I'm still having weird install issues. See: https://github.com/fireeye/flare-vm/issues/364


Fix for AssetCryptImpl

remove all files from assets
rm build/*
ant clean
add line with "architectures: armeabi armeabi-v7a x86"
remove line commonJS : true
ant

Et voilà!

@nuno Add to the readme and close?

Yup!


Can't open v3000 mol file with assigned Alias

Steps to Reproduce

Open Ketcher
Add Chain on canvas
Double-click any atom
Type any text in the 'Alias' field (for example, 'alias123')
Click 'Save as' button
Select MDL Molfile v3000 and save
Open saved file

Actual behavior
Error Message
Convert error! Cannot deserialize input JSON.
Expected behavior
Files opens. Alias is located on the atom to which we assigned it
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser Chrome
Version 109.0.5414.120 (Official Build) (64-bit)

Ketcher version
Version 2.9.0-rc.3

Need to add "alias" field to Ketcher schema.


Increase time that router schedules downlink to gateway

This is a feature request for the Backend.
Currently, the router schedules downlink messages 100ms before they should be transmitted to the gateway. This is too short for many types of gateway connections (e.g. DSL and cellular) and/or remote locations.
If there's RTT available, we should account for that, but if there isn't, the default should be 1 second. This means that for gateways running older packet forwarders that they will more often overwrite downlink messages, but that is always better than consistently not transmitting downlink at all.

To avoid double work, this should be implemented together with #420.

Due to delays in #420, the schedule time was doubled 10 days ago in 1bb19bf818fb4d542b31290076cb888e1b899b98


Upgrade kafka in compose files

Upgrade all kafka to newer versions with kraft mode
Drop zookeeper from everywhere
Create a separate compose with a kafka with zk

some source of inspiration -> https://github.com/confluentinc/cp-all-in-one/blob/748c7033146f202eaf4d2dfecaabfc233b4741af/cp-all-in-one-kraft/docker-compose.yml#L6

I'd like to work on this task.


Converting NAN to int outputs -9223372036854775808.

Godot version
v4.2.dev3.official.013e8e3af
System information
Windows 10, GLES3 (Compatibility)
Issue description
print(int(NAN))

outputs
-9223372036854775808

that is, the minimum int value.
I believe trying to convert NAN to int should result in an error instead, since there is no real int counterpart of float NAN in GDScript currently.
For reference in Python:
print(int(float('nan')))

outputs
Traceback (most recent call last):

  File "main.py", line 1, in <module>

    print(int(float('nan')))

ValueError: cannot convert float NaN to integer

Steps to reproduce

Run the MPR code.
Observe the output.

Minimal reproduction project
print(int(NAN))

Guess it's the same as https://github.com/godotengine/godot/issues/33017?

Basically, yes, but the extensive "steps to reproduce" section of that issue does not include the NAN case.
I'm not sure if the comment that I added there about it is sufficient, as it might be missed.
If you do consider so, feel free to close this issue.

Consolidating in #33017.


 Should be good now

Pushed a fix. Should be good now

Thanks For Replay


[1.x] Updated add_backport_label.yml to the main branch. (#495)

Description
Actuallizes the add_backport_label.yml file to be the same as the main branch.
I hope this is the exact solution you were looking for
Don't know how to test it exactly, since the last time was an awful mistake.
Open to receiving any comments or ways to test it!!
Issues Resolved
#495
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Tests were failing because #528 hadn't been merged. Should be fixed now.


update script to only publish istio-sidecar.deb

@rkpagadala: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
6576991ec4469dd19822f520018deac6fa7e15a2
link
/test istio-pilot-e2e

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.

/lgtm
It might also be worthwhile to update the release notes URL to point to something like https://istio.io/about/notes .  Wiki entries weren't created for 0.5 nor 0.5.1 and I doubt there will be [m]any in the future.  Is there a version of istio newer than 0.2.12 that could replace it as the latest stable release?

/lgtm
Well, actually I have some reservations but this is the default template so I'm not going to be that picky.  The build uses version x.y.z, but so far the existing webpages use just x.y.  This difference, plus the delay in hand-crafting the release notes, are factors why I had considered using a version-less default.  However, if somebody can set up a rule on istio.io so that any unknown page requested under notes/... just redirects to notes/ then that might be the most ideal.

/lgtm


Fix/soundbanks parsing

What's new:

Fix bug where soundbanks events sometime were parsed incorrectly

Note: When Loading Level1 I receive an exception on Texture.cpp line 73.


Add support for Jakarta EE

As of Jakarta EE (formerly Java EE) 9, the javax.servlet.* namespace has been renamed to jakarta.servlet.*. HTTP-RPC should be updated to support the new package structure.

This will require updating Tomcat to version 10:
https://tomcat.apache.org/tomcat-10.0-doc/index.html


Adds vertical tab and form feed to the list of legal whitespace characters.

The grammar defines these characters as legal whitespace.

Merged to master.


Long URLs truncate error

Describe the bug
Using version: [10.0.0]
A clear and concise description of what the bug is.
To Reproduce
Create a new Umbraco page, called test.
Send in a query which contains a lengthy string (maybe more than 255 characters)
In a browser type http://localhost/test?sp=abcdef......
Press enter and an error is logged
SqlException (0x80131904): String or binary data would be truncated in table 'database.urlTrackerReferrer', column 'url'.
Expected behavior
Ignore that page.
Attempted to add ["test"] to UrlTracker:BlockedUrlsList under the config but this doesnt do anything.

Hi @JamiePattison ! Thank you very much for reaching out! I'll go investigate your issue. Looks like it's attempting to register a 404 Not Found response, but if the page exists, then that shouldn't be happening. I should get back to you within about 2 days

@D-Inventor Thank you!! Just to confirm, the page has a different query passed to it each time so if the logic is based on the page  name and the long query then im pretty certain it wont ever exist :-) as the query passed to the page can randomly change.

Thank you for clarifying 🙂
I've done a small test and I find that on existing Umbraco pages, this error does not occur. It does happen on urls that give a 404 response, but not on the 'urlTrackerReferrer' table. Can you give me some more context on the nature of this url that you use? Does this url redirect to a different page or do you navigate away from this page with some button or link? It's the "referrer" part here that intrigues me and it suggests that this "test" page is not the page that you actually visit, but the page that you navigate away from, which also explains why the 'BlockedUrlsList' didn't work for you.
Nevertheless, if you need to exclude certain pages based on the httpcontext, you can always make a filter on the 404 tracker like this:
public class CustomClientErrorFilter : IClientErrorFilter
{
    public CustomClientErrorFilter(/*Use dependency injection to get any dependency you need*/)
    { }

    public ValueTask<bool> EvaluateCandidateAsync(HttpContext context)
    {
        if (CurrentRequestIsNotValidAccordingToCustomLogic(context))
        {
            // 👇 Return false to stop the current request from being registered as client error
            return new ValueTask<bool>(false);
        }

        // 👇 Return true to continue client error tracking
        return new ValueTask<bool>(true);
    }
}

public class CustomClientErrorFilterComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        // 👇 Register the client error filter using a composer
        builder.ClientErrorFilters()
            .Append<CustomClientErrorFilter>();
    }
}

I'm facing the same error "String or binary data would be truncated"  but without the table name and on save and publish on the home node. In my case urls of descendants nodes might be quite long. I've updated to VARCHAR(255) all Url fields in all tables to VARCHAR(400) and it's now working...

Version 10.3.3 has been released with a fix for this issue. We've updated the url columns so as to support urls with a length up to 2083 characters.


guile: 2.0.11 -> 2.0.12

Motivation for this change
Things done

[X] Tested using sandboxing
(nix.useChroot on NixOS,
or option build-use-chroot in nix.conf
on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] OS X
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[X] Fits CONTRIBUTING.md.

2.0.12 is a maintenance release for the 2.0.x stable series.
See http://lists.gnu.org/archive/html/info-gnu/2016-07/msg00007.html
for announcement.

Why would this cause a mass rebuild?

The travis job shows that this PR tries to build 3807 derivations. This is probably due to gnutls that depends on guile.

I'm surprised that gnutls depends on guile. It appears to be an optional dependency that defaults to false. Surprising!

Apparently, gnutls also depends on autogen, and autogen depends on guile.
I added the mass-rebuild tag since it triggers way to much work for my computer to run nox-review, and travis job will fail because of such long running jobs. If it is not massy enough, the tag can just be dropped.

Staged.


Indicate if submission was made by staff in admin view

The admin panel does not indicate if a submission was made by staff - so it can be confusing if you create an upload through the staff dashboard and it's not obvious that your upload was successful (in the table).
Files to change: https://github.com/Cal-CS-61A-Staff/ok/blob/master/server/templates/staff/student/assignment.html#L212 (edited)
What to change: you'd probably just change that line in the template to have an if block that says if backup.creator -><EMAIL_ADDRESS>on behalf of<EMAIL_ADDRESS>else<EMAIL_ADDRESS>reported by: @kavigupta

Hi, i want to help fix this issue, from what should i start?


Wrong notoflag when two guildstones are in war.

Create two guildstones, enlist a character in each guild, declare war and you will see your opponent with the notoflag-ally (green)

Looks like something is broken with notoriety colors related to guild status.
Just create different guildstones without declaring war nor alliances and you'll see everyone ORANGE (Enemy) instead of their natural notoriety colors (Blu/Red/Gray). The moment you declare war from both sides you'll see your enemy GREEN (Ally).
Of course since you'll see everyone guilded as green or orange, kills and criminal actions don't trigger at all.
Guildmates results GREEN (Ally) as supposed to, so looks like that just War/Peace colors are inverted and peace doesn't has to be considered as alliance (when guild aligns are different).
Already tested with latest build and some previous with community pack.
This is the untouched *.ini stuff related to notoriety colors
// Default color settings for characters names (notoriety)
//ColorNotoGood=059			// blue
//ColorNotoGuildSame=03f	// green (ally)
//ColorNotoNeutral=03b2		// grey (can be attacked)
//ColorNotoCriminal=03b2	// grey (criminal)
//ColorNotoGuildWar=090		// orange (enemy guild)
//ColorNotoEvil=022			// red
//ColorNotoInvul=035		// yellow
//ColorNotoInvulGameMaster=0b	// purple
//ColorNotoDefault=03b2		// grey (if not any other)

As a note to other devs and contributors, we should evaluate if it would be
useful to port the 56d guild and town system (and the chat one?) since they
were greatly reworked but i don't know if any functionality was changed
Il mar 28 apr 2020, 13:12 Stefano<EMAIL_ADDRESS>ha scritto:

Looks like something is broken with notoriety colors related to guild
status.
Just create different guildstones without declaring war nor alliances and
you'll see everyone ORANGE (Enemy) instead of their natural notoriety
colors (Blu/Red/Gray). The moment you declare war from both sides you'll
see your enemy GREEN (Ally).
Of course since you'll see everyone guilded as green or orange, kills and
criminal actions don't trigger at all.
Guildmates results GREEN (Ally) as supposed to, so looks like that just
War/Peace colors are inverted and peace doesn't has to be considered as
alliance (when guild aligns are different).
Already tested with latest build and some previous with community pack.
This is the untouched *.ini stuff related to notoriety colors
// Default color settings for characters names (notoriety)
//ColorNotoGood=059			// blue
//ColorNotoGuildSame=03f	// green (ally)
//ColorNotoNeutral=03b2		// grey (can be attacked)
//ColorNotoCriminal=03b2	// grey (criminal)
//ColorNotoGuildWar=090		// orange (enemy guild)
//ColorNotoEvil=022			// red
//ColorNotoInvul=035		// yellow
//ColorNotoInvulGameMaster=0b	// purple
//ColorNotoDefault=03b2		// grey (if not any other)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Sphereserver/Source-X/issues/442#issuecomment-620540476,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADS2CJCP4J2Y72CWOFJVXC3RO222NANCNFSM4MSXIWDA
.

I just made this simple function to help debug.
The function prints out the list of notovalues showing the respective color for each player inside the list.
And well, something strange happen.
You should set the "NotoTimeOut" (*.ini) to a low value (just a few seconds) to speed things up.
This is one scenario:
I have three characters everybody with positive karma to simplify the situation.
Two of them are in the same guild [AAA] and a third one is in a guild at war [BBB]:

Player One [AAA] //(myself)
Player Two [AAA] //(guildmate)
Player Three [BBB] //(enemy)

The function shows that my guildmate and my enemy are both GREEN (Ally) as previously said in this topic, but the function also shows that the notoriety constantly toggle from Green to Blue BEFORE the timeout is elapsed. Don't know if it's normal to act that way. Still, the client sticks to the notoriety read at first sight, the timeout won't refresh what the client sees even if the function shows that the notoriety has changed. I have to go away and wait for the list to be cleared.
[DEFNAME notocolors_mask]
notoc_1	059,Blue
notoc_2	03f,Green(GuildAlly)
notoc_3	03b2,Grey(Karma)
notoc_4	03b2,Grey(Criminal)
notoc_5	090,Orange(GuildEnemy)
notoc_6	022,Red
notoc_7	035,Yellow(Invul)
notoc_8	0b,Purple(InvulGM)
notoc_9	03b2,Grey(other)

[PLEVEL 1]
SHOWNOTORIETY

[FUNCTION SHOWNOTORIETY]
SRC.SAY @,,1 # NOTOVALUES #
FOR 0 <SRC.NOTOSAVE>
	REF1=<SRC.NOTOSAVE.<eval <dlocal._for>>>
	IF ( <REF1> )
		local.colhex=<STRARG <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.colword=<STREAT <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.refresh=<EVAL <SERV.NotoTimeOut>-<REF1.NOTOSAVE.<eval <dlocal._for>>.ELAPSED>>
		IF ( <REF1.GUILD> )
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> [<REF1.GUILD.ABBREV>] | <local.colword> (-<local.refresh>s)
		ELSE
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> | <local.colword> (-<local.refresh>s)
		ENDIF
	ENDIF
ENDFOR
RETURN 1

don't know why my comment vanished...  anyway, just made this function to help debug.
[DEFNAME notocolors_mask]
notoc_1	059,Blue
notoc_2	03f,Green(GuildAlly)
notoc_3	03b2,Grey(Karma)
notoc_4	03b2,Grey(Criminal)
notoc_5	090,Orange(GuildEnemy)
notoc_6	022,Red
notoc_7	035,Yellow(Invul)
notoc_8	0b,Purple(InvulGM)
notoc_9	03b2,Grey(other)

[PLEVEL 1]
SHOWNOTORIETY

[FUNCTION SHOWNOTORIETY]
SRC.SAY @,,1 # NOTOVALUES #
FOR 0 <SRC.NOTOSAVE>
	REF1=<SRC.NOTOSAVE.<eval <dlocal._for>>>
	IF ( <REF1> )
		local.colhex=<STRARG <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.colword=<STREAT <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.refresh=<EVAL <SERV.NotoTimeOut>-<REF1.NOTOSAVE.<eval <dlocal._for>>.ELAPSED>>
		IF ( <REF1.GUILD> )
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> [<REF1.GUILD.ABBREV>] | <local.colword> (-<local.refresh>s)
		ELSE
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> | <local.colword> (-<local.refresh>s)
		ENDIF
	ENDIF
ENDFOR
RETURN 1

If a mod could restore my previous comment I'd appreciate it... I had written a lot. XD
NOT A MOD, but i can do it :)

I just made this simple function to help debug.
The function prints out the list of notovalues showing the respective color for each player inside the list.
And well, something strange happen.
You should set the "NotoTimeOut" (*.ini) to a low value (just a few seconds) to speed things up.
This is one scenario:
I have three characters everybody with positive karma to simplify the situation.
Two of them are in the same guild [AAA] and a third one is in a guild at war [BBB]:
Player One [AAA] //(myself)
Player Two [AAA] //(guildmate)
Player Three [BBB] //(enemy)
The function shows that my guildmate and my enemy are both GREEN (Ally) as previously said in this topic, but the function also shows that the notoriety constantly toggle from Green to Blue BEFORE the timeout is elapsed. Don't know if it's normal to act that way. Still, the client sticks to the notoriety read at first sight, the timeout won't refresh what the client sees even if the function shows that the notoriety has changed. I have to go away and wait for the list to be cleared.

[DEFNAME notocolors_mask]
notoc_1	059,Blue
notoc_2	03f,Green(GuildAlly)
notoc_3	03b2,Grey(Karma)
notoc_4	03b2,Grey(Criminal)
notoc_5	090,Orange(GuildEnemy)
notoc_6	022,Red
notoc_7	035,Yellow(Invul)
notoc_8	0b,Purple(InvulGM)
notoc_9	03b2,Grey(other)

[PLEVEL 1]
SHOWNOTORIETY

[FUNCTION SHOWNOTORIETY]
SRC.SAY @,,1 # NOTOVALUES #
FOR 0 <SRC.NOTOSAVE>
	REF1=<SRC.NOTOSAVE.<eval <dlocal._for>>>
	IF ( <REF1> )
		local.colhex=<STRARG <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.colword=<STREAT <def.notoc_<REF1.NOTOSAVE.<eval <dlocal._for>>.COLOR>>>
		local.refresh=<EVAL <SERV.NotoTimeOut>-<REF1.NOTOSAVE.<eval <dlocal._for>>.ELAPSED>>
		IF ( <REF1.GUILD> )
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> [<REF1.GUILD.ABBREV>] | <local.colword> (-<local.refresh>s)
		ELSE
			SRC.SAY @<local.colhex>,,1 #<eval <dlocal._for>>: <REF1.NAME> | <local.colword> (-<local.refresh>s)
		ENDIF
	ENDIF
ENDFOR
RETURN 1

any news?

I think I found the issue and pulled a requeest to the source.
Will try to add the DeclareAlly functions ASAP so you can play with alliances aswell.

really appreciated your help Julian

Can you test if it's fixed?

yes. Atm our co-guild are green (ally), if two GS are in war we see our opponent orange (enemies).
i can confirm we can't do alliance between two guildstones and alignment doesn't change our notoflag.

I'll add the alignment tweak via script so everyone can tweak the factions and play with them easily.
About the alliance is an enhancement I'm working on, but it will take some time.

i agree on alignment... and for the alliance it's ok, take your time... for now we just need the system is playable. our players can wait for alliances.

@Massi17 please check your issue if still happening, we need to close the issue if there is no issue.

it still happening


Implement more bug planners (interpolators)

[ ] Bug 0
[ ] Bug 1
[ ] Tangent Bug
[ ] VisBug
[ ] DistBug

Implement a bug class before building all these interpolators so than there is minimum code duplication. The class must implement all the basic functions of a bug

Sensing obstacles
Following walls

etc


Bind mount /dev/null on /usr/lib/aarch64-linux-gnu/qt5/plugins/mediaservice/libgstcamerabin.so

Enabled camera viewfinder and functionality through systemd service configuration. This resolves previous errors encountered while accessing media service plugins.

this is a temporary solution, but gets the job done for now. it might block usb cameras but better than this not working at all.


AWS Cognito Integration

https://github.com/morcmarc/react-native-cognito

Nice but no thanks

Now that parse is being shutdown, does that mean this project is obsolete? http://mobile.nytimes.com/blogs/bits/2016/01/28/facebook-to-shut-down-parse-its-platform-for-mobile-developers

This project, Snowflake?  No, not at all. Quite the contrary, note that Snowflake is already integrated w/ a OpenShift implementation https://github.com/bartonhammond/snowflake-hapi-openshift.
see the README from Snowflake https://github.com/bartonhammond/snowflake

Note: Snowflake now (Jan 3, 2016) has a choice of servers, either
The original Parse.com or
Hapi Server that runs on Openshift and locally.

I'm running on OpenShift w/ great success.  I have a private project based off of Snowflake and the Hapi-Openshift project and it is a very good solution for a small indie type project.  Free.


compat with Subterranean wilderness and yungs better caves

thus far I have tested these three together with no success, the carver gen of terra completely overwrites that of either of these mods, If there is any way to separate the carver gen from the upper of the overworld this would be phenomenal. both of these mods add an amount of detail which either isn't achievable with just terra in the case of Sub Wild or requires a lengthy process of trial and error configuration in the case of yungs better caves.
if these could be made compatible with terra it would be phenomenal

Carver compatibility options were implemented in #199


OAuthError: Refresh: Token expired

I'm not sure if this is an issue or the desired behavior. I authorized the program yesterday using
drive init

This morning when I try to check my quota I get
Get https://www.googleapis.com/drive/v2/about?alt=json: OAuthError: Refresh: Token expired; no Refresh Token

If I try init again I get
drive init
Visit this URL to get an authorization code
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxxxxx

Do you have to do the authorization every time you want to use the program?

Hello @jbracegirdle welcome to drive!
Were you able to actually visit the URL and review and give drive the appropriate permissions?
And no you only have to do this once, but make sure to visit the URL using your web browser then paste the authorization code. To see what apps you have given permission to your account visit https://security.google.com/settings/security/permissions

Thanks @odeke-em drive seems to be an excellent solution for sharing files.
I did manage to visit the URL and give drive ther permissions it needs. I'm using 2 Google accounts so that may be the problem. Chrome (or I) may have been confused as to which account was authorized.
https://security.google.com/settings/security/permissions Showed that Drive was authorized yesterday and remained the same after I had authorized it again today. Drive is working again. I'll see how it goes tomorrow.
Many thanks,
John

@jbracegirdle thank you for the kind words and for trying it.
What I suspect happened is that you might have tried before drive init with one account then maybe realized you wanted to enter another account then probably hit CTRL-C, this is a theory that could explain the rogue mis authorization.

As a suggestion, you can do drive init <path> e.g drive init ~/my_google_account_for_school so that you have it initialize in paths that make sense directly to you.

Thanks for the suggestions and quick reply. Drive is installed on a Raspberry Pi and I used ssh to access it. I was running Chome on my Windows laptop to authorize it. I did test that drive was authorized to the correct account yesterday and it uploaded files to the correct account. I would have thought if I had made a mistake with the authorization it would have either failed or uploaded to my other Google account.
It's working again though now :+1:
I'm not sure when it will need to use a refresh token, or how OAuth really works, but I'll let you know if I get the error again.

If it is related to the token expiring during pushes after a long time then I'd advise you to checkout issue https://github.com/odeke-em/drive/issues/116. However when initialized freshly, this shouldn't be a problem :) Thank you for reporting this.

@jbracegirdle please get the latest from master, this issue should be fixed :)


feat(data-table-v2): add v10 sortable styles and bug fix

Ref #1642
Changelog
There are new things in regards to sortable tables which address bug fixes from existing v9 table. As per our discussion this morning about what changes should be included in v10, since we want to include any breaking changes that fix old bugs now, I've included those new things in this PR.
New

.#{$prefix}--data-table-v2--sort -  adds a sortable class to the table because the padding for non-sort th is different than sortable th. Since sortable th has a button inside it, it can't have any padding or there is a small section of the th that isn't clickable/adds a hover bug, therefore the padding needs to be in the button instead. Where as non-sort does have this padding. Fixing this issue was a design change request from review in the large data table PR. cc: @designertyler

.#{$prefix}--table-sort-v2__icon-inactive - new svg and class for when it's in its "no-sort" state (different icon per design specs)

Changed

js to toggle fix bug that wasn't allowing for true tri state functionality. (Would only toggle back and forth between asc/desc and never no-sort).

[ ] Sort icon should be 8px from the right of the cell and 8px minimum from the text to the left.

@emyarod thanks for pointing out the overflow wrapper. Fixed it 👍

Changed my review. The two major ones for me are the 49px row height and the 20x20 tri state icon. Will approve again with the 48px header height and 16x16 tristate icon.

all of the above comments should be addressed now @joshblack @designertyler

Ugh, seems super busted in IE11

cc @shinytoyrobots what should we do in this situation?

I thought IE11 was not a priority in this release. Per our definition of done guidelines here: https://github.com/carbon-design-system/private-issues/blob/master/v10-release-planning.md

@jnm2377 it's not, but in the case where fixes for IE11 would require a markup change I wanted to raise it so that we can make a determination as to next steps.

RE: IE11, I think it's an issue in v9 already so might be worth just moving forward 👍


Feature: Add gzip and encryption to import/export

http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/5396/
This is a port from 3.4.

includes fix for Windows build: http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/5406/

again:  http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/5407/

another Windows change:  http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/5409/

http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/5425/
This run has Windows not working.  Previous had Mac not working.  Pretty clear it is Jenkins not working.

ack - the windows environment had troubles with the updated openssl - which is fixed now.


[Basic] Introduce a FS method for creating directories.

This also fixes a problem with the prior use of the LLVM APIs, which don't
properly delegate to the umask to set the permissions.

@swift-ci please smoke test


Use different "all projects" locks for GradleBuild tasks and main build

Context
Previously, there was a single "all projects" lock for all builds in the session, rather than for a particular build or build tree. This means that the build tree managed by a GradleBuild task can interfere with the the main build, and vice versa, and so this lock did not function as a real lock (more a series of coincidences). This PR splits this so that there is an "all projects" lock per build. This will allow later changes to apply actual locking behaviour to these locks and more reliably deal with parallel configuration of projects that use plugins built by included builds.
Contributor Checklist

[ ] Review Contribution Guidelines
[ ] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[ ] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[ ] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[ ] Ensure that tests pass sanity check: ./gradlew sanityCheck
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.