syntax error in installation script on future3

Describe your problem
trying to install future3 release on a fresh installation.
Getting an Syntax error in line 300:
pi@raspberrypi:~ $ ./install-jukebox.sh
./install-jukebox.sh: line 299: syntax error near unexpected token `then'
./install-jukebox.sh: line 299: `      if [[ $MEMORY -lt 1024000 ]] then'

What's your hardware set up?
RPi 3
If possible, try to attach logs from ... (paths from RPi)
this happens in an early stage - so no logs available

I recognized a lot of things that do not work - where can I discuss this stuff with you - just not to spam the issues section here, cause most of this are nit ready to use from your point of view, aren`t they?
Do you have a discord or something like this to clarify where an issue should be written? @pabera


[WIP] Add decision path dump feature

This patch follows this issue https://github.com/dmlc/xgboost/issues/9128. I have already implemented a prototype for dumping decision paths in tree models. XGBoosterPredictFromDMatrix calls this new version of predict and works as expected when called from Python.
A dumped decision path looks like the following. For now, dumping is directed onto stderr.
[{"row_index": 0, "decision_path": [
{ "nodeid": 0, "depth": 0, "split": "feat_slot_8", "split_condition": 0.18880336, "yes": 1, "no": 2, "missing": 2 , "gain": 3.37755585, "cover": 46.0216866},
{ "nodeid": 2, "depth": 1, "split": "feat_slot_1", "split_condition": 0.0665793717, "yes": 5, "no": 6, "missing": 6 , "gain": 1.01384354, "cover": 34.8793144},
{ "nodeid": 5, "depth": 2, "split": "feat_slot_5", "split_condition": 0.137061194, "yes": 11, "no": 12, "missing": 12 , "gain": 0.0831073523, "cover": 2.51199985}
]},
{"row_index": 1, "decision_path": [
{ "nodeid": 0, "depth": 0, "split": "feat_slot_8", "split_condition": 0.18880336, "yes": 1, "no": 2, "missing": 2 , "gain": 3.37755585, "cover": 46.0216866},
{ "nodeid": 2, "depth": 1, "split": "feat_slot_1", "split_condition": 0.0665793717, "yes": 5, "no": 6, "missing": 6 , "gain": 1.01384354, "cover": 34.8793144},
{ "nodeid": 6, "depth": 2, "split": "feat_slot_7", "split_condition": 0.579003334, "yes": 13, "no": 14, "missing": 14 , "gain": 1.50590134, "cover": 32.3673134},
{ "nodeid": 13, "depth": 3, "split": "feat_slot_8", "split_condition": 0.632688642, "yes": 15, "no": 16, "missing": 16 , "gain": 0.154432297, "cover": 25.213913},
{ "nodeid": 15, "depth": 4, "split": "feat_slot_7", "split_condition": 0.119174264, "yes": 19, "no": 20, "missing": 20 , "gain": 0.0240440369, "cover": 16.2166805}
]},
{"row_index": 2, "decision_path": [
{ "nodeid": 0, "depth": 0, "split": "feat_slot_8", "split_condition": 0.18880336, "yes": 1, "no": 2, "missing": 2 , "gain": 3.37755585, "cover": 46.0216866},
{ "nodeid": 2, "depth": 1, "split": "feat_slot_1", "split_condition": 0.0665793717, "yes": 5, "no": 6, "missing": 6 , "gain": 1.01384354, "cover": 34.8793144},
{ "nodeid": 6, "depth": 2, "split": "feat_slot_7", "split_condition": 0.579003334, "yes": 13, "no": 14, "missing": 14 , "gain": 1.50590134, "cover": 32.3673134},
{ "nodeid": 13, "depth": 3, "split": "feat_slot_8", "split_condition": 0.632688642, "yes": 15, "no": 16, "missing": 16 , "gain": 0.154432297, "cover": 25.213913},
{ "nodeid": 15, "depth": 4, "split": "feat_slot_7", "split_condition": 0.119174264, "yes": 19, "no": 20, "missing": 20 , "gain": 0.0240440369, "cover": 16.2166805}
]},
{"row_index": 3, "decision_path": [
{ "nodeid": 0, "depth": 0, "split": "feat_slot_8", "split_condition": 0.18880336, "yes": 1, "no": 2, "missing": 2 , "gain": 3.37755585, "cover": 46.0216866},
{ "nodeid": 2, "depth": 1, "split": "feat_slot_1", "split_condition": 0.0665793717, "yes": 5, "no": 6, "missing": 6 , "gain": 1.01384354, "cover": 34.8793144},
{ "nodeid": 6, "depth": 2, "split": "feat_slot_7", "split_condition": 0.579003334, "yes": 13, "no": 14, "missing": 14 , "gain": 1.50590134, "cover": 32.3673134},
{ "nodeid": 13, "depth": 3, "split": "feat_slot_8", "split_condition": 0.632688642, "yes": 15, "no": 16, "missing": 16 , "gain": 0.154432297, "cover": 25.213913},
{ "nodeid": 16, "depth": 4, "split": "feat_slot_6", "split_condition": 0.774850428, "yes": 21, "no": 22, "missing": 22 , "gain": 0.0456981659, "cover": 8.99723244}
]},...

Some future work direction:

Fix format issues & add doc comments.
Add path dumping in other formats (text, graphviz)
Add api support in other programming languages
Add support when using GPU
Add tests on the new feature

Hi, thank you for working on the new feature, I hope you enjoy hacking the code!
One question comes to mind, should we align the API to what's in sklearn?

Personally, I don't think it's necessary. Nonetheless, it can be implemented when all else is ready, if you care to insist upon it.

Calling predict cpu version from Python API is presently fully functional as I personally expected. For each row in the input dmatrix, the nodes on the decision path collected when predicting the row is dumped into a given file in either json or text format.
There are several issues that I am not so sure about. Please advise!

I have trouble adding support on other programming languages as I am not familiar with them. Perhaps someone can help out on this.
I do not believe predict's gpu version should have this feature, as the gpu version is meant to be efficient.

Personally, I don't think it's necessary. Nonetheless, it can be implemented when all else is ready, if you care to insist upon it.

I think the scikit-learn representation makes sense. It represents the decision path with a numeric data structure instead of strings. The former is more efficient and reusable, one can easily build a human-readable text representation based on the matrix output when needed. In addition, the result can be returned back to Python instead of being kept as C++-only structure.

I have trouble adding support on other programming languages as I am not familiar with them. Perhaps someone can help out on this.

It's not necessary to have support for all language bindings at the moment. We can iterate on that.

I do not believe predict's gpu version should have this feature, as the gpu version is meant to be efficient.

We can work on it later.

I could not find an existing way of testing APIs like DumpModel. Is a rigorous test required?

There are some tests in test_tree_model.cc.

Then I must refactor things to align it with sklearn, and add tests.

Let me know if there's anything I can help.

Please correct me if I'm mistaken. I presently share my thoughts on the format of the returned representation.
Sklearn's random forest allocates node IDs globally, whereas xgboost's tree node IDs are local to each tree. Thus, different trees could have the same ID for the nodes. Therefore, our decision_path cannot be in exactly the same way as sklearn's.
My proposal is then in two forms of the same idea. I personally prefer the second one.

For each tree, predict in xgboost returns an indicator matrix for each row of data. Hence, each matrix is in shape (n_samples, n_node), where n_node is the number of nodes in the tree. We would have n_trees of such matrices, each matrix having potentially different n_node value.
For each row of data, predict in xgboost returns an indicator matrix for each tree. Hence, each matrix is in shape (n_trees, n_node). We would have n_rows of such matrices, each matrix having potentially different n_node value.

No matter which one we choose, the indicator matrix represents a set of which nodes are present in a certain decision path. The order of the node in the path is then indicated by node IDs, as larger IDs show up in lower level of trees.

I have done as the first one indicated.

Apologies for the slow reply. I will mention the issue with @hcho3 and @RAMitchell today. In the meanwhile, I will look into your solution. Thank you for the nice work!

Is there any update here?

Sklearn's random forest allocates node IDs globally, whereas xgboost's tree node IDs are local to each tree. Thus, different trees could have the same ID for the nodes. Therefore, our decision_path cannot be in exactly the same way as sklearn's.

For each tree, predict in xgboost returns an indicator matrix for each row of data. Hence, each matrix is in shape (n_samples, n_node), where n_node is the number of nodes in the tree. We would have n_trees of such matrices.

I'm not sure why XGBoost should return multiple indicator matrices. In my opinion, it should be possible to return a single (sparse) matrix, along with an array n_nodes_ptr.

For sklearn

indicatorsparse matrix of shape (n_samples, n_nodes)

Let me explain my understanding of this API. This second dimension accepts node id as index. [n_nodes_ptr[i]:n_nodes_ptr[i+1]] points to the range of node indices of estimator i. This would require node indices to be global, i.e. different trees do not have the same node id for their nodes.
Does my understanding align with what sklearn has? If so, xgboost's trees do not shared node id globally, to my knowledge, and therefore cannot return the nodes ids as the trees have them. Nonetheless, we could have a mapping from (tree_id, node_id) to some global node id for each node.

From the scikit-learn doc:

n_nodes_ptr: ndarray of shape (n_estimators + 1,)
The columns from indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] gives the indicator value for the i-th estimator.

So n_nodes_ptr only tells you which columns in indicator matrix corresponds to the i-th  trees. It does not require the global IDs

The wording here is a bit strange to me. I thought indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] refers to a range rows, and The columns refers to the columns of these rows. Now that you mentioned it, it is clear to me that it refers to a range of cols.

The current implementation is too complex and cannot be admitted as it is. Here's my guidance for implementing decision_path.

Implement two C API functions:

int XGBoosterQueryNumNodes(BoosterHandle handle, const int** num_nodes): returns the number of nodes per tree
int XGBoosterGetDecisionPath(BoosterHandle handle, int tree_id, int node_id, const int** decision_path): returns the list of all ancestors of a given node.

Other than the two C API functions, implement decision_path in the Python layer only. We don't need to support this feature in other language bindings. The current PR tries to modify too many places in the C++ codebase, raising the risk of breaking existing functionalities.
Allocate a single 2D dense matrix filled with zero, with shape (n_rows, n_total_nodes), where n_total_nodes is the total number of all nodes in all trees.

n_total_nodes = #  ... call C API to compute this
indicator = np.zeros((n_rows, n_total_nodes), dtype=np.int8)`

