Can't get method on CallableCustom "Delegate::Invoke" error when using a lambda function in UndoRedo.AddDoMethod and UndoRedo.AddUndoMethod

Tested versions
Tested on v4.2.1.stable.mono.official [b09f793f5]
System information
Windows 11
Issue description
I'm converting a tool written in C# from a plugin to a runtime tool and have an undo function where a variable is being bound to the Callable. In C# this can only be done through a lambda, which is what I'm doing. However, unfortunately UndoRedo's AddDoMethod() and AddUndoMethod() throw the error Can't get method on CallableCustom "Delegate::Invoke" which from a quick look in the engine codebase means the function name isn't accessible (which is isn't, it's a lambda function).
Note that this is not the same issue as #70026 because it only happens when the UndoRedo functions are actually called, but it seems to be similar to #80434 except that that's in GDScript.
Steps to reproduce
Use any lambda function when calling UndoRedo.AddDoMethod or UndoRedo.AddUndoMethod, i.e., UndoRedo.AddUndoMethod(Callable.From(() => GD.Print("Hello World!")))
Minimal reproduction project (MRP)
UndoRedoLambdaBug.zip
Run the project, click the button, check the error log.

It looks like UndoRedo tries to get the Callable's method name with Callable::get_method() and then falls back to Callable::operator String():
https://github.com/godotengine/godot/blob/83b916bb00eb8cac4584143a80f5cfad7ce1e908/core/object/undo_redo.cpp#L162-L166
The error can safely be ignored, but maybe we should implement CallableCustom::get_method like they did for GDScript in https://github.com/godotengine/godot/pull/80506.

The problem also affects GDScript.
func _ready() -> void:
	var undo_redo := UndoRedo.new()

	var callable: Callable = func() -> void:
		pass

	undo_redo.add_do_method(callable)

I got error: Can't get method on CallableCustom "<anonymous lambda>(lambda)"

I got error: Can't get method on CallableCustom "(lambda)"

This doesn't seem to happen on master.

This doesn't seem to happen on master.

I'm sorry! I must have made a mistake. Here's the correct example.
var undo_redo := UndoRedo.new()
var value: bool = false

func _ready() -> void:
	var do = func() -> void:
		value = true

	var undo = func() -> void:
		value = false

	undo_redo.create_action("test")
	undo_redo.add_do_method(do)
	undo_redo.add_undo_method(undo)
	undo_redo.commit_action()

Since https://github.com/godotengine/godot/pull/92350 is being reverted, this issue should be reopened(I can reproduce it).


fix html/md render of the column description in the metadata

From now on, the column description containing html code is rendered correctly in the table overview of the metadata.
default_if_none:'' is omitted since the new definition requires column.description to be a string, e.g. ""

Tested, it works on test instance for gaia.


Predictive Analysis Drug Grows - map package corrupt

Predictive Analysis Drug Grows map package is corrupt within the demo and scripts and on the Shipped USB disc.
\disldb\DemoAndScripts\Intel\PredictiveAnalysisDemos\DrugGrows\Data\PredictiveAnalysis_DrugGrows.mpk

I am closing this issue since it is not valid for the new geography.


Add some competitive aliases

Mostly from http://www.smogon.com/dp/articles/pokemon_dictionary

I've seen pory-z and pz used for Porygon-Z, might wanna add

+1 for "pory-z" and "pz"

poryz and pz are already Porygon-Z aliases...

oh
(I am blind rn brb getting new eyes)

Are you going to get back to this?

 I'll probably close in a week if there's no consensus.

Doesn't look it's being updated. Not accepting as is.


Example App needs permissions setup on Android

Description
The example app does not currently work on android, because requesting permissions was removed from the API calls.
How to repeat issue and example

Run example app on android

Solution
Add permissions requesting logic on Android
Additional Information

Image Picker version: 3.0.0-vnext.2
React Native version: 0.62.2
Platform: Android
Development Operating System: Windows

Just go to Android settings and enable manually for time being.

I've nearly got a PR ready that updates the examples to cover real usages.  Watch this space.

Example update, but no permissions required with latest 3.0.0-vnext.3.  If the issue persists, feel free to reopen.


v1.8 backports 2020-11-19

#13884 -- cilium: fix redirect limits on multi dev case (@borkmann)
#14061 -- docs: Fix helm install command in kubeadm getting started guide (@pchaigno)
#14064 -- docs: Fix wording around labels configuration (@joestringer)
#14012 -- fqdn: Fix confusion of ToFQDNs vs. DNS rules. (@jrajahalme)

Once this PR is merged, you can update the PR labels via:
$ for pr in 13884 14061 14064 14012; do contrib/backporting/set-labels.py $pr done 1.8; done

@jrajahalme had to fix a couple of conflicts on your PR, specifically:

a218052444243b6e439e77675f5f5034d5e86ffe via eb8a663e0175bf5d3c75c7dde79934cbba773fe0 ("fqdn: Fix confusion of ToFQDNs vs. DNS rules.")

I've updated the commit message accordingly, please take a look.
@borkmann as disccused, from https://github.com/cilium/cilium/pull/13884  only

6b53c869c98eb8199ec8bde67627e8f37d215868 via bd340764a9cdbff359f2091539bceff4f9cad5a1 ("bpf: Fix ENABLE_EXTRA_HOST_DEV logic on host_id check")

was backported in this PR which target v1.8.

Marking as draft waiting for https://github.com/cilium/cilium/pull/14059 to be merged and rebase on top.

test-backport-1.8