Allocate a single 1D array of length n_trees + 1. We call this array n_nodes_ptr.
Fill n_nodes_ptr as follows:

n_trees = len(bst.get_dump(dump_format="json"))
n_nodes_ptr[0] = 0
for i in range(1, n_trees + 1):
    n_nodes_ptr[i] = n_nodes_ptr[i - 1] + get_n_nodes_for_tree(i)

Use XGBoosterQueryNumNodes to implement get_n_nodes_for_tree().
6. Obtain (local) leaf IDs by running Booster.predict with pred_leaf=True:
leaf_ids = bst.predict(X, pred_leaf=True)

For each leaf_id[row_id] (which is the leaf output for row row_id), get the list of ancestor nodes by calling XGBoosterGetDecisionPath. Then set the corresponding entries in the indicator matrix:

for row_id in range(X.shape[0]):
    for tree_id in range(n_trees):
        ancestor_list = # ...
        for ancestor in ancestor_list:
            indicator[row_id, n_nodes_ptr[tree_id] + ancestor] = 1

Note the use of n_nodes_ptr[tree_id] in the second index.
8. Now return indicator and n_nodes_ptr.
Let me know if you need any help. In particular, I will help you with creating "C API functions" and how to call them from the Python side.

Thanks for the suggestion. I should fork another branch to do this.

Feel free to reach out to me for help

Sorry about the delay. I was busy with other work. Now that I a bit more free, I would submit another PR in the recent days.

No rush! Take your time.