@jrajahalme The CI Jenkins failure is legit (caused by https://github.com/cilium/cilium/pull/14087/commits/0a698aac5ba30e28bd9201c2bc620bdea53117ee) and I was able to reproduce the issue:
	 goroutine 81 [running]:
	 github.com/cilium/cilium/pkg/fqdn/dnsproxy.(*DNSProxy).ServeDNS(0xc0001bc000, 0x20302a0, 0xc000572120, 0xc00056e1b0)
	 	/home/vagrant/go/src/github.com/cilium/cilium/pkg/fqdn/dnsproxy/proxy.go:642 +0x237f
	 github.com/miekg/dns.(*Server).serveDNS(0xc000654780, 0xc00005a960, 0x1b, 0x1b, 0xc000572120)
	 	/home/vagrant/go/src/github.com/cilium/cilium/vendor/github.com/miekg/dns/server.go:597 +0x20b
	 github.com/miekg/dns.(*Server).serveTCPConn(0xc000654780, 0xc00058a4b0, 0x20306c0, 0xc000010188)
	 	/home/vagrant/go/src/github.com/cilium/cilium/vendor/github.com/miekg/dns/server.go:520 +0x200
	 created by github.com/miekg/dns.(*Server).serveTCP
	 	/home/vagrant/go/src/github.com/cilium/cilium/vendor/github.com/miekg/dns/server.go:432 +0x354
	 FAIL	github.com/cilium/cilium/pkg/fqdn/dnsproxy	0.036s

I think the test here is at fault, what do you think of:
diff --git a/pkg/fqdn/dnsproxy/proxy_test.go b/pkg/fqdn/dnsproxy/proxy_test.go
index 82de69bc2..942ee811c 100644
--- a/pkg/fqdn/dnsproxy/proxy_test.go
+++ b/pkg/fqdn/dnsproxy/proxy_test.go
@@ -674,7 +674,7 @@ func (s *DNSProxyTestSuite) TestFullPathDependence(c *C) {
        c.Assert(restored1b, checker.DeepEquals, expected1b)

        // unlimited again
-       s.proxy.usedServers = nil
+       s.proxy.usedServers = make(map[string]struct{})

        s.proxy.UpdateAllowed(epID1, 53, nil)
        s.proxy.UpdateAllowed(epID1, 54, nil)

test-backport-1.8

test-upstream-k8s


While Loop freezes app

Description
This app should fetch giphy images every 5 seconds.  I'm not concerned about starting and stopping at this point, but just continuously refresh the image gallery.  However, the while(true) {...} causes the whole app to freeze and eventually I get a Bad Gateway on the client side.  Any help is very much appreciated.
Saga
function delay(duration) {
  const promise = new Promise(resolve => {
    setTimeout(() => resolve(true), duration)
  })
  return promise
}

function* fetchImages() {
  let randomWord = require('random-words')
  let API_ENDPOINT = `https://api.giphy.com/v1/gifs/searchapi_key=MYKEY&q=${randomWord()}&limit=12`

  while (true) {
    try {
      const res = yield call(() => axios.get(API_ENDPOINT))
      const images = yield res.data
      yield put({ type: 'API_CALL_SUCCESS', images })
      yield call(delay, 5000)
    } catch (e) {
      yield put({ type: 'API_CALL_FAILURE', e })
    }
  }
}

export default function* giphySaga() {
  yield call(fetchImages)
}

Actions
export const API_CALL_REQUEST = 'API_CALL_REQUEST'
export const API_CALL_SUCCESS = 'API_CALL_SUCCESS'
export const API_CALL_FAILURE = 'API_CALL_FAILURE'

export function fetchImages() {
  return { type: API_CALL_REQUEST }
}

export function loadImages(images) {
  return { type: API_CALL_SUCCESS, images }
}

export function fetchImagesFail(error) {
  return { type: API_CALL_FAILURE, error }
}

Reducers
import { API_CALL_REQUEST, API_CALL_SUCCESS, API_CALL_FAILURE } from '../actions/giphy'

const defaultState = {
  images: [],
  isFetching: false,
  error: {},
}

export default function images(state = { defaultState }, action) {
  switch (action.type) {
    case API_CALL_REQUEST:
      return { ...state, isFetching: true }
    case API_CALL_SUCCESS:
      return { ...state, images: action.images, isFetching: false }
    case API_CALL_FAILURE:
      return { ...state, error: action.images, isFetching: false }
    default:
      return state
  }
}

Im not sure but maybe ur api call fails synchronously? Could you check this:
function* fetchImages() {
  let randomWord = require('random-words')
  let API_ENDPOINT = `https://api.giphy.com/v1/gifs/searchapi_key=MYKEY&q=${randomWord()}&limit=12`

  while (true) {
    try {
      const res = yield call(() => axios.get(API_ENDPOINT))
      const images = yield res.data
      yield put({ type: 'API_CALL_SUCCESS', images })
    } catch (e) {
      yield put({ type: 'API_CALL_FAILURE', e })
    }

    yield call(delay, 5000)
  }
}

@Andarist yeah, that was a good idea, but it I get the same error.   I've been at it for days.

Without giving a link to the repository (or codesandbox) with the issue reproduced im afraid i wont be able to help you

Your api call seems to be incorrect. You're missing the param separator ?
let API_ENDPOINT ='https://api.giphy.com/v1/gifs/search?api_key=MYKEY&q=${randomWord()}&limit=12

@michaelcavallaro03
I've checked the URL syntax I don't know how the ? disappeared in my original post.  And yes I'm painfully aware about the giphy api limits - it's slowing me down on getting this resolved.
At any rate I'm tackling the looping a little different.  I've removed the while loop from the saga and instead added this to my page component.
 `componentDidMount() {
      this.props.dispatch({type: 'API_CALL_REQUEST'});
      this.interval = setInterval(() => {
         this.props.dispatch({type: 'API_CALL_REQUEST'});
      }, 5000);
  }

  componentWillUnmount() {
     clearInterval(this.interval)
 }
 `

My saga looks like this now.
 `function* fetchImages() {
    try {
      let randomWord = require('random-words');
      let API_ENDPOINT =
        `https://api.giphy.com/v1/gifs/search?api_key=MYKEY&q=${randomWord()}&limit=1`
      const res = yield call(() => axios.get(API_ENDPOINT))
      const images = yield res.data
      yield put({type: API_CALL_SUCCESS, images})

    } catch (e) {
      yield put({type: API_CALL_FAILURE, e})
      console.log('Error fetching data')
  }
 }

 export default function* giphySaga() {
   yield all([
     yield takeLatest(API_CALL_REQUEST, fetchImages),
  ]);
 }
 `

I've tested the loop with a simple saga generator function and inside the
yield takeLatest(API_CALL_REQUEST, someTestSaga) but when I plug in the fetchImages generator function as shown above no data gets returned to my mapStateToProps function on the page.   So far I've only been able to render the images by doing this.
export default function* giphySaga() {        yield all([          yield call(fetchImages),       ]);      }

Well at long last I got it figured out.  I realized that yield takeLatest(API_CALL_REQUEST, fetchImages) only calls the function, but doesn't pass the data on to the store.  Then I simply did this.
 export default function* giphySaga() {
  yield all([
  yield takeLatest(API_CALL_REQUEST, fetchImages),
  call(fetchImages)
   ]);
 }

Maybe my whole process is slightly contrived, but I got it working.  Nevertheless, I would appreciate any feedback before I close this out.

I'm not sure what do you mean by:

Well at long last I got it figured out. I realized that yield takeLatest(API_CALL_REQUEST, fetchImages) only calls the function, but doesn't pass the data on to the store.

Could u elaborate?
The given snippet looks weird, because:

it first creates takeLatest task (because you have yielded it)
then it creates 2 tasks in parallel - one of the returned value from takeLatest (co the task object) and one call(fetchImages), so basically the task is returned as is and the call gets executed

The more correct form would be:
 export default function* giphySaga() {
  yield all([
    takeLatest(API_CALL_REQUEST, fetchImages),
    call(fetchImages)
  ]);
 }

but as both refer to fetchImages I strongly believe this is incorrect. Could you describe what you are trying to achieve?

@Andarist I know the function you're referring to looks strange, but when I do this
  export default function* giphySaga() {
     yield all([
       yield takeLatest(API_CALL_REQUEST, fetchImages),
 ]);
}

the fetchImages() gets triggered, but that data does not get passed to rendering component.  Only  when I added the yield call(fetchImages), the data got passed to the component.
To your question on what I'm trying to achieve; it's to fetch and show new images every 5 seconds.

This should work https://github.com/MirelesCloud/nextjs_boilerplate/pull/1/files
I have not run this though

@Andarist I have made the changes of your patch on my local file, but  I got the same error as previously:  Unhandled Rejection (TypeError): Cannot read property 'data' of undefined
referring to
 function mapStateToProps(state) {
   return {
     imageData: state.giphy.images.data,
  }
}

However, your method worked for the simple example Saga inside the project.

You probably have not initialized your state properly before making your request with saga.

Closing due to inactivity.  If this is still an issue then please reply and I will reopen and try to help.  Thanks!


Feature request: Specifying GPU IDs

It would be ideal to specify the GPU IDs that a script can use. i typically like to have a GPU ID argument in my script so that I can set the device, but if Accelerate is handling the devices I can't specify. The current alternative is to use CUDA_VISIBLE_DEVICES but a dedicated argument in accelerate config or in the Accelerator object would be ideal.

@muellerzr I want to work on it

how i can change GPU 0 to other gpu? @muellerzr
i am using Accelerate,
error is below given, please give the solution in details
/home/suresh/myenv/lib/python3.8/site-packages/accelerate/accelerator.py:391: UserWarning: log_with=tensorboard was passed but no supported trackers are currently installed.
warnings.warn(f"log_with={log_with} was passed but no supported trackers are currently installed.")
{'clip_sample_range', 'timestep_spacing', 'trained_betas', 'sample_max_value', 'variance_type', 'dynamic_thresholding_ratio'} was not found in config. Values will be initialized to default values.
{'num_attention_heads', 'attention_type', 'addition_time_embed_dim', 'dropout', 'reverse_transformer_layers_per_block', 'transformer_layers_per_block'} was not found in config. Values will be initialized to default values.
accelerator.device =  cuda
accelerator.device =  cuda
Traceback (most recent call last):
File "/home/suresh/lora/diffusers/examples/kandinsky2_2_train/tune_decoder_lora.py", line 589, in
main()
File "/home/suresh/lora/diffusers/examples/kandinsky2_2_train/tune_decoder_lora.py", line 362, in main
image_encoder.to(accelerator.device)
File "/home/suresh/myenv/lib/python3.8/site-packages/transformers/modeling_utils.py", line 2576, in to
return super().to(*args, **kwargs)
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1160, in to
return self._apply(convert)
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 810, in _apply
module._apply(fn)
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 810, in _apply
module._apply(fn)
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 810, in _apply
module._apply(fn)
[Previous line repeated 3 more times]
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 833, in _apply
param_applied = fn(param)
File "/home/suresh/myenv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1158, in convert
return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 26.00 MiB. GPU 0 has a total capacty of 10.75 GiB of which 17.75 MiB is free. Process 2304721 has 9.66 GiB memory in use. Including non-PyTorch memory, this process has 1.05 GiB memory in use. Of the allocated memory 854.74 MiB is allocated by PyTorch, and 65.26 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF


Unbuckling from north/south facing chairs closes backpack and toolbelt inventories

Description
So, I made a shit ton of chairs to figure this out, since at first I thought it was only a few chairs that had this bug, but upon experimentation, I found out it was the rotation of the chairs that affects this bug.
To recreate:
Step 1) Sit in any chair facing north or south.
Step 2) Open a backpack or toolbelt.
Step 3) Unbuckle.
This does NOT happen in east/west facing chairs.

Fixed in https://github.com/space-wizards/RobustToolbox/commit/c54b1572f53a43a6bad56ba9e3d5655f0511d3fd


Redux fix

small typo with PropTypes. should be propTypes.
refactored eventActions.js to use axios. makes it easier to follow along I think @hirosato223

Also! seedData.sql is not quite tested yet so I do not recommend using it just yet


$ref in $ref causes path hash to be repeated.

Hey, first of all, thanks for the great library. I think I spot an edge case bug when using it.
Here is the JSON file that I have simplified a lot to demo the problem.
{
  "$ref": "#/definitions/doc_node",
  "definitions": {
    "top_level_node": {
      "type": "object"
    },
    "doc_node": {
      "type": "object",
      "properties": {
        "content": { "$ref": "#/definitions/top_level_node" }
      }
    }
  }
}

And when I tried to bundle it
const parser = new RefParser();
parser
  .bundle('./bug-schema.json')
  .then((s) => {
    console.log(JSON.stringify(s, null, 2))
  });

it generates output
{
  "$ref": "#/definitions/doc_node",
  "definitions": {
    "top_level_node": {
      "type": "object"
    },
    "doc_node": {
      "type": "object",
      "properties": {
        "content": {
          "$ref": "#/definitions/top_level_node/definitions/top_level_node"
        }
      }
    }
  }
}

As you can see, the 'definitions/top_level_node' is duplicated in doc_node. And I also did some debugging myself. It turns out that problem happens around here
Pointer.prototype.resolve = function(obj, options) {
  var tokens = Pointer.parse(this.path);

  // Crawl the object, one token at a time
  this.value = obj;
  for (var i = 0; i < tokens.length; i++) {
    if (resolveIf$Ref(this, options)) {
      // The $ref path has changed, so append the remaining tokens to the path
      this.path = Pointer.join(this.path, tokens.slice(i));  <== This line
    }

    var token = tokens[i];
    if (this.value[token] === undefined) {
      throw ono.syntax('Error resolving $ref pointer "%s". \nToken "%s" does not exist.', this.path, token);
    }
    else {
      this.value = this.value[token];
    }
  }

  // Resolve the final value
  resolveIf$Ref(this, options);
  return this;
};

I was trying to figure out what is the code doing here. My immature assumption is that resolveIf$Ref is checking if current object has a $ref and if it has one, it will be resolved. However, one thing I don't understand is the reason behind this path updating. May be it has something todo with line here ? Can we not update the path?
I understand you are busy and hope you could shed some light on this. I am happy to create a PR if you could understand the purpose of the path updating logic.
Cheers

Ahh, I think I kind of understand how the path changes better now. And, according to the comment, I think we shall return false here?
function resolveIf$Ref(pointer, options) {
  // Is the value a JSON reference? (and allowed?)

  if ($Ref.isAllowed$Ref(pointer.value, options)) {
    var $refPath = url.resolve(pointer.path, pointer.value.$ref);

    if ($refPath === pointer.path) {
      // The value is a reference to itself, so there's nothing to do.
      pointer.circular = true;
    }
    else {
      var resolved = pointer.$ref.$refs._resolve($refPath, options);

      if ($Ref.isExtended$Ref(pointer.value)) {
        // This JSON reference "extends" the resolved value, rather than simply pointing to it.
        // So the resolved path does NOT change.  Just the value does.
        pointer.value = $Ref.dereference(pointer.value, resolved.value);
        return false;  <====== HERE
      }
      else {
        // Resolve the reference
        pointer.$ref = resolved.$ref;
        pointer.path = resolved.path;
        pointer.value = resolved.value;
      }

      return true;
    }
  }
}

Hey, I raised a PR for it. Let me know if it's more complicated than I thought. :)

Thank you very much for the PR!   Great catch!


allow alternate symmetry column name

closes #191

Codecov Report

Merging #192 (e0a8357) into master (5976f96) will decrease coverage by 0.07%.
The diff coverage is 80.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##           master     #192      +/-   ##
==========================================
- Coverage   91.94%   91.88%   -0.07%
==========================================
  Files           8        8
  Lines         981      986       +5
==========================================
+ Hits          902      906       +4
- Misses         79       80       +1

Impacted Files
Coverage Δ

src/crystal.jl
93.56% <80.00%> (-0.15%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Possible API enhancements?

Spy with a Predicate
Currently, Debug has spyWith, which is fantastic for formatting what you're spying on.
spyWith :: forall a b. DebugWarning => String -> (a -> b) -> a -> a

I think it would be nice to augment this to allow for a predicate that decides if a value is interesting enough to be printed
spyWithMaybe :: forall a b. DebugWarning => String -> (a -> Maybe b) -> a -> a

or perhaps
spyWithPred :: forall a b. DebugWarning => String -> (a -> Boolean) -> (a -> b) -> a -> a

The strength of having such functionality is that you have a quick and dirty way to see how only a subset of some output is created. For example: "I'm surprised that this functions maps some of my 10,000 generated inputs to values < 100. Is my function/algorithm wrong or are there actually values for which this output makes sense?"
Without it, you have to break this functionality out and filter the results of some intermediate value. It might be nice to have a quick and dirty way to grab some examples and reason about those individually.

Point-free spying
This is really an argument for aesthetic.
If you enhance spy (or make a new function) that takes a function instead of a value, then it can seamlessly compose with other functions, though you do make writing out a value less inviting.
Right now something like:
weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  spy "from 100" (100.0 - _) >>>
  (0.0 * _)

Will attempt to print a partially applied function and then return that partially applied function. Which doesn't break anything, but isn't desirable either.
To have this work the way you'd want, you'd have to re-write it like this:
weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  \n -> spy "from 100" $ (100.0 - _) n >>>
  (0.0 * _)

or this:
weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  (spy "from 100" <<< (100.0 - _)) >>>
  (0.0 * _)

Instead, you can take a function and its argument as arguments.
newSpy ::  forall a b. DebugWarning => String -> (a -> b) -> a -> b

newSpyWith ::  forall a b c. DebugWarning => String -> (b -> Maybe c) -> (a -> b) -> a -> b

Now you can write it either way
weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  newSpy "from 100" (100.0 - _) >>>
  (0.0 * _)

weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  \n -> newSpy "from 100" (100.0 - _) n >>>
  (0.0 * _)

which I think looks much cleaner in the first case and doesn't need $ in the second case since newSpy String now has the same type signature as apply. In most use-cases, you can write newSpy "some string" in most expressions and get something intelligible back.
The drawback is if you want newSpy to print a value, it gets worse as you'd still have to feed it the identity function.
identity :: forall a. a -> a
identity x = x

weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  \n -> newSpy "from 100" identity $ (100.0 - _) n >>>
  (0.0 * _)

I rarely need to print a value, it's usually the result of some function. Maybe that's different for others?

I can't say predicated spying is something I've particularly needed, I just ignore the spys that aren't relevant :smile: but I can see that it makes sense. I think the Maybe version seems like the better option, since it's one function that can work both for the with case and a simple predicate by using guard to produce the Maybe.
I'm not sure I understand your second point though. The purpose of spy over trace is that it's already for logging in the middle of expressions, so I'm not sure why the function/point free aspect is an issue - why wouldn't you just write something like
weirdZero :: Number -> Number
weirdZero =
  (_ + 5.0) >>>
  (_ / 5.0) >>>
  (100.0 - _) >>>
  spy "from 100" >>>
  (0.0 * _)

?

Yeah, I think you're right about both points.
The second isn't really about being point-free the more that I think about it.
I just like being able to shove "spy String" in-front of any function quickly without adding any addition syntax. No $ or >>> for example. That being said, it doesn't really change anything and it's pretty straight forward to implement myself if I'm THAT keen on avoiding the extra keystroke :)
newSpy ::  forall a b. String -> (a -> b) -> a -> b
newSpy tag fn a = spy tag $ fn a


Example apps testflight continuous delivery

In case I won't be able to finish work on this PR before my holidays here is what needs to be done for this PR to be ready for review:
We're mainly waiting for the IT team to create an App Store Connect user that we will use to auth with App Store Connect in the upload_to_testflight step in two Fastfiles: both for the PublisherExampleSwiftUI and Subscriber Example apps.

We'll need to add a new github Secret - APPLE_APPS_USERNAME, which will contain the email of the App Store Connect user
We'll need to create a new App Specific Password for this user: https://support.apple.com/en-us/HT204397, and then replace the github secret's value for: APPLE_APPS_APPLICATION_SPECIFIC_PASSWORD with this password. Inn testflight.yml We make a FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ENV from it, which is automatically detected and used by Fastlane during the upload_to_testflight step.
Currently, testflight.yml is set to run on pull_request: for testing purposes. Once this whole flow is finally tested and it works fine, it should be set to run only when code is pushed to the main branch, so pull_request: bit needs to be removed.

Additional considerations:

I'm not sure if we actually have an AMPLIFY_CONFIGURATION secret added (used in testflight.yml). I've used it in a similar way as it's used in the assemble.yml workflow, but that workflow doesn't even create a JSON file or use this created ENV in any way. So we need to double check if everything is fine here.

@QuintinWillison as mentioned in standup, I'm assigning this one to you until the Apple ID is set up.


[stable/redmine] Option to create a custom service account

What this PR does / why we need it:
Add option to create a custom service account.
Special notes for your reviewer:
It does not change chart's default behavior.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[ ] DCO signed
[ ] Chart Version bumped
[ ] Variables are documented in the README.md
[ ] Title of the PR starts with chart name (e.g. [stable/mychartname])

@carrodher, could you review this PR?

@javsalgar @tompizmor, could you review this PR? Thanks!

/assign

/ok-to-test

@juan131, Is it ok to proceed? =D

/lgtm


enable openai v1 in load.py

load.py supports both openai v0 and v1
llm.openai and examples support openai v1 only.

Relaxed the openai dependency to <2.0.0.
Users should install openai by them self and log10 installation should leave the existing openai version.

[ ] need to test the pip installation

Plan to release log10 version 0.5.0 (currently 0.4.6).

Added the tags.
e.g.
from log10.load import Log10_OpenAI as OpenAI
client = OpenAI(tags=["load_v1_test"])
completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello world"}],
)
print(completion)

@nqn Please review.


Conflict between default a.k.a. master branch and 'Master' branch namespace

My TFS repo has branches organized in subfolders such as Master/2.0, Master/2.1, Features/ImportantFeature, Features/BoringFeature, and so on.
When I do a "git tfs clone --with-branches", git-tfs attempts to create branches named Master/2.0 and so on. Git supports this kind of name for branches, and those under Features are created without problems. However, before that it creates a local "master" branch that tracks remotes/tfs/default. The existence of a branch named "master" prevents creating branches in a Master subfolder/namespace. (Normal Git behavior: http://stackoverflow.com/questions/2527355/using-the-slash-character-in-git-branch-name). This is pretty serious since the branch creation failure interrupts the clone process and leaves the repo in a bad state. Thankfully the --resumable option works, but you have to resume every time it stumbles upon this naming problem. It took me a lot of fumbling around to figure out what was going wrong.
"git tfs branch --init --all" fails in a similar way, of course.
My proposed fix is to not use any hardcoded name for local or remote branches. Just use the TFS names for everything. The TFS branch I cloned from with the --with-branches option is actually called Master/1.0, so I'm not sure why git-tfs decided it would be remotes/tfs/default and would be called "master" locally.

The branch master is created in git when you create a new repo.
We are trying to clean up old/stale issues. As this issue hasn't seen any updates (or progress with pull requests) in quite a while, the issue will be closed. In case further information is provided, we can revisit that and reopen the issue again.


v1.8.0 Release Checklist

Release checklist

[x] Quickstart verified working and up-to-date
[ ] New/updated API endpoints described in the Guides
[ ] New/updated API endpoints included in the Postman collections
[ ] New tables/columns added to database diagram

I wasn't sure if you plan to go through the whole checklist here before merging so I'll leave it for you to merge when ready.

Thanks, am doing this now


Fix using custom mappers

If I define a repo that uses a custom mapper like so:
require 'bundler/inline'

gemfile(true) do
  source 'https://rubygems.org'
  gem 'rom', github: 'rom-rb/rom'
  gem 'rom-sql', github: 'rom-rb/rom-sql'
  gem 'rom-repository', github: 'rom-rb/rom-repository'
  gem 'sqlite3'
end

config = ROM::Configuration.new(:sql, 'sqlite::memory')

gateway = config.gateways[:default]

migration = gateway.migration do
  change do
    create_table :users do
      primary_key :id
      column :name, String, null: false
    end
  end
end

migration.apply(gateway.connection, :up)

class User
  def initialize(data = {})
    @id = data.fetch(:id)
    @name = data.fetch(:name)
  end
end

class Users < ROM::Relation[:sql]
  def by_id(id)
    where(id: id)
  end
end

class UserMapper < ROM::Mapper
  relation :users
  register_as :user

  model User
end

config.register_relation(Users)
config.register_mapper(UserMapper)

rom = ROM.container(config)

class UserRepo < ROM::Repository[:users]
  commands :create, update: :by_id, delete: :by_id

  def [](id)
    users.as(:user).by_id(id).one
  end
end

repo = UserRepo.new(rom)

user = repo.create(name: 'Jane')
repo[user.id]

I get the following error:
ROM::MapperMissingError: user
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-c713d99e9ec3/lib/rom/mapper_registry.rb:13:in `block in []'
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-c713d99e9ec3/lib/rom/mapper_registry.rb:13:in `fetch'
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-c713d99e9ec3/lib/rom/mapper_registry.rb:13:in `[]'
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-repository-430e79d2f19c/lib/rom/repository/loading_proxy.rb:50:in `block in map_with'
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-repository-430e79d2f19c/lib/rom/repository/loading_proxy.rb:50:in `map'
	from /home/andy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/rom-repository-430e79d2f19c/lib/rom/repository/loading_proxy.rb:50:in `map_with'
	from (irb):56:in `[]'
	from (irb):63
	from /home/andy/.rbenv/versions/2.2.3/bin/irb:11:in `<main>'

The above problem looks like it's caused here, relation is then used to get mappers here
I think the problem is caused accessing the relation using container.relations[name] as opposed to container.relation(name):
repo.__send__(:container).relations[:users].mappers
# => #<ROM::MapperRegistry elements={}>
rom.relations[:users].mappers
# => #<ROM::MapperRegistry elements={}>
rom.relation(:users).mappers
# => #<ROM::MapperRegistry elements={:user=>#<UserMapper transformers=[#<Transproc::Function:0x005558fe1da108 @fn=#<Method: Transproc::ArrayTransformations.map_array>, @args=[#<Transproc::Function:0x005558fe1da630 @fn=#<Method: Transproc::ClassTransformations.constructor_inject>, @args=[User], @name=:constructor_inject>], @name=:map_array>] header=#<ROM::Header attributes={} model=User>>}>

Please note that this still does not fix the example code unless you replace
class User
  def initialize(data = {})
    @id = data.fetch(:id)
    @name = data.fetch(:name)
  end
end
# with
class User
  def initialize(data = {})
    @id = data[:id]
    @name = data[:name]
  end
end

As the object passed to the initializer is a ROM::Struct[User], not sure whether this is the intended behaviour or whether it should just be a plain hash, seems like a redundant step to map twice.

Can now confirm the same behaviour is present in the current released version

I completely forgot about auto-mapper selection in Container#relation. Good catch Andy, thanks for taking care of this.


fix: catch EADDRINUSE on registry server start (https://github.com/cl…

A quick fix to prevent the process crashing when the registry server port is in use - which is a normal situation when multiple wranglers are running.

@willtemperley could you fix the issues that are causing CI to complain?


[OFFICIAL/TV] — Ballon d’Or 2024 LiVe 𝐒𝐭𝐫𝐞𝐚𝐦𝐬 FrEe BrOaDcAsT oN TV Guide & 𝐒𝐭𝐫𝐞𝐚𝐦𝐢𝐧𝐠 28 October 2024

The Ballon d'Or is one of the most prestigious individual football awards that can be won by a soccer player each year. Established in 1956, France Football's famous Golden Ball accolade has returned for the 68th year in 2024.
🔴🌍📺📱👉GO LIVE==►► CLICK HERE TO STREAMING
🔴🌍📺📱👉STREAMING==►► CLICK HERE TO WATCH LIVE
With the two stars, who shared 10 straight Ballon d'Ors from 2008 to 2017, out of contention, it is time for new names to rise. In fact, Luka Modric and Karim Benzema, the only two players to have won the award since 2007 apart from Messi and Ronaldo, too are missing from the nomination list. The new generation is ready to take over the award that is arguably the biggest individual prize in all of football.
It has been won by the greatest players of all time, with Cristian Ronaldo and Lionel Messi memorably trading the trophy for over 10 years, but the scene has opened up for a new generation of legends. Icons from the game will be present at the ceremony with plenty of glitz and glamour expected.
Real Madrid star Vinicius Junior was widely expected to be crowned the world’s best player after a stunning season for the club in which he won La Liga, the Champions League and the Spanish Super Cup, but Manchester City star Rodri has made a late run for glory in the hours before the ceremony.
With the Messi-Ronaldo duopoly now firmly behind us, here we take a look all major things you would want to know about the Ballon d'Or 2024 ceremony.
First given in 1956, Ballon d'Or is given to the best footballer of the previous season by French magazine France Football. The award is regarded as among the biggest individual prizes in football.
Apart from the best male player, awards are also given to recognise the best female players, coaches and clubs, in addition to the top scorer, goalkeeper, young player.
The prestigious Ballon d’Or ceremony will take place on Monday evening at the Châtelet Theatre in Paris.
The biggest headline will be the absence of both Lionel Messi and Cristiano Ronaldo, holders of 13 Ballon d’Or wins between them, as neither have been nominated for the first time in 20 years.
LIVE UPDATES FROM THE BALLON D’OR 2024 CEREMONY
Lionel Messi clinched the prestigious Ballon d'Or for a record-eighth time last year, but expect a fresh chapter to unfold tonight at the illustrious event in Paris.
sensation Vinicius Junior is the bookies' favourite to seize the title of the globe's finest player following a remarkable campaign that saw him lift the La Liga, Champions League, and Spanish Super Cup trophies.
Competing for this coveted accolade alongside him are footballing heavyweights such as Jude Bellingham, Phil Foden, Erling Haaland, Harry Kane, and Kylian Mbappe, all in the mix for a memorable evening.
Real Madrid winger Vinicius Junior is the favorite to be crowned the world’s best player and become the first winner born this century.
The other candidates are Manchester City and Spain’s Rodri and Vinicus’s Real teammate Jude Bellingham from England.
The Ballon d’Or was created by France Football magazine and has been awarded since 1956. It is voted for by journalists from the top 100 countries in the FIFA rankings.
Each journalist, one per country, selects 10 players in ranked order, with points attributed to each position. The winner is the player who receives the most points.
READ FULL PREVIEW
With Lionel Messi and Cristiano Ronaldo both not amongst the nominees for the first time in decades, this award is considered the start of a new era of the sport looking to crown a new top star.
The Sporting News provided live updates throughout the day, bringing you the final results and reaction from the Theatre du Chatelet across the hours-long ceremony in the French capital.
The other awards which will be given away are the Ballon d’Or Feminin (best women’s player), Kopa Trophy (best young footballer), Yashin Trophy (best goalkeeper), Gerd Muller Trophy (Most goals scored by a player), Socrates Award (humanitarian work), best men’s and women’s club of the year and the best men’s and women’s coach of the year.

bqt

oxeq

FG
vv


add: owners file for efs-provisioner chart

Signed-off-by: Masato Kureha<EMAIL_ADDRESS>
What this PR does / why we need it:
Add owners for efs-provisoner.
We need more reviewers. #12104
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md

/ok-to-test
/lgtm

@paulczar
Would you add me to the this repository as a read-only for maintaining?
ref: #13867


Habana (accelerator) UX design for admins

Currently there is no requirements doc for what features Admins will need to enable Habana support, so the best reference is the existing requirements doc. This also may not need its own issue, but I wanted to create it so we have somewhere to track it if needed. Existing doc: https://docs.google.com/document/d/10HOrkt-Vm4Ir_FAggyAttFipiG-L2eZX1wTZLJtLp-c/edit?usp=sharing

The design need to support accelerator granularity by adding toleration for accelerator profile.
The group feature for accelerator profile will require reassessment, as we plan to accommodate accelerator granularity.

Accelerator profile setting page mockup

Accelerator profile setting page mockup with group feature

Accelerator notebook image setting page mockup

The admin UI development has been postponed for the first release. This comment is for future reference when revisiting this issue.
cc: @Gkrumbach07 @andrewballantyne

Refer this issue to for details of adding tolerations to accelerator profiles.
https://github.com/opendatahub-io/odh-dashboard/issues/1223#issuecomment-1614840124

For future reference: https://redhat-internal.slack.com/archives/C03UA0RLSQM/p1688581361005139?thread_ts=1688581002.662379&cid=C03UA0RLSQM

For our admin flows, there may be a desire to limit AcceleratorProfiles to some users. We currently are still working on how that will be best managed, but we can do it by namespaces.
Using K8s docs on Admission Controllers can be used to add pod toleration restrictions. That allows our tolerations in the AcceleratorProfiles to actually limit, server-side, access to using some Nodes that are tainted for certain accelerators.
If a namespace has scheduler.alpha.kubernetes.io/tolerationsWhitelist we can hide the AcceleratorProfile in the UI and K8s Admission Controllers will prevent Pods from being able to land on certain Nodes that could be limited (via taints) from accepting certain data.
What we need from UX here, is how we can sync up that information. The Admin needs to do it -- per namespace probably, but they may not have access to this. So we'll need to consider how this is done -- likely a new CRD that admins can make use of and we probably can do this on the AcceleratorProfile admin page. More discussion is definitely needed, I just wanted to document the information so it's not getting lost in slack threads.


Add Mathjax support

I really like the look of Daux, but I was wondering if it would be possible to add an option to add Mathjax support for rendering equations. The set-up process isn't very involved: basically just adding a line of JavaScript in the page head as detailed here: http://docs.mathjax.org/en/latest/start.html. Thanks!

KaTeX could also be a good option - it seems to load much faster than Mathjax.

Putting this section inside templates/default/default.tpl enables KaTeX autorendering. I'd submit a pull request for inclusion, but I'm not sure how to make it toggleable in the config.json file and I doubt it's a feature that everyone would want enabled all the time.
<!-- KaTeX -->
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min.css">
     <script src="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min.js"></script>
     <script src="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/contrib/auto-render.min.js"></script>
     <script>
          renderMathInElement(document.body);
     </script>

Hi,
thanks for the suggestion, I think we can add a line about that in the documentation, explaining how to customize the template to add this if someone wants it, I'm not sure we want to add this by default in Daux.io
What do you think of that idea ?

That sounds perfect - I agree that it shouldn't be a default feature.

Hi, I cannot find the file template/default/default.tpl. Where do I add the support for KaTeX or MathJax? Thanks.

This is probably what you're looking for : https://github.com/justinwalsh/daux.io/blob/master/templates/layout/00_layout.php

Thank you! That works. The script renderMathInElement has to be included in the <body>. The version of KaTeX is now 0.6.0.
Please help with issue #379 if you can. I've tried everything that I could think of.

So there seems to be a problem. The above method works only on the home page (_index.md). None of the subsequent pages render the math. The content.php uses the 05_page.php layout. But that in turn calls the 00_layout.php. Not able to figure out why it won't render on other pages. Also tried the MathJax instead of KaTeX and it gives the same result.

Managed to fix it, but not sure why. I decided to use MathJax because I don't really have math-heavy pages, and it also needs just a single script to be included. I added the following in the <article> section of content.php and the <head> section of 00_layout.php.
<!-- LaTeX / Math Support-->
    <script type="text/javascript" async
  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">
    </script>

As I said, it works, but not sure why. Hope it doesn't break something else.

Closing this issue as we move the project to an organization: https://github.com/dauxio/daux.io, the packagist package name is now daux/daux.io and we even have a Docker image.
If you are still interested by that feature, please open a new issue in the organization and we'll look into it.


Measurement's methods should be thread-safe

Currently many cluster loader's measurements are using isRunning variable in not thread-safe way. This should be fixed.

/assign


cli: Support batch size on Linux.

Changes
Which issue is resolved by this Pull Request:
This solves one aspect of #379
Description of your changes:
Training speed can increase significantly with a higher batch size. Support to easily specify it on the command-line.

@russellb @hickeyma what's needed to get a review for this?

@tyll do you mind addressing this review https://github.com/instructlab/instructlab/pull/997#pullrequestreview-2036839019 so we can move forward? Thanks!


GDExtension: Unable to add_resource_format_loader

Tested versions

Reproducible with Godot 4.2.1 and godot-cpp 4.2.

System information
Godot v4.2.1.stable - Windows 10.0.22631 - Vulkan (Forward+) - integrated Intel(R) Iris(R) Xe Graphics (Intel Corporation; <IP_ADDRESS>89) - 12th Gen Intel(R) Core(TM) i7-1280P (20 Threads)
Issue description
Following this official guide and making note of this proposal, it should be possible to register custom ResourceLoader's within a GDExtension. I've checked and triple checked that I haven't missed anything, following the JSON and Image implementation of ResourceFormatLoader under godot/core/io/ verbatim. The project I'm working on implementing this in is open-source, and the files of interest are as follows:

RegisterExtension.cpp
DCFileLoader.(h/cpp)
DCFileResource.(h/cpp)

When attempting to debug this, calling print(ResourceLoader.get_recognized_extensions_for_type("DC")) within a GDScript file returns ["tres"], when it should return ["tres", "dc"]. Calling the same code with "JSON" instead returns ["tres", "res", "json"]
Other functions of the GDExtension work fine, as can be seen here, it's just the custom ResourceLoader I'm having issues with.
Any help would be greatly appreciated!
Steps to reproduce
The MRP contains the compiled extension for windows as well as the demo code that causes the debugger to error with: E 0:00:00:0541   demo.gd:7 @ _ready(): No loader found for resource: res://data/example.dc (expected type: )   <C++ Error>    Method/function failed. Returning: Ref<Resource>()   <C++ Source>   core/io/resource_loader.cpp:282 @ _load()   <Stack Trace>  demo.gd:7 @ _ready()
Minimal reproduction project (MRP)
MRP.zip

Your loader is missing the GDCLASS macro. Does adding that fix it?

Your loader is missing the GDCLASS macro. Does adding that fix it?

Unfortunately not, I get this error in the debugger in addition to the other ones: E 0:00:00:0649   set_object_extension_instance: Cannot get class 'DCFileLoader'.   <C++ Error>    Parameter "ti" is null.   <C++ Source>   core/object/class_db.cpp:392 @ set_object_extension_instance()
FWIW the core/io/ resource loaders don't use that macro either, presumably as they have no methods to bind. The example I linked above is also outdated (even though it's tagged latest), using the RES macro instead of Ref<Resource> load();

That's progress. The error hints you that you should register the loader class in ClassDB before calling add_resource_format_loader.

That's progress. The error hints you that you should register the loader class in ClassDB before creating an instance / calling add_resource_format_loader.

Hmm, that's resolved the Cannot get class 'DCFileLoader'. error but I'm still getting the original one.

Just noticed you're following documentation for modules to write a GDExtension. There are slight differences. Take a look at the generated header file godot-cpp/gen/include/godot_cpp/classes/resource_format_loader.hpp (which you correctly include) and override the virtual methods listed there (which start with an underscore and can have slightly different signatures). Not all of them have to be overridden; the underscored versions of the ones you currently have should be enough.

Just noticed you're following documentation for modules to write a GDExtension. There are slight differences. Take a look at the generated header file godot-cpp/gen/include/godot_cpp/classes/resource_format_loader.hpp (which you correctly include) and override the virtual methods listed there (which start with an underscore and can have slightly different signatures). Not all of them have to be overridden; the underscored versions of the ones you currently have should be enough.

Thank you, that worked! I guess the GDVIRTUALxRC macros don't work for extensions? Also, would you be able to quickly make sure this doesn't cause a memory leak?
I can draft up a docs page for custom resource loading within GDExtensions if that's something you would want?
Thank you again!


Build prototype 2, and fix a lot of software issues along with it

So far,
Hardware

Fix issue with front case hardware. I've found a way to solder it so that bumping into the button is not an issue.

This introduces a new issue: The LEDs are too damn bright. Going to make the resistor MUCH stronger and probably also re-position the LEDs.

Moved STFU IO to the top of the case

Software

Fixed a bug (#13) that I didn't think was a bug
#3
[x] Add STFU IO support
[x] Refactor?

Definitely still a lot of work to do. Should probably merge soon though.

Closes #17
Closes #13 (probably)

Sorry Joe lol


Redesign parser

This PR redesigns how the parser function works and moves all of the heavy lifting out of the main class into seperated functions and classes for each AVR response and function area (audio, video, DSP etc.).
This has gone through a bunch of iterations since I started this, originally using reflection to select the function based on the  alpha chars of the response but this would have had issues where the value from the AVR can also contain alpha chars (such as tuner frequency / tuner preset), so a handler had to be added between.
I need to sort a few linq issues out too before this is ready, but would appreciate any feedback.

Ha, I was working on the HA integration side earlier today and noted a few places in the parser where the parsing was a little loose, and also zones were flagged updated whether the value was changed from the cached value or not (this impacts whether HA is flagged to poll for updated state/attributes.)
I'll take a look later on this weekend and compare notes.

Ha brilliant, as I was sitting here this evening going through each parser I thought to myself "well hang on, this is parsing the same response but for two different fields".
There are still a couple of things I need to sort out, one of them being the updated_zones if the Response object does not contain a value in property_name
The first commit shouldn't be here btw, forgot to reset the branch back to head. Its part of #15 though which is ready for merge from myside, that needs to be sorted before releasing the sound mode features in the HA integration though.

Apologies, missed that other PR, it's merged now.

Additionally, in updating the pioneer_async integration, I noticed that in set_channel_levels I believe you're trying to guard against a zone not existing, I think that needs to be changed from:
if self.channel_levels.get(zone).get(channel.upper()) is not None:

to:
if self.channel_levels.get(zone, {}).get(channel.upper()) is not None:

as get returns None if the property doesn't exist, and get is not available with NoneType.

Additionally, in updating the pioneer_async integration, I noticed that in set_channel_levels I believe you're trying to guard against a zone not existing, I think that needs to be changed from:
if self.channel_levels.get(zone).get(channel.upper()) is not None:

to:
if self.channel_levels.get(zone, {}).get(channel.upper()) is not None:

as get returns None if the property doesn't exist, and get is not available with NoneType.

Zone & channel, no point trying to set the channel of a speaker that doesn't exist on the AVR (supported channels are auto discovered anyway)

the latest commits adds some parsers for model, mac, version and source names (plus a bunch more setting related ones that we didn't have before).
I know we're already hand parsing the output for model, mac, version and source names inside of PioneerAVR, but hopefully we can move those out and use the new parser classes from this PR instead
Also allows fixing a bug in parsing the mac address, on my AVR the existing parser inside PioneerAVR was returning the following

mac_addr : SV:B7:45:E1:C5:6F
Which is incorrect as a mac address is hex only so the maximum allowed MAC by theory is FF:FF:FF:FF:FF:FF. So I've changed how it works in the new parser functions, the old one still overrides it though when the lib is first ran.

Also added a few other features, such as parsing the network standby setting which might allow us to do something about https://github.com/crowbarz/ha-pioneer_async/issues/12 without impacting functionality for AVRs that do have a network standby mode. Perhaps even adding a checkbox on the integration setup to allow aiopioneer to automatically adjust settings like this so that its most compatible with the library maybe?
And I think we can now rename sources too, not that it happens often for people, but might be handy rather than messing around with the front panel and remote, it should update the _source_id_to_name and _source_name_to_id dicts when those events happen, which in turn would update the source lists that are returned to the HA integration I think? May even be worth getting rid of these entirely as I don't think both are actually needed, but I've not looked at that in detail.
I've not added any additional queries as of yet to the main commands. But something we could enable in the future.

And I think we can now rename sources too, not that it happens often for people, but might be handy rather than messing around with the front panel and remote, it should update the _source_id_to_name and _source_name_to_id dicts when those events happen, which in turn would update the source lists that are returned to the HA integration I think?

_source_id_to_name is used by get_source_name() and it is called via the HA integration when the zone entity is flagged as updated. __source_name_to_id is used by the HA integration via get_source_dict() during entity update as well as via select_source in aiopioneer to translate the source name specified to its ID. When this is converted to use an enum then one should be able to pass in via name or ID and eliminate all the conversions back and forth.
Last week I checked in the HA side changes to expose the services for all the aiopioneer side functions implemented up to then, except set_(amp|video|dsp)_settings and the media related functions. Are any of those aiopioneer side functions for these updated in this PR?
I'm still working on refactoring the HA integration config flow and adding support for the new aiopioneer side parameters, once that is in place I will create a new release of aiopioneer (to pick up #15) and also the HA integration targeting that aiopioneer release. Hoping to get it done this weekend, doesn't look like I have as much time as you at the moment to work on this :(

_source_id_to_name is used by get_source_name() and it is called via the HA integration when the zone entity is flagged as updated. __source_name_to_id is used by the HA integration via get_source_dict() during entity update as well as via select_source in aiopioneer to translate the source name specified to its ID. When this is converted to use an enum then one should be able to pass in via name or ID and eliminate all the conversions back and forth.

Indeed, for the enum works I'll do that separately as this is already quite a big PR in itself.

Last week I checked in the HA side changes to expose the services for all the aiopioneer side functions implemented up to then, except set_(amp|video|dsp)_settings and the media related functions. Are any of those aiopioneer side functions for these updated in this PR?

None of the side functions have been updated , with the removal of some zones from parsers there are a couple of changes that are needed on the internal bits of the code, but nothing that will affect integrations etc.

I'm still working on refactoring the HA integration config flow and adding support for the new aiopioneer side parameters, once that is in place I will create a new release of aiopioneer (to pick up #15) and also the HA integration targeting that aiopioneer release. Hoping to get it done this weekend, doesn't look like I have as much time as you at the moment to work on this :(

No problem, do you think some of the parsing can be removed from query_device_info now that the parsers have been defined under parsers.SystemParsers ? I've ran it and commented out the lines of code relating to parsing with no impact so far, but was quite a limited test.

[Do] you think some of the parsing can be removed from query_device_info now that the parsers have been defined under parsers.SystemParsers ?

I'm only going to be able to test the updated parser code on my own VSX-930, it will need to be released to test this out on a wider range of AVRs.
On return from query_device_info, it is expected that self.model is set and self._default_params is set via _set_default_params_model. Which lines have you commented out to remove the parsing, and when they are commented out what is generating the system_query_(mac_address|software_version|model) commands to be sent for the parsers to receive responses to parse?
Note that send_command waits for a response with a given prefix to be returned, but it's not deterministic whether the response will already be parsed on its return - the only guarantee on non-failure is that a response with the expected prefix has been received. Both _connection_listener and send_command (via send_raw_request) await _read_response, but either could execute first once a response is actually received. It may be sufficient to await asyncio.sleep(0) to yield to the _connection_listener task which processes the response, so that the respective mac_address, software_version and/or avr_model have run and set the appropriate properties.

I started up my dev HA instance with the aiopioneer version from this PR @ c6aa6c7f875ddc6b48d6f218fe5d986625ea8f95 , and on startup it continuously cycled through full updates. It shouldn't be possible to trigger a full update from within an already running full update, so not quite sure what is happening here. Logs from the middle of the cycle below.
2023-03-26 20:24:06.749 INFO (MainThread) [aiopioneer.pioneer_avr] updating AVR status (full=True, last updated 0.001 s ago)
2023-03-26 20:24:06.749 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.090 s
2023-03-26 20:24:06.840 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?P
2023-03-26 20:24:06.850 INFO (MainThread) [aiopioneer.pioneer_avr] Zone 1: power: True (0)
2023-03-26 20:24:06.850 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.queue_command(FULL_UPDATE)
2023-03-26 20:24:06.850 INFO (MainThread) [aiopioneer.pioneer_avr] Scheduling command queue.   (['FULL_UPDATE'])
2023-03-26 20:24:07.672 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._command_queue_schedule()
2023-03-26 20:24:07.672 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(command_queue): already completed
2023-03-26 20:24:07.673 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._command_queue
2023-03-26 20:24:07.673 INFO (MainThread) [aiopioneer.pioneer_avr] Command Queue Executing: FULL_UPDATE
2023-03-26 20:24:07.673 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?P returned response: PWR0
2023-03-26 20:24:07.673 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.091 s
2023-03-26 20:24:07.673 DEBUG (MainThread) [aiopioneer.pioneer_avr] Command Queue Finished.
2023-03-26 20:24:07.765 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?V

On return from query_device_info, it is expected that self.model is set and self._default_params is set via _set_default_params_model. Which lines have you commented out to remove the parsing, and when they are commented out what is generating the system_query_(mac_address|software_version|model) commands to be sent for the parsers to receive responses to parse?
See parsers/system.py, line 265+ for the parsing.

My limited test involved commenting out the following lines from aiopioneer.py
856-859
863-865
871-874

I started up my dev HA instance with the aiopioneer version from this PR @ https://github.com/crowbarz/aiopioneer/commit/c6aa6c7f875ddc6b48d6f218fe5d986625ea8f95 , and on startup it continuously cycled through full updates. It shouldn't be possible to trigger a full update from within an already running full update, so not quite sure what is happening here. Logs from the middle of the cycle below.

Any chance you could upload the full logs so I can paint a 'story' as to whats going on? I've not seen that behaviour yet. I think its because of the condition from L984 onwards, they need adjusting a bit as I've added more commands since I initially did that part.

Any chance you could upload the full logs so I can paint a 'story' as to whats going on? I've not seen that behaviour yet. I think its because of the condition from L984 onwards, they need adjusting a bit as I've added more commands since I initially did that part.

Yep, here is the full log: https://pastebin.com/9A7CAWFK . Fairly sure it's not anything I changed on the HA side, when I switched aiopioneer back to the dev branch it started up properly again.

Interesting, its not even sending the query to get tone information, I've just updated the command override section, could you try again please?

Same result after fast-forwarding to 56065d76567c1642edea80d1806de28c14e38dd4 , log at https://pastebin.com/KWLh7BhK . I've finally got the config flow working so will try to see what is going on tomorrow (today). It may be async reordering execution unexpectedly. There are locks elsewhere in the code to try to avoid such issues.

Ahh, I think I've just spotted why that's happening, I haven't accounted for the disable_autoquery parameter that you have set to True.

@crowbarz - Updated, the loop should be resolved now

It no longer loops now on my dev setup when disable_autoquery is enabled, but it now loops when it is disabled ...
However there's another issue with listening_mode now being a string and that is causing an exception in the integration:
  File "/share/config/custom_components/pioneer_async/media_player.py", line 487, in sound_mode
    return self._pioneer.listening_mode.get(self._zone, None)
AttributeError: 'str' object has no attribute 'get'

Let me see what is going on there and resume testing once I've figured it out.
I've cherry-picked a few changes from dev as pioneer_async==0.7.3 expects get_source_dict() to take a zone parameter.

Ok, I see listening_mode doesn't have a zone any more, will update on the HA side.
   ["SR", AudioParsers.listening_mode, None],

Actually it might not have been looping when disable_autoquery is turned off, I have debug level logging for aiopioneer so there are a lot more logs. With info level logging I see it has stopped, but on startup it does seem to have parsed dsp/audio/video responses three times within 10 seconds.

Ok, I see listening_mode doesn't have a zone any more, will update on the HA side.
   ["SR", AudioParsers.listening_mode, None],

Yes, I can add it back in again, but listening_mode doesn't apply on any other zone (regardless of AVR) apart from Z1 so to tidy up whats in memory a little bit, I changed it to set it as purely a string.

Actually it might not have been looping when disable_autoquery is turned off, I have debug level logging for aiopioneer so there are a lot more logs. With info level logging I see it has stopped, but on startup it does seem to have parsed dsp/audio/video responses three times within 10 seconds.

This is probably where we queue extra commands to return the current state, I've had the same thing on my AVR, but I haven't had a chance to figure out where its coming from yet.
Thanks for adding those new commits in too 👍

I remember now why I enabled disable_autoquery on my test instance - I only have one AVR, and my production system is running aiopioneer 0.3.1 in parallel which has disable_autoquery disabled. So the production instance will trigger the autoqueries, and if my test instance didn't have disable_autoquery enabled it would send out another set of queries - which is why I see the autoqueries running multiple times on the startup of my test instance.
Anyway, the updated parser has been running on my test instance for a few days and it seems to work well on my setup.
Will think about the question regarding query_device_info. Are there any other outstanding issues left for this PR from your perspective?

Will think about the question regarding query_device_info. Are there any other outstanding issues left for this PR from your perspective?

I don't think so, I think all concerns and issues have been addressed. I'll mark this PR as ready 👍

I've removed the parsing from query_device_info and build_source_dict and instead waited for the responder task to populate the attributes. Also I accidentally pushed 2c2c139b350ec1473839d24dd470e16821bf511c into this PR which I needed for the config flow updates on the HA integration side.
BTW are you using a formatter in your IDE? black is used in my environment and run automatically by VSCode on save, it decides to format things a bit differently and its mods end up being included as changes unless I tell VSCode not to format on save.
Let me know if this still runs for you and if so I'll merge it in.

Working well here still.
Currently using the default formatter for VSCode although I don't have any of the options enabled to make any use of them however.
No worries with the accidental push, all ends up in the same place anyway ;)


Broken tars inside packages

It seems there is broken tars inside nodejs 'tar' which makes packaging script fall error like this:
[   37s] Untaring /home/abuild/rpmbuild/SOURCES/tar-2.2.1.tgz
[   37s] Renaming /home/abuild/rpmbuild/SOURCES/package to /home/abuild/rpmbuild/SOURCES/tar-2.2.1
[   37s] Untaring /home/abuild/rpmbuild/SOURCES/tar-2.2.1/test/fixtures.tgz
[   37s] Untaring /home/abuild/rpmbuild/SOURCES/tar-2.2.1/test/cb-never-called-1.0.1.tgz
[   37s]
[   37s] gzip: stdin: unexpected end of file
[   37s] tar: Unexpected EOF in archive
[   37s] tar: Unexpected EOF in archive
[   37s] tar: Error is not recoverable: exiting now
[   37s] Renaming /home/abuild/rpmbuild/SOURCES/tar-2.2.1/test/package to /home/abuild/rpmbuild/SOURCES/tar-2.2.1/test/cb-never-called-1.0.1
[   37s] Untaring /home/abuild/rpmbuild/SOURCES/tar-2.2.1/test/fixtures.tgz
[   37s] /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:124:in `basename': no implicit conversion of nil into String (TypeError)
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:124:in `unpack'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:104:in `block in recursive_untar'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:99:in `glob'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:99:in `recursive_untar'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:111:in `block (2 levels) in recursive_untar'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:111:in `each'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:111:in `block in recursive_untar'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:99:in `glob'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:99:in `recursive_untar'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/lib/node2rpm/server.rb:24:in `prep'
[   37s] 	from /usr/lib64/ruby/gems/2.1.0/gems/node2rpm-1.0.0/bin/node2rpm-server:11:in `<top (required)>'
[   37s] 	from /usr/bin/node2rpm-server:23:in `load'
[   37s] 	from /usr/bin/node2rpm-server:23:in `<main>'
[   37s] error: Bad exit status from /var/tmp/rpm-tmp.augKU5 (%prep)
[   37s]
[   37s]
[   37s] RPM build errors:
[   37s]     Bad exit status from /var/tmp/rpm-tmp.augKU5 (%prep)
[   37s]
[   37s] lamb51 failed "build postcss-cli.spec" at Wed Sep  6 13:19:52 UTC 2017.

As it's correct behavior to crash it should be probably be done more nicely with testing is tar archive correct or not try to untar from test-directories as they are not needed.
Package can be found here: https://build.opensuse.org/package/show/home:illuusio:nodejs-bundle/postcss-cli

@illuusio I think the only thing I can do is to skip test directories...testing if the tar archive is correct is wrong, because it should crash if packager uploaded wrong source or correct source with wrong suffix.
the 'skip' can only skip directory exactly named "/(test|tests|testing)/", because some nodejs module may call itself 'unittest', that is, I need to maintain another regex :-(

Yes I can't see better option. It's not 'perfect' but works most of the time.


Wordpress with Sharepoint

Dear Team,
I need your help to know how to display a new on landing page in sharepoint from website created in wordpress. We have news which is in a website(wordpress), I need that to be displayed in Sharepoint page.,
How can this be achived.

Dear Team,
I need your help to know how to display a new on landing page in sharepoint from website created in wordpress. We have news which is in a website(wordpress), I need that to be displayed in Sharepoint page.,
How can this be achived.

Not really an issue - however, you can do this by:

Installing the react-rss-reader sample
Using this web part on your sharepoint page, choose Direct Feed and on whatever news page you are on on Wordpress add "/feed" at the end of the url (e.g. if your news page is https://www.somenews.com/news, put in https://www.somenews.com/news/feed).

We do this successfully.

Thanks for you answer. This will help me a lot. Also if I need to display the image from the new, can this be possible from this RSS reader

Thanks for you answer. This will help me a lot. Also if I need to display the image from the new, can this be possible from this RSS reader

I believe so but we havent done this part ourselves (yet). This will require some customisation of your RSS feed from Wordpress as well as creating a custom template on the web part, if you google this there are a few articles on how to do this.
Bear in mind that you may encounter some CORS issues which you may need to ensure your WP site is allowing CORS requests.

@sheiknaveed did @MrShed 's answer help you?
I'm going to go ahead and close this issue. If you still need help, feel free to open a new issue with more questions and refer to this issue.


refactor: move ConfigureInstallation to own folder

Summary
We need to add some logic to control flow the UI to skip configuration step (when hydrated revision read and write is not present). We separate the "configuration step" into a refactored component named ConfigureInstallation which now contains
  <ConfigurationProvider>
      <ObjectManagementNav>
        <InstallationContent />
      </ObjectManagementNav>
    </ConfigurationProvider>

and along with the actions, content, nav, and state folder which were previously one level up at the InstallIntegrations component level and
This may affect builds relying on internal paths related to Configure Components.

refactor not needed at this time.


vvc generator creates questionable code for multichannel vvcs

Hi,
I used the VVC generator to create a VVC with TX and RX subchannels.
This lead to the following subtype declaration in the transaction_pkg:
subtype t_sub_channel is t_channel range TX to RX;
The problem here is, that t_channel is declared in the uvvm_util adaption_pkg as:
type t_channel is (
    NA,               -- When channel is not relevant
    ALL_CHANNELS,     -- When command shall be received by all channels
    -- UVVM predefined channels.
    RX, TX
    -- User can add more channels if needed below.
  );

This evaluates the range of t_sub_channel to 3 to 2, which in turn leads to the compile error:
(vcom-1154) No index value can belong to null index range "TX" to "RX".
I did not spend time to check the details of the vvc_generator script, but it seems to me that a user can give any kind of channel names to the script which in turn lead to a faulty definition of the t_sub_channel.
Is this an user error? Is the user supposed to change the code inside the uvvm_utils? The comment in the definition of t_channel sure sounds like it. But even as a uvvm poweruser, this sounds like a bad idea, because it would cause annoyances when upgrading the uvvm_utils version.
kind regards
Thiemo

You are allowed to change the code in uvvm_util library. From uvvm_util/doc/util_quick_ref.pdf:

1.14 Adaptation package
The adaptations_pkg.vhd is intended for local modifications to library behaviour and log layout.
This way only one file needs to merge when a new version of the library is released.
This package may of course also be used to set up a company or project specific behaviour and layout.

You can use any name for the channel. But if you used some other names for the channels (like RECEIVE and TRANSMIT), the code wouldn't compile unless you added new enumerated value in the t_channel type, as the comment suggests.
Probably easiest way is to fix the issue is to change the range to correct manually, or the safest to re-run the script and typing the "RX" first for channel_0 name, and then "TX" for channel_1 name.

Fixed in release v2023.03.10


Set up appointment model

set up a django model for appointments

Can I try this? I will probably need help but I think I learned enough from the polls tutorial I did yesterday to do it. There will also be table and factory models which are associated with the appointments, right?

Appointments should also have "slots", each with a "proficiency" requirement for the slot to be filled, and the "slots" should be able to be associated with a "user", or be "empty".


[2.4] Update minio-go to latest client

@aiyengar2 Could you squash so it's just 2 update commits?

@aiyengar2 Could you squash so it's just 2 update commits?

@kinarashah done


IGNITE-12905 - QueryKeyValueIterable missing custom spliterator() implementation

Because QueryKeyValueIterable does not implement spliterator, calling spliterator().hasCharacteristics(Spliterator.SIZED) will construct a new Spliterator with java.util.Spliterators#spliteratorUnknownSize(java.util.Iterator<? extends T>, int) and that will call org.apache.ignite.internal.processors.cache.QueryCursorImpl#iter again, thus throwing exception throw new IgniteException("Iterator is already fetched or query was cancelled.")

Looks good to me, but you should re-run ~Run-All TC task~ possible blockers of your PR until no blockers found for that (Results ready button will green and contain '0' caption) and then publish the approval to jira ticket by pressing the Comment JIRA button.
Upd: Easy way is to go into Show pull/7704/head report page and press Re-run possible blockers button there.

Thank you, I got lost in TC searching for failed tests. :)

Looks good to me, but you should re-run ~Run-All TC task~ possible blockers of your PR until no blockers found for that (Results ready button will green and contain '0' caption) and then publish the approval to jira ticket by pressing the Comment JIRA button.
Upd: Easy way is to go into Show pull/7704/head report page and press Re-run possible blockers button there.

Thank you, I got lost in TC searching for failed tests. :)