From: Anarion @.>
Sent: Saturday, July 8, 2023 1:37:12 AM
To: dmlc/xgboost @.>
Cc: Jiaming Yuan @.>; Comment @.>
Subject: Re: [dmlc/xgboost] [WIP] Add decision path dump feature (PR #9151)
Sorry about the delay. I was busy with other work. Now that I a bit more free, I would submit another PR in the recent days.
—
Reply to this email directly, view it on GitHubhttps://github.com/dmlc/xgboost/pull/9151#issuecomment-1625730690, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD7YPKMGO6BUAL6CDY6YLHLXPBCMRANCNFSM6AAAAAAX4IUBRE.
You are receiving this because you commented.Message ID: @.***>

Is this feature written by someone else yet? I am truly free now. Here to fulfill my long-awaited destiny...

I don't think any of the core contributor is activity working on it. But do let me refresh, I want to have a deeper look before giving any advice.

Here's another proposal for the API. Looking deeper into the decision_path function from sklearn, I think we might be able to improve upon it so that the returned matrix is easier for others to parse. My proposal is slightly different from the one found in sklearn.
Format
Let's assume we have two trees $t_0$, $t_1$, and two samples $x_0$, $x_1$ for demonstration. $x_0$ goes through 0, 1, 4 nodes in $t_0$, and 0, 2, 3, 5 nodes in $t_1$. $x_1$ goes through 0, 1, 3, 5 of $t_0$ and 0, 2 of $t_1$. With this, we have the following table:

$t_0$
$t_1$

$x_0$
0, 1, 4
0, 2, 3, 5

$x_1$
0, 1, 3, 5
0, 2

The question is now how do we represent this table in Python efficiently while maintaining some level of interpretability. My suggestion is we return a list of CSR matrics with a size equal to the number of trees: $|trees|$. Each CSR inside the list represents one column in the table.
decision_path = [
    CSR(values=[0, 1, 4, 0, 1, 3, 5], indptr=[0, 3, 7]),
    CSR(values=[0, 2, 3, 5, 0, 2], indptr=[0, 5, 6]),
]

However, complication arises when we have multi-class models or boosted random forests as it's quite difficult for users to find the correct tree. We need further grouping strategies.
Implementation
I agree with @hcho3 that we need to 2-phrase API for this feature. Using thread-local memory would be too expensive. However, I haven't decided what exactly the C function should return. For instance, we can return a single tree and let the Python function to loop over all trees, or we can return all the paths in one go.


safer moveMount and deleteMount

I couldn't resist :d

I think we're probably not going to do this, since the other revert is for an emergency fix that is about to be merged in SlamData anyway. :wink:

¯_(ツ)_/¯


Conflict with Android Emulator/Intel HAXM

When dlite is on, Intel HAXM failed, Android Studio gives log below:

HAXM is working and emulator runs in fast virt mode
emulator: Failed to sync vcpu reg
Internal error: initial hax sync failed
emulator: ERROR: Unfortunately, VirtualBox 4.3.30+ does not allow multiple hypervisors to co-exist.  In order for VirtualBox and the Android Emulator to co-exist, VirtualBox must change back to shared use.  Please ask VirtualBox to consider this change here: https://www.virtualbox.org/ticket/14294

after sudo killall dlite, the emulator works correctly.
Maybe need some investigation on how to use the hypervisors in "shared" mode?

this is an issue with xhyve and not something i can resolve at the dlite level, you'll want to open an issue on the xhyve repo


fix: cosmos staking deposit fees

Description

Notice

[ ] Have you followed the guidelines in our Contributing guide?
[ ] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

closes #
Risk

Testing

Engineering

Operations

Screenshots (if applicable)

Current dependencies on/for this PR:

develop

PR #3169

PR #3170

PR #3171

PR #3172   👈

This comment was auto-generated by Graphite.


Issue: TokenTextSplitter with local tokenizer ?

Issue you'd like to raise.
Hello,
I am using langchain offline on a local machine. I'd like to split document over tokens user TokenTextSplitter.
Unfortunately, I can't get to make the class to user a local tokenizer.
I tried to do
text_splitter = TokenTextSplitter(model_name='/my/path/to/my/tokenizer/', chunk_size = 50, chunk_overlap = 10
like I did for the HuggingFaceEmbedding (and it worked pretty well).
But I get the following error:
Could not automaticcaly map '/my/path/to/my/tokenizer/' to a tokenizer. Please use 'tiktoken.get_encoding' to explicitly get the tokenizer you expect
Couldn't find any info in the documentation about setup an offline / local tokenizer.
Suggestion:
No response

@dosu-bot
# Configure the TextSplitter
text_splitter = TextSplitter.from_huggingface_tokenizer(tokenizer, chunk_size = 50, chunk_overlap = 10)

This is what I would like to achieve unfortunately this throws an error : 'Can't instantiate abstract class TextSplitter with abstract method split_text'
I tried to create change TextSplitter to TokenTextSplitter but this throws errors as he is trying to do online get requests to get gpt-2.


Zod Schema: How to add custom error message (i18n)

So, this is more like a question/discussion rather than an actual issue:
Is there a way to customise the error message for the generated zod schemas? For example, i want to set a required string message to support i18n messages.
Maybe this is something that's possible with zod already but i couldn't find any infos about it.
Thanks in advance and also for the great work with this plugin!!

@knoefel Thank you for using this plugin and your comment!!
I'm sorry, I don't have an idea to support i18n message on zod. But I found this issue that is discussing about custom error handling way as you said.
Please ask that in the issue. Thank you.


Create AzureCSTextAnalytics.framework

iOS framework for Cognitive Services Text Analytics service.

Closing as we have no immediate plans to work on this library.


Intial documentation refactor

The documentation is reorganized to adhere to the new hierarchy design and also drops the documentation related to oamg/leapp-repository and related direct references.
Note that some pages/sections might feel a little out of place or miss some content (most notably building-blocks-and-architecture and libraries-and-api), that's expected and these places will be filled in in future patches.
A few typo corrections are also included.
Depends on #854

Comments addressed and I also rebased.


Add documentation about Wasm extension internals

Given that Wasm extension mechanism seems more complex than standard built-in extensions, it is useful provide the dedicated documentation about Wasm extension internals for end-users and Envoy core developers.
This would include, for example,

How Envoy is integrated with Proxy-Wasm C++ Host
How runtimes interact with Envoy
The Threading model
Envoy specific implementation details
How to provide Envoy specific ABI
Considerations and limitations (e.g. memory consumptions, etc.)

and could be based on https://github.com/proxy-wasm/spec/blob/master/docs/WebAssembly-in-Envoy.md
Related issues:

https://github.com/envoyproxy/envoy/issues/9462
https://github.com/envoyproxy/envoy/issues/4272
https://github.com/envoyproxy/envoy/pull/15360

cc. @phlax

In general WASM docs are at 0% right now. It's a known issue that we need a massive push on docs.


Support for tasks with no points

Small quality of life change that allows templates to exclude a points field for tasks. Suitable for general comments or bonus tasks that don't affect the overall grade. grade.yml files can now look like this:
- Assignment1General:
      feedback: |
          [*] You should spell check your assignments before handing them in.
          [-] You did not include a zip-file with code, please upload.

Instead of this:
- Assignment1General:
      grade:
      points: 0
      feedback: |
          [*] You should spell check your assignments before handing them in.
          [-] You did not include a zip-file with code, please upload.

This means that people grading don't need to input points to tasks with 0 points.

Thank you for the PR.
It looks good.
(The only tiny nit is that it would have nice to get the "delete-trailing-whitespace" changes in a separate commit. Just to make it easier to review the changes.)

Oh. Oops, didn't realise I did that.

It is not a big problem. And I'm certainly happy that the trailing whitespace got deleted.


Minor code enhancements

Description
Hi @grassdog. First of all, thank you very much for this project!
I started using your project, but there were some things I didn't like, so I've accommodated it to my personal preference in a fork. You can see it if you are curious: https://gitlab.com/arturoherrero/klip.
While working on that, I've noticed a few opportunities to improve the current code:

Since Ruby 2.0, the default encoding is UTF-8. We can remove the magic comments: encoding: utf-8 or coding: utf-8.
We can define Entry as a struct instead of a class.
We can remove some dead code.
We can remove some extra newlines here and there.

All the specs (unit and feature) are passing locally running rake, but I suspect it will fail as travis-ci.org is ceased. Let's see.
As said, thank you for your project!

Thanks for the PR. I haven't been updating this project much recently.
I just had a look. The tests pass locally for me too. I'll merge the changes in.
I'll need to replace Travis with Github actions at some point.


Fix dying 2 times

Currently the health is not getting set back to 20, updateHealth should be created (see login.js) and used to do that in respawn.js.
@mhsjlw is working on it

done


file_sd_config: Support custom scrape_timeout

how to config the targets.json  to custom scrape_timeout for  every  taget json?
and  why  the label_name in targets.json is different from prometheus.yml,eg. methric_name in prometheus.yml but _ metric_name _ in targets.json? why? why ? why?

Thanks for the report, this is a duplicate of #4561 so I'm closing it. See also https://www.robustperception.io/keep-it-simple-scrape_interval-id


[FE] Update calculator logic

To calculate voting power for investor we should use corresponding multipliers (from investment pool):

Until soft cap is reached: getSoftCapMultiplier() -> returns uint256
Between soft cap and hard cap: getHardCapMultiplier() -> returns uint256

Note: If the user drags the state slider before the soft cap, but the money slider exceeds the soft cap, the total voting token amount should be retrieved with the correct multipliers.
Example:
soft cap = 10
hard cap = 100
total invested = 2
user's investment = 28

Because users can only invest 8 until soft cap. We use soft cap multiplier with amount of 8.
soft cap multiplier * (soft cap - total invested) = soft cap multiplier * 8

Then use the hard cap multiplier with the remaining amount.
hard cap multiplier * (user's investment - (soft cap - total invested)) = hard cap multiplier * 20

To calculate project token rewards for investor we should:
From investment pool:

get investment weight (this value is actually equal to the expected voting tokens because both are using the same function). That's why this can be retrieved from previous action above
get maximum investment weight: getMaximumWeightDivisor() -> returns uint256

From distribution pool:

get locked tokens: getLockedTokens() -> returns uint256

To get the final expected allocation use this formula:
locked tokens * investment weight / maximum weight


re-pull-request allow tokens and hotwords be loaded from buffered string driectly

changed the code by the previous suggestions,
formatted the code with clang-format to avoid style-check failure

Thanks for your suggestions, I have learned a lot from such a great open source project

please leave a message when you think it is ready for merge.

it is ready to merge, modifications on paraformers and ctc models are coming in the next commits

Thank you for your contribution!


What are difference between similar looking blocks?

There are two blocks parthenon/meshblock and parthenon/mesh. I am confused between the usage after reading https://parthenon-hpc-lab.github.io/parthenon/develop/src/amr.html. Also same goes with <refinement> block, we also have parthenon/mesh/refinement

We use the same logic and distinctions as Athena++, although names might have changed.
The <parthenon/mesh> parameter block dictates the entire simulation domain, like in Athena++. There is a parthenon/mesh/refinement parameter within it to change between none,adaptive,static refinement.
The <parthenon/meshblock> parameter block dictates the size of individual grids within the refinement octree. This parameter block is also in Athena++
<parthenon/meshblock>
nx1        = 32        # Number of zones in X1-direction
nx2        = 32        # Number of zones in X2-direction
nx3        = 32        # Number of zones in X3-direction

So with this example, the mesh will be decomposed into 32x32x32 meshblocks. The meshblock size is a tradeoff between granularity of AMR and performance. Smaller meshblocks lend more flexibility in the mesh but with meshblocks smaller than 64x64x64 you lose performance due to programming/numerical/hardware reasons.
Static mesh refinement uses the same machinery as the adaptive mesh refinement but is specified in <parthenon/refinement#> parameter blocks, one for each SMR region just like in Athena++.
Apparently we also have a <parthenon/static_refinement#> block that I've been using and does the same thing as <parthenon/refinement#>. The parameter block in the documentation (<parthenon/refinement#>) is probably the safer choice for SMR.
In either case, my mesh setup looks like this: (hopefully no errors!)
<parthenon/mesh>
refinement  = static
nghost = 2

nx1        = 512       # Number of zones in X1-direction
x1min      =-1.6     # minimum value of X1
x1max      = 1.6     # maximum value of X1
ix1_bc     = outflow   # inner-X1 boundary flag
ox1_bc     = outflow   # outer-X1 boundary flag

nx2        = 512       # Number of zones in X2-direction
x2min      =-1.6     # minimum value of X2
x2max      = 1.6     # maximum value of X2
ix2_bc     = outflow   # inner-X2 boundary flag
ox2_bc     = outflow   # outer-X2 boundary flag

nx3       = 512        # Number of zones in X3-direction
x3min      =-1.6     # minimum value of X3
x3max      = 1.6     # maximum value of X3
ix3_bc     = outflow   # inner-X3 boundary flag
ox3_bc     = outflow   # outer-X3 boundary flag

<parthenon/meshblock>
nx1        = 32        # Number of zones in X1-direction
nx2        = 32        # Number of zones in X2-direction
nx3        = 32        # Number of zones in X3-direction

<parthenon/static_refinement3>
x1min = -0.4
x1max =  0.4
x2min = -0.4
x2max =  0.4
x3min = -0.4
x3max =  0.4
level = 3

<parthenon/static_refinement5>
x1min = -0.1
x1max =  0.1
x2min = -0.1
x2max =  0.1
x3min = -0.1
x3max =  0.1
level = 5

<parthenon/static_refinement8>
x1min = -0.0125
x1max =  0.0125
x2min = -0.0125
x2max =  0.0125
x3min = -0.0125
x3max =  0.0125
level = 8

What about refinement block used here https://github.com/parthenon-hpc-lab/athenapk/blob/main/src/hydro/hydro.cpp#L548

@forrestglines Ping 😅

What about refinement block used here https://github.com/parthenon-hpc-lab/athenapk/blob/main/src/hydro/hydro.cpp#L548

I haven't seen this piece before nor used this parameter block <refinement>. It needs documentation.
Just from reading the code, it looks like specifying AMR criteria in the parameter file instead of needing it to go into the pgen file like in Athena++, saves some duplicated code. I think you can set refinement/type to pressure_gradient, xyvelocity_gradient, max_density, or user and the AMR will respond differently to each. Each refinement type has their own parameters to go with it too. Looks like inputs/advection_3d.in has an example using the max_density refinement type and associated parameters. Ideally AthenaPK should be able to support multiple of these criteria at once.
In my opinion, this parameter block would be better named amr_criteria or refinement_criteria.

Woops, apparently <parthenon/refinement> is also not for static refinement like I suggested above but for AMR  criteria


Olivine appeal: Mark component

http://olivine-appeal.glitch.me/#StoryMark
This isn't yet used in the editor, but its heavily featured on the landing page:

I can imagine this being part of the design in New Stuff:

:rocket: PR was released in v0.19.0 :rocket:


ObservableList not updated in template

This issue was originally filed by<EMAIL_ADDRESS>
What steps will reproduce the problem?

create a custom element with an ObservableList field (mylist)
put the list in the element template ({{mylist}})
add a new element to the list

What is the expected output? What do you see instead?
I should see the list updated (["new element"]), instead the list is not updated ("[]").
What version of the product are you using?
Dart 1.7.2, polymer-expression 0.13.0
Please provide any additional information below.

This issue has been moved to dart-lang/observe#72.


Range explorer for app pools?

A feature for app pools, similar to the Range Explorer.
For the app-pool(s) in my current workspace, how much of each range is being used.
Thank you for this great feature (app pools)!
Just added a bunch of repo's, and are looking forward to seeing the results.

No worries, I have plans to support this.


make enable extension when happens -2147467259

Fix issue on https://www.msn.com/en-us/news/photos/central-valley-town-struggles-in-californias-drought/ss-BBaY5sc, you click left arrow and then Gyazo Extension is disabled

LGTM👍


sequence tab, download button is not working

Download button in the selection action bar is not working but it works on features & genomes tab.

duplicate #945

sequence tab and contig download should not have "protein fasta" option. please remove it.

Technically, this should be a new ticket. but I am changing title and will leave this one open.


util/find-doc-nits: check podchecker() return value

From the Pod::Checker manual:

RETURN VALUE
podchecker returns the number of POD syntax errors found or
-1 if there were no POD commands at all found in the file.

Have you tried that this actually works? I recall I tried to do this and it didn't.  Maybe it was a version thing.

Also the doc you quote says "-1 means no errors" and you're testing for zero.

Also the doc you quote says "-1 means no errors" and you're testing for zero.

No it doesn't.  Read again.

Have you tried that this actually works? I recall I tried to do this and it didn't. Maybe it was a version thing.

You're entirely correct that all Pod::Checker version don't detect all possible errors.  I do not know why this is the case, but it is.  However, there is at least one Travis worker that does detect an error, and you can see for yourself that it makes find-doc-nits fail if you look here: https://travis-ci.com/github/openssl/openssl/jobs/440258132#L621-L634

That Travis job error is exactly the one that didn't fail before because we didn't check the podchecker() return value.  It printed the errors alright, but that was undetected.

you're right, i misread.  sorry for the distraction.

Which configuration (or parameters) are needed for issues like the one discussed in #13412 to get reported?
I cannot find out even from looking at https://travis-ci.com/github/openssl/openssl/jobs/440258132#L621-L634.
At least on my system, util/find-doc-nits -n -l -e does not report anything,
neither calling directly podchecker doc/man1/openssl.pod.

Yeah, @DDvO, it does seem that Pod::Checker has changed a bit over versions, and possibly back and forth.  If you look at the Travis result I linked to in https://github.com/openssl/openssl/pull/13416#issuecomment-727630528, you'll see that we have at least one Travis worker that now comes back with a failure on the things I corrected in #13412.  But whether that specific error is caught or not should be a factor for approving (or not) this PR, as this PR simply makes sure we do detect any error the version of Pod::Checker we have does detect.
Any checks that Pod::Checker is lacking is not our problem, that should be an issue raised with that project, if not with perl5 itself.

Note that #13412 is now merged.  I fully expect the next Travis run to succeed.  Will rebase this PR now, for exactly that purpose.

Yeah, @DDvO, it does seem that Pod::Checker has changed a bit over versions, and possibly back and forth.

I agree that issue is independent of this PR.
Still would be good if anyone can give a hint which version or configuration is needed for detecting things like the one solved in #13412, and this gets reflected in our tooling, such that mistakes like that get caught early (locally, before submitting a PR and some of the CI tests failing). That's what my question aimed at.

It's possible that it's a MacOS local extension that hasn't been shared back.  I dunno, only  that I can't find any trace of such a check being added or removed from a quick read of the Pod::Checker changes

@DDvO, procedural thing: when you approve, also add the label "approval: done".  That allows our bot to start measuring the 24h grace period and do the right thing after that.

@DDvO, procedural thing: when you approve, also add the label "approval: done".
That allows our bot to start measuring the 24h grace period and do the right thing after that.

Thanks for the reminder.
Hope i won't forget again in the future (also to remove the label approval: review pending).

Hope i won't forget again in the future

I'll be nagging :wink:

24 hours has passed since 'approval: done' was set, but as this PR has been updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

Merged
bf57cab74b6d64f9d5bb3de8a6c77601ce208b74 util/find-doc-nits: check podchecker() return value


Distinguish between resources created by the SKR-reconciliation and by CLI-reconciliation

Description
Currently it's possible to install resources in  an SKR cluster via the CLI and the resources installed via CLI are looking equal to resources which were created via KEB.
It has to be possible to distinguish between resources created via KEB and via a CLI call (e.g. by adding a label how the resource was created).
AC:

Resources include a clear indicator (e.g. label) which indicates who installed the resource (via KEB or CLI)
Resources installed via CLI will be clear distinguishable from resources created via KEB

Reasons
Simplify trouble shooting by marking resources which were installed manually by a user via CLI.
Attachments

Moved to https://github.com/kyma-project/cli/issues/1288


Should our API be immutable?

One of the lessons prescribed in my book is that whenever infrastructure is mutated the current representation of the infrastructure should be destroyed and a new representation of the infrastructure should be created.
TLDR; I tell people we should have an immutable representation of infrastructure (API)
Wondering what folks think about implementing this into kubicorn as it would require a grander refactor of the reconciler work

+1 for this, if it helps us add more test cases to our logic. Reconciler right now does need to be refactored, otherwise it will just keep growing.

Completely agree

CC @roberthbailey @pipejakob as this might impact their API work

@xmudrii and @prateekgogia can we open an issue with reconciler refactors we want?

the current representation of the infrastructure should be destroyed and a new representation of the infrastructure should be created.

How does that jive with supporting bare metal installations? Or does it only apply to IaaS environments where infrastructure resources are "infinitely" available?
On GKE we do something along these lines today with node upgrades -- when you change the k8s version on your nodes it requires creating an entirely new set of nodes. This makes it really simple to reason about the state of the nodes (they are always created from whole cloth at the specified version) but it leads to disruptive upgrades, when in many cases you could accomplish patch upgrades with a non-disruptive, in-place mechanism.
Another lesson that we've learned is that if you do something like destroy and create an L7 load balancer (even if it's exactly the same definition) it can cause traffic to be dropped in the mean time making users of the system pretty unhappy. There's a difference between a pooled resource (like a VM) and a singleton resource (like an ingress object) so I don't think it's necessarily safe to apply the same logic to all cloud resources.


Native Android App

Any plans on porting the existing code to an app? Should be possible since the tool is mostly just executing shell commands.

https://github.com/android-notes/auto-scroll-capture

https://github.com/peter1492/LongScreenshot have a look if its useful


Code in chapter 23 did not match with what is described in the read me

Can you expand on this?  Did not match the readme or what is in the book?

It said that,
Afib_case_study_database_query.sql : used to extract data from the MIMIC II database.
Afib_case_study_extraction_code.m : used to extract variables for analysis.
were provided in the repo, but non of them were found in the github.  Only,
data_extraction.m
database_query.sql

Matlab code seems to be relevant. But the .sql code provided is for renal and had nothing to do with this chapter's content. Thanks.

I have asked the author of Ch. 23 to have a look at this thread.


Connection points for groups don't appear to be working

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

I found Issue 2606, but it was marked closed due to inactivity; and posting to it didn't seem to re-activate it, so I figure I'll create a 'new' issue. If I need to close this one and instead post to the original/old issue please let me know.

To Reproduce
Like the OP, I am able to group two items, and with the group selected, I can edit connection points. However, they don't appear to work. After setting them, all I can see when hovering over the group to draw connections are the original shape's connections points.
Expected behavior
I expect to see new connections points that I set for the group. (No expectation for whether points for the original shapes that are part of the group are shown or not).
draw.io version

I am using 24.2.5

Desktop (please complete the following information):

OS: Windows 11 Pro
Browser: Chrome
Browser Version: 124.0.6367.210 (Official Build) (64-bit)

Note: I am using the desktop version/executable of draw.io

I tested the problem in incognito/private mode with all browser extensions switched off, write "yes" below:

Not applicable? As I'm using the desktop version/executable of draw.io?

Additional context
None at this time.

See https://github.com/jgraph/drawio/issues/2606


rollup-watch writing logs to stderr instead of stdout

Hello!
TL;DR: Could rollup-watch use stdout when logging basic info on watch/bundles and only stderr when an actual build error occurs?
I'm running "rollup -w -c" with a child_process.spawn and listening to its stdout and stderr streams.
the stdout stream is never used and only stderr is used. This is confusing when detecting errors.
For example on successful bundling a two lines are logged
bundling...
bundled in 37ms. Watching for changes...

But these messages are all piped through stderr (and not stdout as one would expect).
When an actual error occurs the stderr is used again (as expected) -- but in addition the streams are also closed. So the only way to detect an error has occurred is to listen for the spawns 'end' event and then re-execute "rollup -w -c" manually once a change has occurred (since rollup -w -c currently does not itself recover from errors (but that's not the point here)).
For example, stylus works as expected in that it uses stdout to log basic info when it is watching and bundling, and when an error occurs it uses stderr.
stylus -w -r -i main.styl -o bundle.css

I looked at the source and couldn't find what I was looking for -- could this be an issue with rollup itself as opposed to rollup-watch?
Thanks a bunch!

To work around this issue I'm using this temporary fix in my watcher:
    var buffer = ''
    child.stderr.on('data', function (chunk) {
      console.log('child.stderr: ' + chunk.toString('utf8'))
      buffer += chunk.toString('utf8')

      // check if actual error or no
      // (rollup currently only uses stderr for everything, even non-errors)
      if (buffer.toLowerCase().indexOf('error') >= 0) {
        // was error
       child.__trigger(buffer) // live reload client with build error message
      } else {
        // wasn't error
        buffer = ''
        child.__trigger() // live reloads client with updates
      }
    })

    // this is what stdout looks like
    child.stdout.on('data', function (chunk) {
      console.log('child.stdout: ' + chunk.toString('utf8'))
      child.__trigger() // live reloads client with updates
    })

Is a bit hacky but works fine.

sample:
var cp = require('child_process')
var cmd = 'rollup -w -i index.js -o bundle.js'

cp.spawn('touch', ['index.js']) // create test source file..

cmd = cmd.split(' ')
var spawn = cp.spawn(cmd[0], cmd.slice(1))

// listen on stdout (these are never used by rollup-watch)
spawn.stdout.on('data', function (chunk) {
  var s = chunk.toString('utf8')
  console.log('spawn stdout: ' + s)
})
spawn.stdout.on('end', function () {
  console.log('spawn stdout: ' + '---END---')
})

// listen on stderr
spawn.stderr.on('data', function (chunk) {
  var s = chunk.toString('utf8')
  console.log('spawn stderr: ' + s)
})
spawn.stderr.on('end', function () {
  console.log('spawn stderr: ' + '---END---')
})

spawn.on('close', function (code) {
  console.log('SPAWN CLOSED')
})

The reason that Rollup logs messages to stderr is so that it can write the bundles straight to stdout; which is useful for piping. Though I suppose that piping isn't as useful for incremental builds.

Yeah, this should probably be closed. Writing diagnostics, logging and errors to stderr is absolutely the right thing to do.

I don't know. Stylus is able to handle both cases. At the very least logging messages should perhaps be prefixed with "log: " so that they could more easily be ignored as not being actual errors.

Specifically when the watch flag -w is used I don't think the piping mechanism makes much sense? I created a small wrapper module called wrollup (https://www.npmjs.com/package/wrollup) with similar logging to that of the stylus-lang watcher -- quite simple and seems to work well for me (requires a rollup.config.js)


Relative compiled path goes too many directories back

When the plugin generates the path to the compiled JS file, it inserts one too many ../ in the path (see this page for a live example).
For the path /blog/rock-paper-scissors/ (i.e. the file /blog/rock-paper-scissors/index.html it generates the script tag
<script src="../../../assets/js/blog-278a73.js" type="module"></script>

but it should be
<script src="../../assets/js/blog-278a73.js" type="module"></script>

Browsers seem to ignore the extra one and load the file anyway. This still happens if I use a relative path and pass in true as a second argument to the shortcode.
I believe this issue is caused by passing in the output file to path.relative(), not its directory.
console.log(path.relative('dist/blog/rock-paper-scissors/index.html', 'dist/assets/js/blog-278a73.js'));
// Returns ../../../assets/js/blog-278a73.js

console.log(path.relative('dist/blog/rock-paper-scissors', 'dist/assets/js/blog-278a73.js'));
// Returns ../../assets/js/blog-571c47.js

Modifying the call to path.relative() to use path.dirname(eleventyInstance.page.outputPath) instead of the raw outputPath fixes the issue. I'm happy to submit a PR with this change if this doesn't cause any other problems.
Plugin version: 1.2.0
Node version: 18.8.0
Eleventy version: 1.0.1

Hi,
thanks for opening the issue, feel free to open a PR and I will take a look at it.


Pyrouge

Hi Shashi,
While running the code, after 1 epoch is done, when it is just about to write the final validation summaries, I get the following error -

File "document_summarizer_training_testing.py", line 212, in train
rouge_score = rouge_generator.get_full_rouge(FLAGS.train_dir+"/model.ckpt.epoch-"+str(epoch)+".validation-summary-topranked", "validation")
File "/datadrive/prateek/Summarization/Refresh/reward_utils.py", line 199, in get_full_rouge
rouge_score = _rouge(system_dir, gold_summary_directory)
File "/datadrive/prateek/Summarization/Refresh/reward_utils.py", line 38, in _rouge
output = r.convert_and_evaluate(rouge_args="-e /address/to/rouge/data/directory/rouge/data -a -c 95 -m -n 4 -w 1.2")
File "/datadrive/miniconda3/envs/summly/lib/python2.7/site-packages/pyrouge/Rouge155.py", line 361, in convert_and_evaluate
rouge_output = self.evaluate(system_id, rouge_args)
File "/datadrive/miniconda3/envs/summly/lib/python2.7/site-packages/pyrouge/Rouge155.py", line 336, in evaluate
rouge_output = check_output(command).decode("UTF-8")
File "/datadrive/miniconda3/envs/summly/lib/python2.7/subprocess.py", line 223, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '[u'/datadrive/prateek/Summarization/github-pyrouge/pyrouge/tools/ROUGE-1.5.5/ROUGE-1.5.5.pl', '-e', '/address/to/rouge/data/directory/rouge/data', '-a', '-c', '95', '-m', '-n', '4', '-w', '1.2', u'-m', u'/tmp/tmpFdvDy4/rouge_conf.xml']' returned non-zero exit status 2

To me it seems like a pyrouge related error. I have installed Pyrouge using the instructions mentioned here -
https://stackoverflow.com/questions/47045436/how-to-install-the-python-package-pyrouge-on-microsoft-windows/47045437#47045437
Is the error due to Pyrouge, if so how would you recommend I install Pyrouge?

i think you forgot to set '-e', '/address/to/rouge/data/directory/rouge/data'.

Thanks a lot! That worked.


[Editor] OpenFile explorer fails to show files in workspace folder

Description:
When an already started pack is copied to another machine and when we try to open a Siddhi file within the workspace directory, the OpenFile explorer fails to show the files in the workspace directory.

Suggested Labels:

Suggested Assignees:

Affected Product Version:
WSO2 SP v4.2.0
First started on Linux 16.04.
Copied pack to Windows 10.
OS, DB, other environment details and versions:
Chrome Browser
Steps to reproduce:
Related Issues:

This issue is related to Windows OS. In the fresh pack itself, the OpenFile explorer fails to show the files in the workspace directory.

Same issue is reproduced in ImportSample explorer as well.

I just tried in a fresh sp 4.2.0 in windows and it works fine.

This issue can be reproduced doing the following steps.

Start editor on Linux machine.
Copy the same pack to a Windows machine.
Start the editor.

@erangatl Can you please follow up this?

@erangatl If so, can we close this issue?

@erangatl If so, can we close this issue?

Yes, we can close this.


Add scaling

Make it possible to scale containers,
it is expected that used knows that:

network port must be dynamically defined, i.e. : 80, 79 and so on. Not 8080:80 for instance!
Container_name is not allowed, use hostname instead, or just the service name, parser will handle rest.

Solved
https://github.com/grebtsew/dcDeployControl/commit/aa8c0d87214aab64b16572af723f80380a8fe0f7


SG_NEXT-RECORD really difficult to use in complex templates

My template contains a text box with %VAR_website% as its contents. The text box is a PDF annotation with http://%VAR_website% as its external website reference. The page contains two instances of the same design - the second moved down 90mm from the first.
After running the generator against the template, most of the substitution work but the %VAR_website% substitutions both show the second's information as both text and link target. I have to fix it by manually copying the correct information into both the link text and PDF annotation target.
Also, when I export the file as a PDF, there is no text displayed. If I click on where the text should be, the link works. I have verified that the text isn't just invisible - it's not there. I can't select it even when I use the Select All Text on Current Page option in Okular. I doubt this is a Generator fault however - since the first link is one I had to manually paste the data for.
BTW: I'm running Scribus 1.5.5 on a Debian/Testing system. The version of Generator is whatever I just downloaded from githyb.

OK, so the link text issue is with Scribus but the substitution problem isn't confined to links. I converted my template (painfully) to use a work-around for the link text problem (it involves using two text boxes - one for the display text and a second one overlaying it for the PDF link). When I did this I got a usable output file that I could export as a PDF and have the links both display and work.
Unfortunately the problem with the second record's information replacing the first's got worse. Not only did it happen on all the links but also on non-linked information.
The workaround is to stop use the more than one record on a page feature. It's not ideal but until you can get this fixed, it seems necessary.

I've found another problem. It happens fairly frequently. I have a text field that is 4mm wide that sometimes gets changed to 3.509mm wide. This causes it to be too small for the text it contains (a single letter [variable] followed by a colon [constant text]) so I have to manually adjust it.
I verified that the template fields (there are 12 of them that are this size) are all set to 4mm. It seems to be able to happen to any one of them. It may be a more general issue that I only notice in this case because it's the only time when the loss of half a millimeter is clearly visible.

I had another pile of information that I needed to import with alternating styles for each record - to make a "striped table" with one line per record. I made it as a large text box then copied blocks of two lines to fill the page. Each line looks like
%VAR_clubname%	%VAR_visitor%	%VAR_date%  %SG_NEXT-RECORD%
This almost works. What's going wrong is that %VAR_date% is being replaced by the date from the next record, not the current one. The last record picks up whatever garbage is in the buffer (I guess). The total substitution goes on for 3 pages and it's the same on each page. Things are good except the date is from the subsequent record.

Hi Gary.
Sorry to read the use of ScribusGenerator is not straightforward.
Indeed the user of %SG_NEXT-RECORD% is a bit tricky, as it's effects depend on the position of the other elements (text boxes, images,...) with respect to that word in the source (SLA XML) file.
This is particularly bothersome as the sequence of elements has normally no meaning in XML. And indeed grouping and ungrouping elements, for instance, has an impact on the XML sequence of elements, but nothing that can be seen in the Scribus view.
So I guess your %VAR_date% is actually located after the %SG_NEXT-RECORD% token in the SLA file, even though they are likely 'siblings' in XML terms. As a workaround I'd suggest you edit (a copy of) your SLA with some text editor and move the  page element with%SG_NEXT-RECORD% as the last child of its parent element... if that is not too scary for you.
I suspect deleting the token in Scribus, and adding it again after everything else is ready, should have the same effect.
Some walkthrough that helps coping with the not I'll intuitive behaviour of my script in this regards:
https://github.com/berteh/ScribusGenerator/wiki#cards-deck-walkthrough
If you find a better solution kindly let me know, as this is indeed not the best way to have this feature. Priority was on speed at the time of writing this plugin... and not using the Scribus API gave me a lot of speed and flexibility... but at the cost of this not satisfactory multiple records mechanism.
Hope this helps.

About the changing box size please open need issue, for ease of tracking.
I had a similar issue only once: the document settings and page settings where different, add I had started with a US letter format template and then changed page format to EU A4.  Some boxes where then squeezed when the script had to create new pages, as it did not know which of letter or A4 was indeed the right size.
Making sure all document and pages size match solved the issue if I remember correctly.

The document is created from the template, which is just a single page. I never changed the size but some text boxes have their size and/or position slightly altered during the generator run. Because they are small fractions of a millimeter, you wouldn't normally see it unless you look at the properties. The same box would have slightly different sizes on some pages, which I noticed when "w:" showed as "w" with the text overflow marker appearing.

would you mind attaching your template and a dummy csv (can be the same line repeating all over) ?

I had to rename it as .txt
clubs-template.txt
here's some test data - also renamed
clubs-test.csv.txt
I modified the template to use 5mm wide boxes instead of 4mm to accommodate the wider letters, but I still found some boxes had their widths changed.
Also the main frame around the club's information often shifts up or down, as do other elements. I usually ignore the displacements because they are small.

I just run your example, thanks. Aside from the fact the important variables are missing from the csv (%VAR_officer_0_teltype_0%, %VAR_officer_0_teltype_2%, %VAR_officer_0_teltype_1%), i generated a single merged SLA where all small boxes where exactly 5mm high and wide... and empty aside from :
I did a second test by populating these variables:

officer_0_teltype_0
officer_0_teltype_1
officer_0_teltype_2

a
w
l

b
x
m

c
y
n

d
z
p

and it generated all pages OK without a glitch, and without changing the small boxes size... so I guess the problem lies not in the script.
I did see the small box getting smaller thought, to 4,68 x 5,00mm, on the one occasion where I resized it manually by mistake when I copied-pasted its content, it was just too small not to touch the sides. I don't know if Scribus provides the ability to lock the size of boxes, but if it does that might be a solution.
What my script does though is modify the position of boxes when you use the merge option, and in this case I noticed a slight vertical shift in some cases, generally increasing linearly. Had to do with margins and display units not interperted well, still not fixed, but it shouldn"t impact you for a few pages.

feel free to reopen if needed.
and of course, on the one occasion I tripped and reduced the box size (was for officer 0 teltype 0 in my case), that single box was reduced for all clubs, but showing only on those occasions where the type letter was a wide one (m or w for instance, no problem with i or l.)

You may need to run it for more records. As I said, it didn't happen often but I'm pretty sure I didn't nudge the box multiple times. The file I use had around 90 records and I noticed it a half-dozen times.
I've been doing a new template for a two-line striped table and even putting the %SG_NEXT-RECORD% at the start of the second and subsequent template sections didn't work. I'm getting the wrong information in some fields. This one is similar to the clubs template (in the officers section) except that there are something like 20 records to a page so reverting to one to a page (like I did for the clubs) is not all that workable.

Ok. I'll try with more records.
If it's okay with you I'd like to use your help too find a lasting solution to this 'next-record' problem.
Are you comfortable enough with computers to edit the SLA manually in a text editor? and do you know a bit about XML (difference between attributes and elements?)
The generator script, for now, reads the source XML lines in sequence, and loads the next record date as soon as it sees the sg-next-record marker, and only then does the substitutions for the current element.
One way I had to fix really complex templates was to add some sign to the 'first' element of my new line (for instance a dummy Scribus attribute called 'iAmNext'), and making sure all the subsequent graphic elements with variables would be included in a 'child' page element. Grouping them does not do the trick as it is a mere XML attribute to Scribus, and has no impact on the XML order, which seems only related to the order in which you create the elements.
I would then create a new Scribus page object with the SG-NEXT-RECORD tag, save, and edit the sourceä code in a text editor to make sure this page object comes before any other variable, in the repeating object (by looking at the dummy 'iAmNext' attribute).
Back in Scribus, I would the duplicate and lay out the element to be repeated in the right order (very important). In case of alternating rows, for instance, I'm not even sure you could duplicate one odd and one even row simultaneously if you wanted to be sure of their sequence in the source code. Pitty, but it did work.
Once we are sure this works, maybe we can find a better way? My problem lies really in the way Scribus stores the XML page objects: their position in the source code should not be used, at all... But I found no other way to detect the order in which to repeat & substitute the elements in a multiple records scenario that was user friendly enough.
To get a grasp just imagine you want to turn your alternating LINES design into an alternating ROWS design. The current implementation would very well allow you to do that.. but with the same difficulties you are experiencing... That is, you would need to create the next record market, then completely design one row, then duplicate them in alternance... bothersome but works and is flexible.
Any better idea?
B

Sounds good. Yes, I frequently use KATE to edit .sla files (mainly to remove "Copy of" styles).
I actually use XML files but then have them converted to .csv files. It's fast and accurate - sometimes it finds problems with the XML that the XML validator doesn't. I rarely use attributes but I do know the difference.
Here's another template that I've tried as after my previous attempt for this template went down in flames. It has fewer problems but it's got one big one. The second record on a page vanishes except for the email address, which shows up in the PDF annotation for the second record, which otherwise contains information for the third record. All subsequent records on the page seem to be OK.
chairs-template.sla.txt

difficult for me to say where your template got some problems... but it sure works fine:
chairs-template.B.csv.txt
chairs-template.B.sla.txt
chairs-template.Bdouble.sla.txt
I'll try to do a screencast on the topic, but basically my way of doing it is:

create one item fully laidout
add %SG_NEXT-RECORD% before the first element of this item, make it smaller if it's touching a text element so Scribus makes it a different (ITEXT) element entirely, that will be cleaned entirely by the script
group all elements of item (ctrl+g)
item > mutliple duplicate to duplicate as much as needed (even multiple rows)
ungroup first element of page (ctrl+shif+g) to remove it's SG_NEXT-RECORD marker, as leaving it would skip the first record (of each page).

Run the generator script with appropriate data in "merge" mode, and enjoy the nice work result:

Well, I guess that's my problem - not checking it in an XML editor.  ;)
My method is a little different:

create the first item
copy & paste it then move it to the second position.
touch up the second item if needed.
add %SG_NEXT-RECORD% before the first element of the second item.
if I need more items (e.g. striped table) copy & paste  the first two items then move them to the third & fourth positions.
add %SG_NEXT-RECORD% before the first element of the third item.
copy, paste & move items 3 & 4 as needed to fill the page.

Apart from not checking the XML, I also don't group and ungroup items. I just select the entire item or items. Rather than multi-dup, I copy & paste. Does grouping have an impact on how Scribus stores the items?

I just group them because it makes the layout of repeating elements a breeze with the "align and distribute" toolbox. Really nice things in there to either glue things with no spacing, or spacing them evenly, align, spread... you name it.
The only visible impact I had with grouping speaks actually against it: some group did not export to PDF, whereas ungrouping them make them visible alright. Discussion and example at http://forums.scribus.net/index.php/topic,3740.msg17653.html#msg17653

using SG_NEXT_RECORD is still not straightfoward, but unlikely to improve much in the future so I'll close this issue for now.
the best available doc is compiled at https://github.com/berteh/ScribusGenerator/wiki/How-to-use-%25SG_NEXT-RECORD%25  kindly contribute by improving it there if you'd like... and don't hesitate to get back in touch if you have a better idea how to handle all this mess !


Show a warning before a 1.3.0 Safe upgrade

Description
Tx hashes between 1.1.1 and 1.3.0 are incompatible, so pending transactions will disappear after an upgrade.
Requirements
Add a warning in the upgrade dialog:

Warning: this upgrade will invalidate all pending transactions, and you won't be able to access them anymore. Please make sure to finalize any remaining transactions before upgrading.

Copy suggestion:
Warning: this upgrade will invalidate all unexecuted transactions. This means you won't be able to access or execute them after the upgrade. Please make sure to execute any remaining transactions before upgrading.


Implement R5-7 for selection bias in FCI algorithm

Is your feature request related to a problem? Please describe.
Currently, the FCI algorithm implementation does not implement R5-8 in the FCI algorithm, which accounts for learning graphs with selection bias.
It would be a straightforward issue for someone to add these into the existing implementation.
Describe the solution you'd like
Implement R5-8 of the FCI algorithm. See publication.

Implement _apply_rule5, _apply_rule6 and _apply_rule7
Update logic inside _apply_rules_1to10
add unit tests to tests/unit_tests/constraint/test_fcialg.py
[Bonus] Implement an example going through the different caveats and concepts of the FCI algorithm

Probably the most involved would be implementing the unit tests. The current graph API is a work in progress.

I'm happy to take a stab at this!

One question I do have - for R5 we require a function to check if there exists an uncovered circle path between two nodes. I found a similar function uncovered_pd_path at pywhy_graphs/algorithms/pag.py - would the best way be for me to modify that function and create a corresponding PR in pywhy_graphs?

One question I do have - for R5 we require a function to check if there exists an uncovered circle path between two nodes. I found a similar function uncovered_pd_path at pywhy_graphs/algorithms/pag.py - would the best way be for me to modify that function and create a corresponding PR in pywhy_graphs?

The uncovered_pd_path is used for the R8-10 section where we need an uncovered potentially directed path. If the internals work the same for doing it for a circle path, then yeah that sounds good!
I could see a few solutions:

implement a separate function altogether
refactor uncovered_pd_path to find either uncovered pd paths, or uncovered circle paths

I'll migrate an issue over there. I'm happy to review a PR once you get started @jaron-lee !

https://github.com/py-why/pywhy-graphs/pull/42 has been completed now


[BUG] unable to load MNIST data through fetch_openml / unable to use this data when loaded through tf

This issue has been reported, but I don't see a solution that's current.
Running 03_classification.ipynb, mnist = fetch_openml('mnist_784', version=1, as_frame=False) produces OpenMLError: Dataset mnist_784 with version 1 not found.
I have downloaded mnist.zip, inside of which there are four .gz files. What's the appropriate way to use them with the chapter code?
I've also tried mnist = tf.keras.datasets.mnist.load_data(path="mnist.npz") but this produces an tuple; running mnist.keys() yields:
AttributeError: 'tuple' object has no attribute 'keys'
Please help. I would like to work through Chapter 3.

Hi @zadrozny ,
Thanks for your feedback. Unfortunately, I cannot reproduce this issue. I ran the code mnist = fetch_openml('mnist_784', version=1, as_frame=False) on my MacBook, running Scikit-Learn 0.24.1, and it worked fine. I also created this Colab Notebook which runs fine.
So I'm really not sure what's going on. Perhaps there was a temporary problem with OpenML.org? Could you please try again? Or perhaps you need to upgrade Scikit-Learn? Which version are you running?

Indeed, I think the problem was OpenML.org. It's working now. Thank you. Enjoying the book.


How do I add to other worlds?

I'm trying to allow the use of Expulsion Pylon for my world which is in a separate folder from the main one, going to the World directory, in serverconfig/pylons-server.toml I come across the following:
[expulsion_pylon]
#Which dimensions the Expulsion Pylon is allowed to operate in.
expulsionAllowedDimensions = ["minecraft:overworld"]
I'm sorry for the question but I really can't, I would like to know what I should put to allow my other world, the name is Void.

Run the command /forge tps to get a list of dimension IDs. It should give you a name in the same format, something like "mod_name:void". Then, add it to the list like this: ["minecraft: overworld", "mod_name:void"].