FYI: TC Builds page of this PR.

Looks good to me, but you should re-run ~Run-All TC task~ possible blockers of your PR until no blockers found for that (Results ready button will green and contain '0' caption) and then publish the approval to jira ticket by pressing the Comment JIRA button.
Upd: Easy way is to go into Show pull/7704/head report page and press Re-run possible blockers button there.

Thank you, I got lost in TC searching for failed tests. :)

FYI: TC Builds page of this PR.

master branch tests are failing. Should I clean (some of) them up? Since some are trivial (add a .travis.yml exclude to apache-rat-plugin)...

Looks good to me, but you should re-run ~Run-All TC task~ possible blockers of your PR until no blockers found for that (Results ready button will green and contain '0' caption) and then publish the approval to jira ticket by pressing the Comment JIRA button.
Upd: Easy way is to go into Show pull/7704/head report page and press Re-run possible blockers button there.

Thank you, I got lost in TC searching for failed tests. :)

FYI: TC Builds page of this PR.

master branch tests are failing. Should I clean (some of) them up? Since some are trivial (add a .travis.yml exclude to apache-rat-plugin)...
ps: you have an interesting git workflow for a complex project

Some tests at master branch can fail occasionally, you should exclude the influence of your change by several re-runs of failed tests, the most of them should pass without failures. In case when you get some repeatedly failed tests, i.e. blockers count won't zeroed after several runs (3-5), you'll have to research those test for affecting by your changes.


[BugFix] Fix projection may reuse column ref when prune union empty

What type of PR is this：

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes https://github.com/StarRocks/starrocks/issues/16624
for the query:
explain SELECT 'all' , 'all2' where 1 = 2 union all select distinct k1, k1 from tmp ;

reuse column ref will generate a plan:
+---------------------------------+
| Explain String                  |
+---------------------------------+
| PLAN FRAGMENT 0                 |
|  OUTPUT EXPRS:8: cast | 9: cast |
|   PARTITION: UNPARTITIONED      |
|                                 |
|   RESULT SINK                   |
|                                 |
|   3:EXCHANGE                    |
|                                 |
| PLAN FRAGMENT 1                 |
|  OUTPUT EXPRS:                  |
|   PARTITION: RANDOM             |
|                                 |
|   STREAM DATA SINK              |
|     EXCHANGE ID: 03             |
|     UNPARTITIONED               |
|                                 |
|   2:Project                     |
|   |  <slot 8> : 6: k1           |
|   |  <slot 9> : 6: k1           |
|   |                             |
|   1:AGGREGATE (update finalize) |
|   |  group by: 6: k1            |
|   |                             |
|   0:OlapScanNode                |
|      TABLE: tmp                 |
|      PREAGGREGATION: ON         |
|      partitions=1/1             |
|      rollup: tmp                |
|      tabletRatio=2/2            |
|      tabletList=10184,10186     |
|      cardinality=65536          |
|      avgRowSize=2.0             |
|      numNodes=0                 |
+---------------------------------+

which will cause low-cardinality optimize got a wrong plan
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 2.5
[x] 2.4
[x] 2.3
[x] 2.2

[FE PR Coverage Check]
:heart_eyes: pass : 4 / 4 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/optimizer/rule/transformation/PruneUnionEmptyRule.java
4
4
100.00%
[]

run starrocks_admit_test

run starrocks_fe_unittest

[FE PR Coverage Check]
:heart_eyes: pass : 4 / 4 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/optimizer/rule/transformation/PruneUnionEmptyRule.java
4
4
100.00%
[]

run starrocks_admit_test

run  starrocks_admit_test

@Mergifyio backport branch-2.5

@Mergifyio backport branch-2.4

@Mergifyio backport branch-2.3

@Mergifyio backport branch-2.2


Ignore most exceptions while getting host name to avoid cancellation.

Motivation:

Android 4.4.4 throws a RuntimeException which aborts the proxy on start up.
IO always must not be reliable (especially for offline use cases), so exceptions should be ignored.
Returning null is valid for the method, so the log level should be reduced to info.

Modifications:

Catch IOException and RuntimeException with a single info log line.
Log the stacktrace if debug enabled only.

Please ignore the travis-ci/push failure. I've pushed a branch to adamfisk/LittleProxy by mistake and deleted while building in Travis-CI.

@jekh It's my intention. I think in case of expected behavior like an IOException the stack trace should be suppressed in INFO mode.
Blocking this PR makes LittleProxy incompatible with Android devices.

I certainly see your point; under almost all circumstances, the getLocalHost() call is going to succeed, except on Android devices, where a stack trace would just be noise.


Documentation for PostgreSQL integration testing

Describe your changes
Added postgreSQL Test Documentation ipynb file; opening draft PR
Issue number
Closes 643
Checklist before requesting a review

[x] Performed a self-review of my code
[x] Formatted my code with pkgmt format
[x] Added tests (when necessary).
[x] Added docstring documentation and update the changelog (when needed)

:books: Documentation preview :books:: https://jupysql--663.org.readthedocs.build/en/663/

Hello @edublancas
I started with setting up development environment for jupysql as directed in the documentation. After that I started PostgreSQL instance up and running (docker container) and ran the tests in both the files mentioned in issue #643. As everything is working fine till now, I am starting with the proper documentation in separate notebook file. Just wanted to check if am I on the right track?
I will be pushing the initial draft of a file shortly.

@edublancas I have pushed the initial draft of test document to the repo. Should I make it available for review?

Not able to see the docs preview. Please fix the build and re-request for review
@ha2179

did you run the commands you added to the tutorial? I believe dockerctx depends on psycopg2, so psycopg2 should be installed before dockerctx.
Also, I don't think %pytest will work.
It'd be better to run the commands to ensure they actually work: https://ploomber-contributing.readthedocs.io/en/latest/documentation/notebooks.html
also, the docs are failing. check the logs and fix the warnings.

Sure, will do that. Should I make this a markdown file and move it under tutorials/ ?

Sure, will do that. Should I make this a markdown file and move it under tutorials/ ?

No. keep it as an ipynb. add if in the same section as the one documenting how to run integration tests

updated the doc as per requested changes, and fixed the build warnings.
for the workflow failure do I need to push with --allow-workflow-edits as I'm pushing from fork?

apologies for accidentally tagging @yafimvo for review due to yaml change, reverted the change already

looks like you're missing a changelog entry. please add
also, if you look at the integration tests implementation, you'll see that it's unnecessary to run the docker commands, as the test will spin up the container when it starts.
another thing I noticed when running your commands is that pytest will take ~1 minute to fail if I'm missing psycopg2, looks like we have an issue in the setup because missing a package should exit the command fairly quickly with an error message. so please investigate what's going on

Yes that's right, removed the docker run part from doc and updated the changelog.
Sure, will investigate over that issue!

looks like you're missing a changelog entry. please add
also, if you look at the integration tests implementation, you'll see that it's unnecessary to run the docker commands, as the test will spin up the container when it starts.
another thing I noticed when running your commands is that pytest will take ~1 minute to fail if I'm missing psycopg2, looks like we have an issue in the setup because missing a package should exit the command fairly quickly with an error message. so please investigate what's going on

Hello, can't seem to reproduce this issue on my end. I tried setting up entirely new environment, where it doesn't let me install dockerctx without psycopg2, hence pytest instantly fails over dockerctx.
Also tried with deliberately uninstalling psycopg2 and running pytest - in this case it produces expected error, and Fails all tests almost fairly quickly under ~15 seconds for me.
What's exactly happening on your end?

@ha2179 looks like yours is failing fast because you explicitly added import psycopg2?
this would imply that we'd have to add an import {package} to each database we have in the integration tests, instead, we should find the root issue that's causing this to hang up. This is what happens in my environment (note that it takes 1 minute):
pytest "src/tests/integration/test_generic_db_operations.py" -k "ip_with_postgreSQL"

FAILED src/tests/integration/test_generic_db_operations.py::test_query_count[ip_with_postgreSQL-3] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_create_table_with_indexed_df[ip_with_postgreSQL-15-15] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_active_connection_number[ip_with_postgreSQL-1] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_close_and_connect[ip_with_postgreSQL-postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_telemetry_execute_command_has_connection_info[ip_with_postgreSQL-postgresql-psycopg2] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-histogram] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-hist] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-histogram-bins] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-box] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot-with-horizontal] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot-with] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_cmd_magic_uno[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_cmd_magic_dos[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_profile_data_mismatch[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlcmd_tables_columns[ip_with_postgreSQL-numbers] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlcmd_tables[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-simple-query] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-cte] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-interpolation-like-comment] - ModuleNotFoundError: No module named 'psycopg2'
============================================================= 20 failed, 1 skipped, 130 deselected in 62.89s (0:01:02) ==============================================================

@ha2179 looks like yours is failing fast because you explicitly added import psycopg2?
this would imply that we'd have to add an import {package} to each database we have in the integration tests, instead, we should find the root issue that's causing this to hang up. This is what happens in my environment (note that it takes 1 minute):
pytest "src/tests/integration/test_generic_db_operations.py" -k "ip_with_postgreSQL"

FAILED src/tests/integration/test_generic_db_operations.py::test_query_count[ip_with_postgreSQL-3] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_create_table_with_indexed_df[ip_with_postgreSQL-15-15] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_active_connection_number[ip_with_postgreSQL-1] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_close_and_connect[ip_with_postgreSQL-postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_telemetry_execute_command_has_connection_info[ip_with_postgreSQL-postgresql-psycopg2] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-histogram] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-hist] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_histogram[ip_with_postgreSQL-histogram-bins] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-box] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot-with-horizontal] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlplot_boxplot[ip_with_postgreSQL-boxplot-with] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_cmd_magic_uno[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_cmd_magic_dos[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_profile_data_mismatch[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlcmd_tables_columns[ip_with_postgreSQL-numbers] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sqlcmd_tables[ip_with_postgreSQL] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-simple-query] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-cte] - ModuleNotFoundError: No module named 'psycopg2'
FAILED src/tests/integration/test_generic_db_operations.py::test_sql_query[ip_with_postgreSQL-interpolation-like-comment] - ModuleNotFoundError: No module named 'psycopg2'
============================================================= 20 failed, 1 skipped, 130 deselected in 62.89s (0:01:02) ==============================================================

Nope, I didn't edit anything.  I think the overhead might come from that

are you starting the container manually? because I'm not (the tests are configured to start one if needed). I think the overhead might come from that

No, not doing that either.
I re ran again right now. Checked docker and ensured no container was running before launching pytest. Still failed in around 10 secs.

are you starting the container manually? because I'm not (the tests are configured to start one if needed). I think the overhead might come from that

Spotted it. Apparently there was stopped container mapped to the port, maybe that was expediting it. Now, it's taking ~1 min for me as well. Will track down what's happening!

@edublancas found the root cause -
It's basically a timeout issue. In jupysql/src/sql/_testing.py this function checks if the database connection is ready, and has timeout set at 60; I tried playing around with timeout variable, after setting it to 1, the tests instantly fail over the ModuleNotFoundError.
def database_ready(
    database,
    timeout=60,
    poll_freq=0.5,
):
    """Wait until the container is ready to receive connections.

    :type host: str
    :type port: int
    :type timeout: float
    :type poll_freq: float
    """

hey @ha2179, tha


[GLUTEN-1632][CH]Daily Update Clickhouse Version (20230627)

Auto commit by gluten daily build, please check the build status and merge it if it's green.

Compatible with current gluten


Pass withCredentials: true with http requests so session is used.

I have found using Angular 1.4.3 I need to set withCredentials: true so that the session is used. Not sure how you build the min version for this.

Thanks for the PR @mikeotoole can you PR it to https://github.com/emotionLoop/visualCaptcha-frontend-core/blob/master/src/visualcaptcha.angular.js#L16 instead? That's what will build this version and I'll push it here after.


LibWasm: Reject indirect calls to external function references

This fixes a test in the WebAssembly spec test suite that was added in https://github.com/WebAssembly/spec/commit/924c1f816d30c760bd4b66a9cf8d8f83f7f9ac2c

These seems to be the correct fix, as far as I can tell.
https://webassembly.github.io/spec/core/valid/instructions.html#xref-syntax-instructions-syntax-instr-control-mathsf-call-indirect-x-y
says:

But we were checking if it was a function ref or an extern ref. (is_reference)

Gonna :marge: since this makes CI green


Design Need for OctoFlight Game-1

We need designs for the OctoFlight game that our game team will develop. I'm leaving the images below as an attachment for the needed designs. We want the design team to redesign the designs in the images to fit the Octopus Prime mascot.


Merge pull request #2 from haileybirge95/DataCleanup

Merge pull request #1 from haileybirge95/main

Yes!


Modifying the bottomLayoutGuide

We're trying to start the content of the messages table view a bit bumped up to show some stuff underneath.  Is there a way to edit the bottomLayoutGuide?  I noticed that it seems to be controlled by toolbarBottomLayoutGuide property.
Thanks in advance for the help!

hey @nikilster - you can try modifying the collection view insets