Update: Portal naming

Hi @anavinahar, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (annahar). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@anavinahar : Thanks for your contribution to the Azure documentation! The author, @jimdial, has been notified to review your proposed change.


tries installing Python and running a sample script

Testing after_success seems to work.  See travis log.  Final PR to remove the test line.  @fmichonneau  I think we should be good to merge now.


Wildcard '*' should catch any catchable errors in workflow.

Describe the bug
Using the wildcard * should catch any catchable error that occurs in a workflow state. I believe the correct regex for this is .*, and that we have previously handled this case as such. It's not clear when/why this changed.

This was resolved some time during the major rework, or possibly earlier.


Content Type publishing wait time?

On Publishing or Republishing a Content Type, what is the typical wait time until changes propagate to sites?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b52f3c87-422d-70ad-8b29-673b3913bfdd
Version Independent ID: 35b68646-fd17-b7a7-524d-9385b1187382
Content: Publish a content type - SharePoint in Microsoft 365
Content Source: SharePoint/SharePointOnline/publish-content-type.md
Service: sharepoint-online
GitHub Login: @MikePlumleyMSFT
Microsoft Alias: mikeplum

Thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.


Replaced some assert_fails for issue #165

Thank you! A few CI checks are failing, could you take a look?
A few of them are because the @assert_fails style only checks the first error, but some of these tests actually trigger multiple errors. It's best to fix them by just fixing the other errors, so the tests are more focused.

Ok, gotcha. How do I fix the errors?

There are a couple of different issues, as you can see in the checks pane below. I didn't look at all of them, but as an example there is TestCalls::test_undefined_kwargs. It fails because in addition to the expected undefined_name error, there is another error:
In call to <test input 2af60c8838a287ee2657e3784926176672862b683ec844536e706ecd58c55ba5>.fn: **kwargs provided but not used (code: incompatible_call)
In <test input 2af60c8838a287ee2657e3784926176672862b683ec844536e706ecd58c55ba5> at line 2
   1: def fn():
   2:     return fn(**x)  # E: undefined_name
                 ^

That's because we're passing kwargs to fn(), but fn() doesn't actually take any kwargs. This is best fixed by changing the definition of fn in the test to def fn(**kwargs):, so the error goes away and the test case tests only what it's supposed to test.
The black (formatting) and flake8 (linter) checks also failed. To fix black, you just need to install it locally and run it on the changed files. The flake8 failures are about unused imports.
I just wrote https://github.com/quora/pyanalyze/pull/484/files with some guidance on how to run these tests locally. Let me know if that's helpful.

Pushed again but still some fails, I'll fix them tomorrow

Some of the errors were inconsistent between python versions, so I reverted those. The rest should work. Thank you @JelleZijlstra for adding the contributing doc!

Great, thanks!
I'll review the PR later today.

Thanks for your contribution!


granular archive sync mode

Describe the feature
The problem we're facing is that Ethereum and other EVM chains have too much data, making it difficult and expensive to host archive nodes. This discourages people from running their own nodes, so they rely on centralized hosting services instead. Additionally, most applications only need certain contract data and don't care about irrelevant tokens or scams contributing to the data bloat.
To solve this, we could apply filters to the historical data and create a granular archive sync mode. This mode would only keep the data for the contracts that users actually need, reducing the storage requirements from 8TB to a more manageable size. The storage can scale based on the project's needs and success, allowing people to run their own nodes on smaller, cheaper machines. In the future, we might even be able to run nodes within web browsers, although that's a distant possibility.
By implementing this filtering and granular archive sync mode, we can optimize storage efficiency and cost while still providing access to the necessary contract data for applications. This gives projects more control over their nodes and infrastructure, promoting a decentralized ecosystem for Ethereum and EVM chains.
dApps typically interact with a specific subset of contracts to support their user interfaces and handle various calls. As a result, there is often no need for these dApps to rely on archive nodes that store the entire blockchain state. Instead, by utilizing a granular archive sync mode or filtering mechanism, dApps can optimize resource usage and streamline operations by syncing and accessing only the essential contracts to their functionality, avoiding needing a node with unnecessary data. This can lead to more people running their own nodes inhouse.
In the context of reth, I propose introducing a configurable granular archive sync mode. This would allow users to customize their node setup according to their specific needs. I welcome any other ideas or feedback on this proposal.
[reth.granular_archive]
contracts = ["0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"]
eth_transactions = true
from_block = 192

This configuration lets you choose which contracts you want to include in the node's state. If you're interested in tracking Ethereum transactions and monitoring balances and related activities, you can turn on the eth transactions option. Additionally, you can specify the block number from which you want to start caring about the state of the contracts.
It is very normal for protocols such as AAVE to allow new contracts based on a DAO vote. This would be the case for many other protocols as well (aka it changes over time). When this happens the node would need to dynamically resync that contracts state. A new custom reth RPC call called reth_grandularArchiveAddContract accepting a contract address as input would allow you to be able to trigger the process of resyncing that contract on your granular archive node.
This configuration empowers you to tailor the node's behaviour to your needs and interests. Whether you want to focus on certain contracts, monitor transactions, or set a specific starting point, you can customize the granular archive sync mode according to your preferences.
Of course, this is just an idea, but I wanted to dump it here because reth is in active development, and they are super open to new thoughts and ideas. I do not expect this to take priority over the main functionality, but I wanted to start the discussion and get other people's views.

@joshstevens19 thanks for your thoughts on the topic, it's very helpful. We have an issue where full node discussion is happening right now, I think your ideas are related to that: https://github.com/paradigmxyz/reth/issues/2629.
What you've proposed looks like some sort of a pruning. We plan to start with a pretty simple configuration of choosing what you want to prune (history, receipts except deposits, tx lookup index, etc.) and the pruning distance (measured in minimum block height or last N blocks).
In the first iteration of pruning, this configuration will have to be defined on the initial sync, as we won't have an ability to backfill the missing data. Later, we plan to add an ability to change the pruning configuration without a resync, so the node would backfill the missing parts as on the initial sync.
Then, we can expand it to something like a "granular archive node", as you've described: full node + parts of the archive node specified by the configuration. Doing it straight away as a set of RPC methods like reth_grandularArchiveAddContract seems to be an overkill for me though, but agree it's a good DX to have, as you wouldn't even need to restart the node and edit any configs.

awesome super glad this is a topic you guys are working on let me know if i can help in anyway thanks a lot @shekhirin

Closing this in favor of #2629


Import Error

Hi,
Just a quick one: not sure where this error is coming from:
ImportError: cannot import name 'CustomLogger' from 'bolna.helpers.logger_config' (/usr/local/lib/python3.10/site-packages/bolna/helpers/logger_config.py)
I had renamed the config_logger function in logger_config.py to CustomLogger but the issue persists.
I would appreciate your help!

@MustaphaU do you have the latest master? There was a small typo which we fixed recently.

@MustaphaU do you have the latest master? There was a small typo which we fixed recently.

@prateeksachan  I am not sure. I will try using the latest to see if the issue resolves.

@MustaphaU sure, do let me know. In case it doesn't please feel free to mark a time https://calendly.com/bolna/30min. We can go over it on a call. Thanks.

It worked but now there is a new issue. I am unable to create an agent. How do I get the bearer token?

@MustaphaU , we're still in beta for the hosting solution for which you require the API keys for bearer auth. It would require couple of weeks for releasing it in GA. Once, that is done, you can have the api keys.
For now, this repo is open-sourced which you can use to create & build agents as per your use case without any api keys. For anything speific, feel free to discuss over a call. thanks.


Fixes for publish issues

Closes #68 and #69

I'm going to go ahead and merge, since this isn't very controversial stuff 😄


New version: ForneyLab v0.11.4

Registering package: ForneyLab
Repository: https://github.com/biaslab/ForneyLab.jl
Created by: @albertpod
Version: v0.11.4
Commit: a39650b1458af4b06d098a8208d53e3cfda16d04
Reviewed by: @albertpod
Reference: https://github.com/biaslab/ForneyLab.jl/commit/a39650b1458af4b06d098a8208d53e3cfda16d04#commitcomment-53107353

See #40350


Chroma.from_documents adds docs to same collection creating duplicates

System Info
langchain==0.0.306
chromadb==0.4.13
Python 3.11.5
Who can help?
@hwchase17 @atroyn
Information

[ ] The official example notebooks/scripts
[X] My own modified scripts

Related Components

[ ] LLMs/Chat Models
[ ] Embedding Models
[ ] Prompts / Prompt Templates / Prompt Selectors
[ ] Output Parsers
[ ] Document Loaders
[X] Vector Stores / Retrievers
[ ] Memory
[ ] Agents / Agent Executors
[ ] Tools / Toolkits
[ ] Chains
[ ] Callbacks/Tracing
[ ] Async

Reproduction
from langchain.vectorstores import Chroma
from langchain.docstore.document import Document
from langchain.embeddings import GPT4AllEmbeddings

docs = [
    Document(page_content="This is a demo document"),
    Document(page_content="This is another demo document"),

]

other_docs = [
    Document(page_content="Unrelated document"),
    Document(page_content="Another unrelated document"),
]

# Create two (independent) vector stores
vectorstore = Chroma.from_documents(documents=docs, embedding=GPT4AllEmbeddings())
other_vectorstore = Chroma.from_documents(documents=other_docs, embedding=GPT4AllEmbeddings())

# Expect two stores to be independent
assert len(vectorstore.similarity_search("document", k=999)) == len(docs)  # OK
assert len(other_vectorstore.similarity_search("document", k=999)) == len(other_docs)  # FAILS

# Documents from the first vector store are actually retrieved in the `other_vectorstore`
print(other_vectorstore.similarity_search("document"))

# Actually the two vector stores contain the union of `docs` and `other_docs`
assert len(vectorstore.get()["documents"]) == 2  # FAILS
assert len(other_vectorstore.get()["documents"]) == 2  # FAILS

Expected behavior
When I initialize two separate Chroma in-memory vectorstores with Chroma.from_documents using two distinct groups of documents, the vector store that was initialized last will contain the union of the two groups of documents.
In summary, running this code:
vectorstore = Chroma.from_documents(documents=documents, …)
other_vectorstore = Chroma.from_documents(documents=other_documents, …)

the other_vectorstore will contain both documents and other_documents.

It seems that the two vectorstores are sharing the same chroma client & collection.
This could be a side effect of commit https://github.com/langchain-ai/langchain/commit/822cdb161b6631d8255e341f3321d8f0b9e28e8a which made the chromadb.Client shared among all instances of the Chroma class.
One can avoid the bug by explicitly passing two different collection_name values when initializing the vector store, but I thought this would have been the default behaviour (or at least I expected a warning telling that the new vectorstore was reusing an existing collection).
Moreover, it is not clear to me why the first vector store will return the documents it was initialized with if I use vectorstore.similarity_search(…), but shows the union of all documents if I use vectorstore.get().
If you confirm what is the intended behaviour I am available to to work a PR to fix this.

Hi @mattbit thanks for raising this.
As you noticed here, creating two in-memory Chroma clients results in undefined behavior. We'll add functionality which warns the user if this is happening on our end. Happy for you to take a crack at it:

Moreover, it is not clear to me why the first vector store will return the documents it was initialized with if I use vectorstore.similarity_search(…), but shows the union of all documents if I use vectorstore.get().

This has to do with what's going on on the backend. The two clients connect to the same SQLite instance in memory, but have instantiated separate HNSW indexes - the first index only contains the documents added to the first store, the second contains both (because it loads them from the in-memory SQLite instance when it constructs its index, before adding the new ones).

Hi @atroyn, thanks for checking this.

As you noticed here, creating two in-memory Chroma clients results in undefined behavior. We'll add functionality which warns the user if this is happening on our end. Happy for you to take a crack at it

Sure, I will have a look. Do you have recommendations about where to start?

This has to do with what's going on on the backend. The two clients connect to the same SQLite instance in memory, but have instantiated separate HNSW indexes - the first index only contains the documents added to the first store, the second contains both (because it loads them from the in-memory SQLite instance when it constructs its index, before adding the new ones).

That makes sense, thanks.

Closing this since it will be addressed in chroma: https://github.com/chroma-core/chroma/issues/1234

Sure, I will have a look. Do you have recommendations about where to start?

I've created the issue here https://github.com/chroma-core/chroma/issues/1234 with some more deatils.


Compilation error in file lib/axon_onnx/shared.ex

I am getting the following error when attempting to install axon_onnx in livebook.
== Compilation error in file lib/axon_onnx/shared.ex ==
** (CompileError) lib/axon_onnx/shared.ex:58: undefined function transform/2 (there is no such import)
(nx 0.7.1) lib/nx/defn/compiler.ex:832: Nx.Defn.Compiler.compile_error!/3
(nx 0.7.1) lib/nx/defn/compiler.ex:429: Nx.Defn.Compiler.normalize/2
(elixir 1.16.2) lib/enum.ex:1826: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
(elixir 1.16.2) lib/enum.ex:1826: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
(nx 0.7.1) lib/nx/defn/compiler.ex:422: Nx.Defn.Compiler.normalize/2
(elixir 1.16.2) lib/enum.ex:1826: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
(elixir 1.16.2) lib/enum.ex:1826: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
(nx 0.7.1) lib/nx/defn/compiler.ex:422: Nx.Defn.Compiler.normalize/2
The command that I am running in the setup.
Mix.install([
{:axon_onnx, "~> 0.4"},
{:axon, "~> 0.5"},
{:nx, "~> 0.5"},
{:exla, "~> 0.5"},
{:stb_image, "~> 0.6"},
{:kino, "~> 0.8"},
])
I am running elixir 1.16.2 with OTP/26 with Livebook 0.12.1 on Ubuntu 20.04 in Windows Subsystem for Linux.

You can use main for now.

That fixed it thanks Jose!

Getting the same error

2 months without any update? Today someone asked about this issue on #Elixir Chat too.

2 months without any update? Today someone asked about this issue on #Elixir Chat too.

I switched to using Ortex instead. Even on the latest main branch from the repo I was having other issues.


nice_agent_get_selected_pair in gintro/nice is declared incorrectly

Thank you for supporting libnice!
libnice has nice-agent-get-selected-pair function and local and remote parameters are NiceCandidate ** type.
https://libnice.freedesktop.org/libnice/NiceAgent.html#nice-agent-get-selected-pair
But local and remote parameters are declared as ptr Candidate00 in gintro/nice and cannot get pointer to NiceCandidate.
This is gintro/nice code that wrap nice-agent-get-selected-pair function.
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: ptr Candidate00; remote: ptr Candidate00): gboolean {.
    importc, libprag.}

proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: Candidate; remote: Candidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), cast[ptr Candidate00](local.impl), cast[ptr Candidate00](remote.impl)))

nice_agent_get_selected_pair function returns the address of existing NiceCandidate object by writing it to local and remote arguments.
So it may not be freed by caller.
You can see how to use nice_agent_get_selected_pair in cb_component_state_changed function in this libnice C example code.
libnice doesn't provide functions to query a value of NiceCandidate's fields.
So I need to access fields of NiceCandidate directly to get an address or other data in NiceCandidate.
In cb_component_state_changed and print_local_data functions in simple-example.c in libnice, it reads NiceCandidate's fields directly.
https://gitlab.freedesktop.org/libnice/libnice/-/blob/master/examples/simple-example.c
But Candidate00 type in gintro/nice wraps NiceCandidate type without fields.
I think this can be fixed by adding following type in gintro/nice:
# winlean and posix module exports SockAddr, Sockaddr_in and Sockaddr_in6 types.
when defined(windows):
  import winlean
else:
  import posix

type
  # See https://gitlab.freedesktop.org/libnice/libnice/-/blob/master/agent/address.h
  NiceAddress* {.union.} = object
    `addr`*: SockAddr
    ip4*: Sockaddr_in
    ip6*: Sockaddr_in6

  # See https://gitlab.freedesktop.org/libnice/libnice/-/blob/master/agent/candidate.h
  NiceCandidate* {.pure.} = object
    `type`*: CandidateType
    transport*: CandidateTransport
    `addr`*: NiceAddress
    baseAddr*: NiceAddress
    priority*: uint32
    streamId*: cuint
    componentId*: cuint
    foundation*: array[0 .. (CANDIDATE_MAX_FOUNDATION.int - 1), char]
    username*: cstring
    password*: cstring

and declare nice_agent_get_selected_pair like this:
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: ptr ptr NiceCandidate; remote: ptr ptr NiceCandidate): gboolean {.
    importc, libprag.}

and getSelectedPair like this:
proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: var ptr NiceCandidate; remote: var ptr NiceCandidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), addr local, addr remote))

or
proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: var Candidate; remote: var Candidate): bool =
  assert local.impl == nil
  assert remote.impl == nil

  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), cast[ptr ptr Candidate00](addr local.impl), cast[ptr ptr Candidate00](addr remote.impl)))

  local.ignoreFinalizer = true
  remote.ignoreFinalizer = true

Thanks for reporting. I don't know much about libnice myself but I will try to investigate that issue soon.

OK, you may try with nimble install gintro@#head
For this issue it seems that the bug was only that NiceCandidate was not marked as "light" object which needs no proxy object. We have a list of that entities in gen.nim generator script and I added one line for this fix. So that type has fields now, and we generally use plain stack variables of that type and do not allocate it with a function on the heap. I hope it will work for you now. (We can not avoid these need for manually fixes, I had a discussion with Mr. Droege from Rust team about these issues.)
And we have support for optional out var parameters now. That was some more work, and it is not much tested yet. A lot of code has changed. There is at least one known bug -- a few procs have optional seq parameter, that would crash if no value is provided. We will fix later.

Thank you for your fix!
But it still doesn't work.
This is gintro generated code that define Candidate type with Address00 type:
type
  Candidate* {.pure, byRef.} = object
    `type`*: CandidateType
    transport*: CandidateTransport
    `addr`*: Address00
    baseAddr*: Address00
    priority*: uint32
    streamId*: uint32
    componentId*: uint32
    foundation*: array[33, int8]
    username*: cstring
    password*: cstring

And this is gintro generated code that define Address00 type and Address type:
type
  Address00* {.pure.} = object
  Address* = ref object
    impl*: ptr Address00
    ignoreFinalizer*: bool

nice module exports procs that takes Address but it doesn't export procs that takes Address00.
And I cannot use procs that get port or address string from Address to addr or baseAddr fields of Candidate type.
I think NiceAddress is also need to be marked as "light" object like NiceCandidate.
This is gintro generated code that declares nice_agent_get_selected_pair proc and getSelectedPair proc.
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: Candidate; remote: Candidate): gboolean {.
    importc, libprag.}

proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: Candidate; remote: Candidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), local, remote))

But nice_agent_get_selected_pair function has local and remote paramaters as NiceCandidate ** (pointer to pointer to NiceCandidate) type.
https://libnice.freedesktop.org/libnice/NiceAgent.html#nice-agent-get-selected-pair
nice_agent_get_selected_pair function returns the address of existing NiceCandidate object by writing it to local and remote arguments.
So when I use nice_agent_get_selected_pair function to get NiceCandidate, I have to declare 2 pointers to NiceCandidate and pass addresses of these 2 pointers to nice_agent_get_selected_pair.
Thus, nice_agent_get_selected_pair proc and getSelectedPair proc should be declared like this:
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: var ptr Candidate; remote: var ptr Candidate): gboolean {.
    importc, libprag.}

proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: var ptr Candidate; remote: var ptr Candidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), local, remote))

And getSelectedPair is used like this:
var local, remote: ptr Candidate
let ret = agent.getSelectedPair(streamId, componentId, local.addr, remote.addr)
let port = local.`addr`.port
# local and remote must not be freed.

OK, I have finished the GtkLabel example in the GTK4 book finally (http://ssalewski.de/gtkprogramming.html#_label) so I can work again on your issue.
You are right of course, the nice.Address data type has to be a "light" type with fields and without a proxy object. That type is reported by gobject-introspection as struct with zero fields. But it has a field of type union. So we have to create that type manually. All that is not that easy and straight forward, so I will convert your linked C code example from above to Nim and test it myself. I will try to do it in the next few days.

I will convert your linked C code example

That is really hard :-)
I think I will finally get it working, but I wonder if it really makes much sense to write so much low level code tightly coupled to a low level C lib in Nim.

nice.Address type can be defined like this in Nim:
import nativesockets

type
  # See https://gitlab.freedesktop.org/libnice/libnice/-/blob/master/agent/address.h
  Address* {.union.} = object
    `addr`*: SockAddr
    ip4*: Sockaddr_in
    ip6*: Sockaddr_in6

SockAddr, Sockaddr_in and Sockaddr_in6 are defined in winlean module on windows and in posix module in other os.
And nativesockets module export these types from winlean or posix module.
nice.Candidate object type contains nice.Address type.
I think Nim compiler need to know sizeof nice.Address so that memory layout of nice.Candidate object type in Nim and NiceCandidate type in libnice C code are match and we can access each fields of nice.Candidate correctly.
If libnice provided setters and getters to access each fields of NiceCandidate like void nice_candidate_set_addr(NiceCandidate *candidate, const NiceAddress *addr) or NiceAddress* nice_candidate_get_addr(const NiceCandidate *candidate), we would not need to define each fields of nice.Address or nice.Candidate.

Thanks.
Yesterday I tried to get GSList support working, as that C example used GSList. Have still to test. nice.Candidate in now again a heavy object with proxy, but for Candidate00 we generate fields, so we can access fields like cand.impl.priority = uint32(parseInt(tokens[1])). Ugly, but we can create access functions manually later.
Then there is glib.ioAddWatch() which adds a callback, I think I have to create a macro for this.
I hope I will get is working this weekend.

OK, you can try again :-)
The example program
https://github.com/StefanSalewski/gintro/blob/master/examples/gtk3/simple_example.nim
looks fine now, compiles and seems to have similar output as C version. But again I can not test on windows or test real function of that program as I have currently only one Linux computer available.
I added some new macros in files gimpglib.nim and gimplnice.nim. Macros is always hard, seems to work, but maybe you can improve them yourself. And you may test with and without the last optional parameter and for different types of the optional parameter. I have not done all that tests. For NiceAddress I used your suggestion, and I had some discussion with Mr. Droege, see https://discourse.gnome.org/t/size-of-nicecandidate-of-libnice/4913

Thank you for your hard work!
I tried to run simple_example.nim but parsing remote candidate generate error.
I will try to fix it and send PR.
You can test with only one computer.
Open 2 consoles and run example program on each console.
Then, copy output text to text editor, make it one line and copy it to another console.
If you use Vim, you can remove new lines without inserting space with gJ after selecting text with visual mode.
If you run 2 libnice programs at same time on one PC, they choose different port (looks like they choose port randomly) and they can communicate each other after they got remote candidates.

Thanks for instructions to test it. I have just launched the C version, that one works. Will try to fix the Nim version today.

Found a few typos.
Main bug is use of
grep -A20 "seq2GSList\*" ~/.nimble/pkgs/gintro-#head/gintro/gobject.nim
proc seq2GSList*[T](s: seq[T]): ptr glib.SList =
  var l: ptr glib.SList
  var i = s.len
  while i > 0:
    dec(i)
    when T is gobject.Object: # or T is pango.Item:
      l = g_slist_prepend(l, s[i].impl)
    elif T is cstring:
      l = g_slist_prepend(l, s[i]) # cstring
    else:
      discard # make it compile for these cases, of course will not work
  return l

I think it was never tested before, and obviously do not work for NiceCandidate as NiceCandidate in not a GObject.
Will try to fix it today. If I remember correctly I used the discard statement because it was unclear which objects have the impl field, so I restrict to strings and GObjects that time.

I have fixed the typos, but when I try to make seq2GSList() working compile fails with message:
Error: template instantiation too nested
That is very ugly, I have no idea which really causes that error.
For now I will send you the file with fixed typos:
## https://gitlab.freedesktop.org/libnice/libnice/-/blob/master/examples/simple-example.c
## nim c --gc:arc simple_example.nim
##  Example using libnice to negotiate a UDP connection between two clients,
##  possibly on the same network or behind different NATs and/or stateful
##  firewalls.
##
##  Run two clients, one controlling and one controlled:
##    simple-example 0 $(host -4 -t A stun.stunprotocol.org | awk '{ print $4 }')
##    simple-example 1 $(host -4 -t A stun.stunprotocol.org | awk '{ print $4 }')
##

# https://forum.nim-lang.org/t/3752
when (compiles do: import gintro/gtk):
  import gintro/[gtk, glib, gobject, gio, nice]
else:
  import gintro/[dummygtk, glib, gobject, gio, nice] # For windows with glib but no gtk

from strutils import `%`, split
from os import paramCount, paramStr
from strutils import parseInt

from posix import INET6_ADDRSTRLEN

when defined(windows):
  import winlean
else:
  discard # import posix

var
  gloop: glib.MainLoop
  ioStdin: glib.IOChannel
  streamId: int
  candidateTypeName = ["host", "srflx", "prflx", "relay"]
  stateName = ["disconnected", "gathering", "connecting", "connected", "ready", "failed"]

proc gMsg(s: string) =
  stdout.write(s)
  flushFile(stdout)

proc gDebug(s: string) =
  stdout.write(s)
  flushFile(stdout)

proc gError(s: string) =
  stderr.write(s)
  flushFile(stderr)

proc toStringVal(s: string): Value =
  let gtype = gStringGetType()
  discard init(result, gtype)
  setString(result, s)

proc toIntVal(i: int): Value =
  let gtype = typeFromName("gint")
  discard init(result, gtype)
  setInt(result, i)

proc printLocalData(agent: nice.Agent; streamId: int; componentId: int): int =
  var
    localUfrag: string
    localPassword: string
    ipaddr = newString(INET6_ADDRSTRLEN).cstring # not really nice as that cstring is used as out parameter by toString()
    cands: seq[Candidate]
  result = QuitFailure
  block gotoEnd:
    if not getLocalCredentials(agent, streamId, localUfrag, localPassword):
      break gotoEnd
    cands = getLocalCandidates(agent, streamId, componentId)
    if cands.len == 0:
      break gotoEnd
    stdout.write(localUfrag, ' ', localPassword)
    for el in cands:
      toString(el.impl.`addr`, ipaddr)
      ##  (foundation),(prio),(addr),(port),(type)
      stdout.write(' ', cast[cstring](addr el.impl.foundation), ',', el.impl.priority, ',', ipaddr, ',', getPort(el.impl.`addr`),
          ',', candidateTypeName[el.impl.`type`.ord])
    echo ""
  # end label
  result = QuitSuccess
  return result

proc parseCandidate(scand: string; streamId: int): nice.Candidate =
  var
    cand: nice.Candidate = nil
    ntype: nice.CandidateType = CandidateType.host # that initialization is never used!
    tokens = scand.split(',', 5)
  block gotoEnd:
    for i in 0 .. 4:
      if tokens[i] == "":
        break gotoEnd
    #[ should work too
    for i, el in candidateTypeName:
      var h = false
      if tokens[4] == el:
        ntype = i
        h = true
      if not h:
        break gotoEnd
      ]#
    var i: int
    while i < candidateTypeName.len:
      if tokens[4] == candidateTypeName[i]:
        ntype = CandidateType(i)
        break # missing in initial release!
      inc(i)
    if i == candidateTypeName.len:
      break gotoEnd
    cand = newCandidate(ntype)
    #cand.impl.componentId = 1
    cand.setComponentID(1) # we have a few manually created getters and setters already
    cand.impl.streamId = uint32(streamId)
    cand.impl.transport = nice.CandidateTransport.udp
    cand.setFoundation(tokens[0])
    cand.impl.priority = uint32(parseInt(tokens[1]))
    if not setFromString(cand.impl.`addr`, tokens[2]):
      gMsg("failed to parse addr: " & tokens[2])
      cand = nil
      break gotoEnd
    setPort(cand.impl.`addr`, parseInt(tokens[3]))
  # end label
  return cand

proc parseRemoteData(agent: Agent; streamId: int; componentId: int; line: string): cint =
  var
    remoteCandidates: seq[Candidate]
    lineArgv: seq[string]
    ufrag: string
    passwd: string
  result = QuitFailure
  lineArgv = split(line, {' ', '\t', '\n'})
  block gotoEnd:
    for i, x in lineArgv:
      if x.len == 0:
        continue
      ## first two args are remote ufrag and password
      if ufrag == "":
        ufrag = x
      elif passwd == "":
        passwd = x
      else:
        ##  Remaining args are serialized canidates (at least one is required)
        var c: nice.Candidate = parseCandidate(x, streamId)
        if c == nil:
          gMsg("failed to parse candidate: " & x)
          break gotoEnd
        remoteCandidates.add(c) # caution prepend in C code!
    if ufrag == "" or passwd == "" or remoteCandidates.len == 0:
      gMsg("line must have at least ufrag, password, and one candidate")
      break gotoEnd
    if not setRemoteCredentials(agent, streamId, ufrag, passwd):
      gMsg("failed to set remote credentials")
      break gotoEnd
    ## Note: this will trigger the start of negotiation.
    if setRemoteCandidates(agent, streamId, componentId, remoteCandidates) < 1:
      gMsg("failed to set remote candidates")
      break gotoEnd
  # end label
  result = QuitSuccess
  return result

proc stdinRemoteInfoCb(source: glib.IOChannel; cond: glib.IOCondition; agent: nice.Agent): bool =
  var
    line: string
    rval: cint
    ret: bool = true
  if readLine(source, line) == IOStatus.normal:
    ##  Parse remote candidate list and set it on the agent
    rval = parseRemoteData(agent, streamId, 1, line)
    if rval == QuitSuccess:
      ##  Return FALSE so we stop listening to stdin since we parsed the
      ##  candidates correctly
      ret = false
      gDebug("waiting for state READY or FAILED signal...")
    else:
      write(stderr, "ERROR: failed to parse remote data\n")
      echo("Enter remote data (single line, no wrapping):")
      stdout.write("> ")
      flushFile(stdout)
  return ret

proc cbCandidateGatheringDone(agent: nice.Agent; streamId: int) =
  gDebug("SIGNAL candidate gathering done\n")
  ##  Candidate gathering is done. Send our local candidates on stdout
  echo("Copy this line to remote client:")
  stdout.write("\n  ")
  discard printLocalData(agent, streamId, 1)
  echo("")
  ##  Listen on stdin for the remote candidate list
  echo("Enter remote data (single line, no wrapping):")
  addWatch(ioStdin, glib.PRIORITY_DEFAULT, IOCondition.in , stdinRemoteInfoCb, agent)
  stdout.write("> ")
  flushFile(stdout)

proc cbNewSelectedPair(agent: nice.Agent; streamId: int; componentId: int; lfoundation: string; rfoundation: string) =
  gDebug("SIGNAL: selected pair " & lfoundation & " " & rfoundation)

proc stdinSendDataCb(source: IOChannel; cond: IOCondition; agent: nice.Agent): bool =
  var line: string
  if readLine(source, line) == IOStatus.normal:
    discard send(agent, streamId, 1, line.len, line)
    stdout.write("> ")
    flushFile(stdout)
  else:
    discard send(agent, streamId, 1, 1, "\x00")
    ##  Ctrl-D was pressed.
    quit(gloop)
  return true

proc cbComponentStateChanged(agent: nice.Agent; streamId: int; componentId: int; state: int) =
  gDebug("SIGNAL: state changed $1 $2 $3[$4]\n" % [$streamId, $componentId, stateName[state], $state])
  if state == ComponentState.connected.ord:
    var
      local: Candidate
      remote: nice.Candidate
    ##  Get current selected candidate pair and print IP address used
    if getSelectedPair(agent, streamId, componentId, local, remote):
      var ipaddr = newString(INET6_ADDRSTRLEN).cstring
      toString(local.impl.`addr`, ipaddr)
      echo("\nNegotiation complete: ([$1]:$2,", [$ipaddr, $getPort(local.impl.`addr`)])
      toString(remote.impl.`addr`, ipaddr)
      echo(" [$1]:$2)" % [$ipaddr, $getPort(remote.impl.`addr`)])
    ## Listen to stdin and send data written to it
    echo("\nSend lines to remote (Ctrl-D to quit):")
    addWatch(ioStdin, glib.PRIORITY_DEFAULT, IOCondition.in , stdinSendDataCb, agent)
    stdout.write("> ")
    flushFile(stdout)
  elif state == ComponentState.failed.ord:
    quit(gloop)

proc cbNiceRecv(agent: nice.Agent; streamID: cuint; componentID: cuint; len: cuint; buf: cstring) = #{.cdecl.} =
  if len == 1 and buf[0] == '\x00':
    glib.quit(gloop)
  discard stdout.writeBuffer(buf, len)
  flushfile(stdout)

proc main =
  var
    agent: nice.Agent
    stunAddr: string
    stunPort: int
    controlling: int

  ##  Parse arguments
  let argc = paramCount() + 1
  var argv = newSeq[string](argc)
  for i in 0 ..< argc:
    argv[i] = paramStr(i)

  if argc > 4 or argc < 2 or argv[1].len > 1:
    write(stderr, "Usage: $1 0|1 stun_addr [stun_port]\n" % [argv[0]])
    quit(QuitFailure)

  controlling = argv[1][0].ord - '0'.ord
  if controlling != 0 and controlling != 1:
    write(stderr, "Usage: $1 0|1 stun_addr [stun_port]\n" % [argv[0]])
    quit(QuitFailure)

  if argc > 2:
    stunAddr = argv[2]
    if argc > 3:
      stunPort = parseInt(argv[3])
    else:
      stunPort = 3478
    gDebug("Using stun server \'[$1]:$2\'\n" % [$stunAddr, $stunPort])

  gio.networkingInit()
  gloop = newMainLoop(nil, false)

  # https://gist.github.com/demotomohiro/c9d9ad7e17639c6acb9bd2be7c204f3f
  when hostOS == "windows":
    ioStdin = win32NewFd(system.stdin.getFileHandle)
  else:
    ioStdin = unixNew(system.stdin.getFileHandle)

  ##  Create the nice agent
  agent = nice.newAgent(glib.getContext(gloop), nice.CompatibilityRfc5245)
  if agent == nil:
    gError("Failed to create agent")

  ## Set the STUN settings and controlling mode
  if stunAddr.len > 0:
    setProperty(agent, "stun-server", toStringVal(stunAddr))
    setProperty(agent, "stun-server-port", toIntVal(stunPort))
  setProperty(agent, "controlling-mode", toIntVal(controlling))

  ##  Connect to the signals
  agent.connect("candidate-gathering-done", cbCandidateGatheringDone)
  agent.connect("new-selected-pair", cbNewSelectedPair)
  agent.connect("component-state-changed", cbComponentStateChanged)

  ##  Create a new stream with one component
  streamId = addStream(agent, 1)
  if streamId == 0:
    gError("Failed to add stream")

  ## Attach to the component to receive the data
  ## Without this call, candidates cannot be gathered
  attachRecv(agent, streamId.cuint, 1, getContext(gloop), cbNiceRecv)

  ##  Start gathering local candidates
  if not gatherCandidates(agent, streamId):
    gError("Failed to start candidate gathering")
  gDebug("waiting for candidate-gathering-done signal...")

  ##  Run the mainloop. Everything else will happen asynchronously
  ##  when the candidates are done gathering.
  run(gloop)
  quit(QuitSuccess)

main()

Was mainly some small typos and a missing break statement:
diff simple_example.nim ~/gintro/examples/gtk3/simple_example.nim
71c71
<     stdout.write(localUfrag, ' ', localPassword)
---
>     stdout.write(localUfrag, localPassword)
75c75
<       stdout.write(' ', cast[cstring](addr el.impl.foundation), ',', el.impl.priority, ',', ipaddr, ',', getPort(el.impl.`addr`),
---
>       stdout.write(' ', cast[cstring](addr el.impl.foundation), ',', el.impl.priority, ',', ipaddr, ' ', getPort(el.impl.`addr`),
104d103
<         break # missing in initial release!
142c141
<         var c: nice.Candidate = parseCandidate(x, streamId)
---
>         var c: nice.Candidate = parseCandidate(lineArgv[i], streamId)
144c143
<           gMsg("failed to parse candidate: " & x)
---
>           gMsg("failed to parse candidate: " & lineArgv[i])
185c184
<   stdout.write("\n  ")
---
>   echo("  ")

But with
grep -A20 "seq2GSList\*" ~/.nimble/pkgs/gintro-#head/gintro/gobject.nim
proc seq2GSList*[T](s: seq[T]): ptr glib.SList =
  var l: ptr glib.SList
  var i = s.len
  while i > 0:
    dec(i)
    when true:#T is gobject.Object: # or T is pango.Item:
      l = g_slist_prepend(l, s[i].impl)
    elif T is cstring:
      l = g_slist_prepend(l, s[i]) # cstring
    else:
      discard # make it compile for these cases, of course will not work
  return l

it fails to compile with
Error: template instantiation too nested
Will ask on Nim forum and try again later. Only idea is to try a non generic seq2GSList for NiceCandidate in nice.nim module. Will maybe try later.

Well I found two more errors, both will take some time to fix. Will try to do it tomorrow.

I have fixed the typos, but when I try to make seq2GSList() working compile fails with message:
Error: template instantiation too nested
That is very ugly, I have no idea which really causes that error.

I don't get that compile error.
I fixed seq2GSList like following code.
Any types that has impl field are prepend with g_slist_prepend(l, s[i].impl)
And when T doesn't match any supported type, it is compile error.
It worked with my test code.
proc seq2GSList*[T](s: seq[T]): ptr glib.SList =
  var l: ptr glib.SList
  var i = s.len
  while i > 0:
    dec(i)
    when T is gobject.Object or compiles(T.impl):
      l = g_slist_prepend(l, s[i].impl)
    elif T is cstring:
      l = g_slist_prepend(l, s[i]) # cstring
    else:
      {.error: "seq2GSList was called with unsupported type".}
  return l

getSelectedPair proc in gintro/nice is defined incorrectly.
This is how getSelectedPair and nice_agent_get_selected_pair are defined:
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: ptr Candidate00; remote: ptr Candidate00): gboolean {.
    importc, libprag.}

proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: Candidate; remote: Candidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), cast[ptr Candidate00](local.impl), cast[ptr Candidate00](remote.impl)))

They need to be fixed like this:
proc nice_agent_get_selected_pair(self: ptr Agent00; streamId: uint32; componentId: uint32;
    local: var ptr Candidate00; remote: var ptr Candidate00): gboolean {.
    importc, libprag.}

proc getSelectedPair*(self: Agent; streamId: int; componentId: int;
    local: Candidate; remote: Candidate): bool =
  toBool(nice_agent_get_selected_pair(cast[ptr Agent00](self.impl), uint32(streamId), uint32(componentId), local.impl, remote.impl))

It is used like this code:
var
  local = Candidate(ignoreFinalizer: true)
  remote = Candidate(ignoreFinalizer: true)
if getSelectedPair(agent, streamId, componentId, local, remote):

nice_agent_get_selected_pair function in libnice returns pointers to NiceCandidate object by taking pointers to a pointer to a NiceCandidate object (it is not a pointer to NiceCandidate) and write an address of NiceCandidate object to the pointer that given pointer to pointer to NiceCandidate points to.
https://libnice.freedesktop.org/libnice/NiceAgent.html#nice-agent-get-selected-pair

I told you I will fix it. Done.
Works for me. Please test with
nimble install gintro@#head

Thank you!
gintro/examples/gtk3/simple_example.nim worked on termux.
But it doesn't work on windows.
libnice_simple_test.nim in https://github.com/StefanSalewski/gintro/pull/103/files worked on both windows and termux.
So I think nice module is fine but simple_example.nim need to be fix.
I will try to fix it on windows and send PR.

Unfortunately I can not help you for your Windows issue, I have no idea. One reason could be that gintro does not work for 32 bit OS, I think no one ever has tested gintro with 32 bit. But I assume that your windows is 64 bit.
For the "Error: template instantiation too nested" I found the reason, it is the "when (compiles do: import gintro/gtk):" statement. That one seems to be very broken, see
https://forum.nim-lang.org/t/7222
I will add your libnice_simple_test.nim to the gtk3 examples tomorrow.

It seems we don't need to check existance of gintro/gtk module.
When writing command line program that doesn't use gtk, importing gintro/dummygtk module works even if there is gintro/gtk module.
I have installed gtk3 and gtk4 using (MSYS2)[https://www.msys2.org] with following command:
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtk4

Then I reinstalled gintro with nimble install gintro@#head and I got gintro/gtk and gintro/gtk4 module.
I can build and run examples/gtk3/t0.nim, examples/gtk3/app0.nim, examples/gtk4/app0.nim and examples/gtk4/textview.nim.
I changed following import statements in examples/gtk3/simple_example.nim
when (compiles do: import gintro/gtk):
  import gintro/[gtk, glib, gobject, gio, nice]
else:
  import gintro/[dummygtk, glib, gobject, gio, nice] # For windows with glib but no gtk

to
import gintro/[dummygtk, glib, gobject, gio, nice] # For windows with glib but no gtk

and it compils and works without error.


Does the language server support spelling rules

Kind of referencing this too : https://github.com/errata-ai/LSP-vale-ls/issues/3
I now have all rules working with quickfix in VSCode extension, but spelling rules don't return a quick fix? Should the language server do that? And if so, what dictionary is it using by default?

Hmm, interesting, then I wonder why I can't get it to show anything 🤔 . Will investigate.

I can't even get the spelling quick fix to register in the Sublime extension. I wonder, is there some configuration or rule error I should check for? I am using the same rules that work in the current VSCode extension, this rule: https://github.com/ChrisChinchilla/Openly/blob/main/Openly/Spelling.yml that's using an npm package dictionary.
I wonder if somehow I deleted a dictionary file or something, but I don't see any errors.

I found that somehow I had modified a rule, and this now works.


Formatting of output in ini_procs.F with a large number processors

With the increasing number of processors being used in many simulations, especially with exch2-grids, nPx quickly goes beyond 999 and the formatted write to msgBuf in ini_procs.F starting here:
https://github.com/MITgcm/MITgcm/blob/07e785229e35cf2d8247b74b6d9d95d2c3adb417/eesupp/src/ini_procs.F#L269
leads to "***" and error messages that clutter the output making it annoying to search for important errors. I suggest to change all format strings in this block in ini_procs.F  from I3 to I6 and I4.4 to I6.6 (or maybe "only" to I5 and I5.5).
Any objections/opinions? @jm-c @christophernhill ?

@mjlosch I agree this needs to be fixed. May be we should take this opportunity to fix the most obvious
limitations in proc number writing. The "summary of processor mapping" is one ot them. The file name length for STDOUT.* and STDERR.*  files (in eeboot_minimal.F) is an other one. And then the length of the processor header (idString) for all print statement (S/R  PRINT_MESSAGE & PRINT_ERROR in print.F).
The other thing is that it might be helpful to not change current output when proc number is small
(i.e., below the current limit), specially for STDOUT & STDERR file names.

@jm-c if that can be done elegantly, then it sounds like a good way forward. But, I'm not sure how much it is worth complicating the internal logic to maintain the current number of digits in STDERR and STDOUT filenames.

 Should I make a suggestion (as a PR) and we can then fix it together?

Sounds good to me.

Hi Martin,
When you have time, you cam put a PR and we will see how it goes.
Can think of storing a format or the number of digits to use to print these numbers
(and then make a format out of it), with something like: 1+INT(LOG10(DFLOAT(nPx*nPy)))
Also, if you want a very small set-up to compile and test large number of procs,
you might want to take a look at "verification/adjustment.cs-32x32x1/README"
(and code_min and input_min) which does not do much but uses very little memory (to put plenty of
MPI procs on just 1 node).
 Should I make a suggestion (as a PR) and we can then fix it together?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/MITgcm/MITgcm/issues/343#issuecomment-620043031

@mjlosch since PR #345 has been merged, could we close this issue ?


Release v0.33.0

Labeled as hold as we found some edge-case issues which would be great to address before the holiday period.

@hiddeco I think all outstanding issues were fix, are we good to release it?

@stefanprodan the PR is now updated, PTAL.


Arkmanager and cluster feature

Hello,
just a short question as the title says. Does arkmanager already support the cluster feature? If not, is it planed to add that?
Thanks
Mike

Support since 1.6 version.


ipcache: fix not waiting for k8s caches to sync

This variable was refactored, but we missed reading from the new source.
Fixes: c12cbe426

This was never shipped, so no need to backport.

test failures are known flakes (https://github.com/cilium/cilium/issues/25968, https://github.com/cilium/cilium/issues/25974)

/test

rebased to pick up flake fixes.

/test

/test

Test failures sure smell like flakes; I couldn't find any entry in the logs to indicate that the behavior this PR enabled (blocking ipcache sync until k8s caches are synced) was triggered. Nevertheless, in at least one test run it seemed like ipsec was completely broken!

aha, looks like it's https://github.com/cilium/cilium/issues/25964 which has been fixed. Rebasing.

all green, marking as ready-to-merge.


Pipe delimiter in files disables ability to clone gist

🐛 Describe the bug
Usually you can fork and clone gists just like any other git repo. This is useful in cases like #756 where an upload corrupts settings and you want to try and roll back to a previous settings version.
However, files stored in child folders (like snippets) are done so by naming the file using a pipe delimiter:

The web UI for a gist doesn't have enough to allow reverting; but you also can't clone the gist with git and do a rollback that way because git won't allow you to put a filename with a pipe in it down into the filesystem. You're stuck.
It'd be nice if the delimiter was something that could be put into the filesystem so in times when the gist needs to be cloned or manipulated with git that would be possible.
🌴 Visual Studio Code Version : 1.31.1
🌴 Code Settings Sync Version : 3.2.7
🌴 Standard or Insiders : Standard
🌴 OSS or Portable : OSS
🌴 Operating System : Windows 10
🌴 Occurs On: Download
🌴 Proxy Enabled: No
📰 To Reproduce
Steps to reproduce the behavior:

Create a custom snippet.
Upload settings to your gist.
Try cloning the gist using the GitHub instructions
Git fails due to the pipe in the filename.

Actually for reverting and other things, Settings Sync will have #413 feature.
So for GIST, I am not looking to improve ,rather move to git sync instead of gist sync.
So closing this issue.


Add detection algorithms not present in repo

face detection algos which are not been implemented yet

I would like to work on this issue, can you please assign it to me?

assigned


File meta data in JSON

Added parser for reading meta data from a simple JSON-based format
A few unit tests for the newly added meta data parser have been added

This pull request addresses issue #210.

Just one concern: I had to add a new value INVALID into the enum class ValueTypeCode. The script build.sh, now shows many warnings everywhere where the enum class is used, usually because of not checking the newly added value. Maybe any recommendation on what to do here?
The next thing is that somewhere, "metadata" is used as one word and elsewhere as two words, "meta data." Maybe this should be unified in the future...

Just one concern: I had to add a new value INVALID into the enum class ValueTypeCode. The script build.sh, now shows many warnings everywhere where the enum class is used, usually because of not checking the newly added value. Maybe any recommendation on what to do here?
The next thing is that somewhere, "metadata" is used as one word and elsewhere as two words, "meta data." Maybe this should be unified in the future...

The alternative solution is that I can set a default value from one of the existing (SI8, SI32, SI64, UI8, UI32, UI64, F32, or F64) in case the JSON format contains the unknown value for ValueTypeCode. In that case, I don't have to add a new value to the enum class.

Hi!
I did not fully test this feature, but so far it LGTM. The change in terminology (metadata vs meta data) in comments can be easily addressed any time. The issue with warnings about the newly introduced INVALID enum can be fixed by either adding that to the switch statements that use ValueTypeCode or adding a default case. My compiler (gcc 11.2.0) found five occurrences where this is needed in CastObj.h, EwBinaryObjSca.h, ReadCsvFile.h, ReadDaphne.h and WriteDaphne.h. I silenced the warnings by putting this at the end of the switch statement: default: throw std::runtime_error("unknown value type code");

LGTM - Test suite runs fine. Merging with minor changes.
I found another warning of a switch statement in CheckEqApprox.h (noticable when running test.sh) and I beautified the inclusion of json.hpp ;-)

LGTM - Thank you for your contribution! 👍
Test suite runs fine. Merging with minor changes:

I found another warning of a switch statement in CheckEqApprox.h (noticable when running test.sh)
I beautified the inclusion of json.hpp ;-)

Great! Thank you.


New linter plugin: SublimeLinter-contrib-bashate

After finding there was no SublimeLinter plugin for bashate, I put this together and have been using it myself, and it matches all the tests in bashate's tests directory as well. Figured it was about time I published it.
https://github.com/maristgeek/SublimeLinter-contrib-bashate

In your TravisCI file you reference PEP257, this has been renamed pydocstyle and you should change your pip and executable to such. If you are confused see any SublimeLinter org linter's TravisCI file.
Other then that, looks good, please make a release and I'll put it into Package Control.

Fixed, v1.0.0 released. Thanks.

Thanks again for your contribution! It should show up in package control in an hour.
https://github.com/SublimeLinter/package_control_channel/commit/2f8a2c75202b57b21a8671b4b9fc7d64e3fa20a7


[20.09] jetty: 9.4.36.v20210114 -> 9.4.41.v20210516

Motivation for this change
backport jetty-9.4.41.v20210516 to nixos-20.09
to address CVE-2021-28169.
Note: jetty-9.4.36 was not patched by upstream, so the closest patched release is 9.4.41.
Closes #128380
(cherry picked from commit 8bfc237eb3bf79b42def350c5cf8b7c673deda79)
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[X] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 128846 at 205ee4a4 run on aarch64-linux 1

1 package built successfully:

jetty

2 suggestions:

warning: maintainers-missing
Package does not have a maintainer. Consider adding yourself?
Near pkgs/servers/http/jetty/default.nix:18:3:
   |
18 |   meta = {
   |   ^

warning: missing-phase-hooks
installPhase should probably contain runHook preInstall and runHook postInstall.
Near pkgs/servers/http/jetty/default.nix:13:3:
   |
13 |   installPhase = ''
   |   ^

Unfortunately NixOS 20.09 has reached its end-of-life status on 2021-07-01, one
month after the release of NixOS 21.05.
Since we do not accept any changes to its branches anymore, I'm closing this pull
request.


Syncing with upstream ipfs-service-provider

:tada: This PR is included in version 1.2.4 :tada:
Your semantic-release bot :package::rocket:


fix: Verify manifest changes correctly

Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO)

It seems we had more validation problems than I noticed :laughing:

It seems we had more validation problems than I noticed :laughing:

Yeah, I did  some mistakes when I ported the thing from core 😅😅
At least we have detected them with only a few commits :)


fix error on zone deletion & history function

Since PowerDNS 4.2.0-rc1 non existing zones will return 404 instead of 422 (https://github.com/PowerDNS/pdns/pull/6076) that results in "Oops" on dns-ui after zone deletion and breaks history page.
This commit maintains backward compatibility to versions before PowerDNS 4.2; also maintains code compatibility before PHP 7.1.
This fixes #160

Fix merged. Thank you!


feat(server): add h1 idle_timeout

Motivation
Older browsers sometimes open 6 or more H1 connections and keep them alive and idle after resources are loaded, costing server resources and distracting from DoS attackers. In my specific case, DoS mitigation required limiting TCP connections per IP address, but limits had to be high to account for multiple legitimate H1 browsers on the same IP address.
Related: #1628
Related: #2355
Changes

[x] Added idle_timeout setting, optimized to avoid creating an additional timer per request
[ ] Automatically send keep-alive: timeout=# header (deferred due to: https://github.com/hyperium/http/issues/142)

Testing

[x] Fixed multiple pre-existing and broken, but relevant, tests
[x] Added a test with idle timeout
[x] Added a test without idle timeout (improves coverage)
[x] Tested in my app

# Cargo.toml

[patch.crates-io]
hyper = { git = "https://github.com/finnbear/hyper", branch = "idle_timeout" }
hyper-util = { git = "https://github.com/finnbear/hyper-util", branch = "idle_timeout" }

Future work

[x] Support in hyper-util (https://github.com/hyperium/hyper-util/pull/146)
[ ] Consider other timeouts (reading body, writing response)

@sfackler / @seanmonstar is there a possibility on getting this PR reviewed? I am also interested in getting H1 idle timeouts available :)

I am also interested in getting H1 idle timeouts available :)
If you want, you can use the TOML snippet in my PR description to avoid needing to wait for review :)


Integration tests appear broken

https://github.com/pulumi/pulumi-dotnet/actions/runs/4166249736/jobs/7210343160
Built binary /Users/runner/work/pulumi-dotnet/pulumi-dotnet/pulumi-language-dotnet/pulumi-language-dotnet
error: could not create stack: [404] Not Found: Organization 'moolumi' not found

Creating this to track and fix.

Failure was flaky. main is green after a retry.


Databricks workspace service

Description
Research teams have requested the ability to use Databricks within a TRE workspace.
A workspace service needs to be created that deploys Databricks, the following work is likely a good starting point:
https://github.com/Azure-Samples/modern-data-warehouse-dataops/blob/main/single_tech_samples/databricks/sample2_enterprise_azure_databricks_environment/README.md
Acceptance Criteria

[x] Workspace Owner can deploy Databricks into a workspace
[ ] Researchers can carry out steps TBD
[x] Any required outbound connectivity is configured as part of the deployment and documented
[x] Workspace service documented and PR to AzureTRE repository complete
[x] Workspace configured with private link with option to expose internally/externally.

@marrobi  I would delete the second acceptance criteria if we are not clear on the steps a researcher would take.

@wereinse work is in progress to define them.

Hi @marrobi , please feel free to assign it to me.

Related stories:

Allow researchers to install packages using the Nexus shared service on Azure Databricks service clusters
Allow TRE workspace owners manage permissions for researches and data engineers using the Unity Catalog in Azure Databricks workspace service


Improve Visual Assembler and update the picture

The picture was a screenshot from radare2, I updated that to Rizin.
See the output here: https://github.com/officialcjunior/book/blob/visual-mode-pic/src/visual_mode/visual_assembler.md

i do not see any file added.
be sure to do git add path/to/file and check if is green on git status

I think I had added it fine. I had used the same file name for the new image, maybe that is what's causing this?
But, I can see the image here: https://github.com/officialcjunior/book/blob/visual-mode-pic/src/visual_mode/visual_assembler.md

I also think that ask.bytes should be enabled to see the differences better

I also think that ask.bytes should be enabled to see the differences better

Alright, check it out now: https://github.com/officialcjunior/book/blob/visual-mode-pic/src/visual_mode/visual_assembler.md

Not a very good example. I would see some instruction address that is already on the screen so you would see the change visually.

You are right about that.
Changed the offset to one on the screen. 👍🏽

Enable asm.bytes

Example decision looks good, enable asm.bytes please

Ah, my bad. I can't believe I missed that.
Please check again, now.


⚠ Bofrost.de has degraded performance

In d0a67a0, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 951 ms

Resolved: Bofrost.de performance has improved in d7f4627.


Resolving types from nested node_modules

👋 I am using Shiki Twoslash for my new blog (example, code) and I love it! Thank you.
I want each blog post to have its own package.json so I don't have to add all of the @types packages required by my code samples to the root package.json. For example, the code samples in posts/my-first-post/index.md should use @types defined in posts/my-first-post/node_modules. However, when I try to do this it seems that Twoslash is unable to resolve types from nested node_modules folders.
I've created a reduced test case here: https://github.com/OliverJAsh/twoslash-nested-projects-test
Steps to reproduce:

Clone the reduced test case and install all dependencies
Run Twoslash to compile posts/my-first-post/index.md
Inspect the output at posts/my-first-post/render/index.html

yarn

(cd posts/my-first-post && yarn)

twoslash posts/my-first-post posts/my-first-post/render

open posts/my-first-post/render/index.html

In the output we will see the following error:
Cannot find module 'express' or its corresponding type declarations.

This is despite the fact that @types/express is installed in posts/my-first-post/node_modules, which is in the same folder as the Markdown file we're compiling.
I can fix the error if I install @types/express in the root package.json, but I don't want to do that as described above.
I suspect the reason this happens is because the virtual TS file created by Twoslash has a path outside of the folder posts/my-first-post?

Yeah, I think the 'find node_modules' resolver in the current shiki-twoslash to be quite naive (likely because I've only used it in a few repos and they've all largely had the root repo) - totally open to that expanding 👍🏻

Thanks for your response! I can try to do this myself but firstly I'd like to get your thoughts on how we should address this. Should it just find @types in any node_modules folders that exist in parent folders relative to the Markdown file that contains the code sample?

Yeah, I'd try have have the backwards searching node resolution strategy start from the folder with the markdown inside it. It's a little hard to know how that affects everything, I'd imagine twoslash  now needs knowledge about the current dir. and not just pwd, shiki-twoslash probably needs info of the current file also and maybe some of the larger tools might have to pass it in


Add callback when file has finished loading

In some cases it may be necessary to load a file ad-hoc and play it as soon as it has loaded. It is impossible to do this now without some convoluted polling for the value of isLoaded() inside a recurring  setTimeout call.
This problem could be solved by providing a functional API that passes the sound instance to a callback once it's finished loaded.
So instead of doing:
const sound = new Sound(...);

You'd have something like:
Sound.load(filename, Sound.MAIN_BUNDLE, (sound, error) => {
  // Do whatever you want with sound and error here
});

I've worked around this limitation by using an inelegant recursive call inside a setTimeout that checks for the value of isLoaded() every so often. Kinda hacky but gets the job done. Also with this strategy you can work around the Android limitation that only lets you play 6 pre-loaded files without releasing the MediaPlayer (see this post -> http://stackoverflow.com/questions/23665250/mediaplayer-stops-playing-the-sounds-android)

You can use the onError callback in the constructor of Sound for this now.
new Sound('foo.mp3',  Sound.MAIN_BUNDLE, (error, props) => { if (!error) { .. loaded .. } })

You can use the onError callback in the constructor of Sound for this now.
new Sound('foo.mp3',  Sound.MAIN_BUNDLE, (error, props) => { if (!error) { .. loaded .. } })

Thanks, it works.


[Enhancement]Use union_iterator to get data from non-overlapping rowset during pk compaction

Why I'm doing:
We will generate a heap_merge_iterator or a mask_merge_iterator for each rowset during the compaction of primary key table, it will load a chunk for each segment which maybe cost a lot of memory. If a rowset is non-overlapping, union_iterator is enough.
What I'm doing:
Use union_iterator to get data from non-overlapping rowset during the compaction of primary key table.
Fixes #issue
What type of PR is this:

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

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

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

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

[ ] This is a backport pr

Bugfix cherry-pick branch check:

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

[x] 3.2
[x] 3.1
[x] 3.0
[ ] 2.5

ignore backport check: 3.1.9


Fix mention of CUDA support in docs

Is this still relevant / correct? If so we should merge it

I assume this functionality works?

Yes as of #3034.


Add include verb for allowing projection of only specific folders

This is a feature to only include specified folders in the projection.  I'm not stuck with the naming that I have chosen so if you have better ones please let me know.
You should be able to clone as normal and it will project everything until something is added to the included folder database via the gvfs include verb.
The gvfs include verb includes the following:
-a <folderlist> // add ; separated folders to the list to include
-r <folderlist> // remove ; separated folders to the list
-l // list the folders that are currently in the list

Examples:
gvfs include -l
gvfs include -a GVFS/GVFS;Scripts
gvfs include -r Scripts

You can use both the -a and -r in the same invocation.  The removes will be applied first and then the adds.
You must have a clean git status in order to add or remove folders so the the code can reproject without issue.
These changes currently don't do anything with the modified paths so if you create a directory or get a conflict that is outside the included folders then the paths will be added to the modified path list and continue to be in the working directory for git to keep up to date.
TODO:

[x] Testing on Mac
[x] Decide how to handle edge cases like creating a directory that is in the projection but not in the included list
[ ] Test conflict scenarios and make sure they work as expected
[x] Performance test when no included folders
[ ] Performance test while there are included folders

Ok, I finally got the GitCommandTests working while watching the partial mode. Mostly, these check that the results of Git commands in a vanilla Git repo match those in the GVFS repo with some included folders. Additionally, it verifies the working directory contents match except outside the specified cone. The goal here is just to ensure we are not changing any Git behavior within our cone. We will need to add tests that check how Git behaves when messing around outside the cone; that can be more reactionary to problems we see users hitting as they test the feature.
Please consider cherry-picking this commit which had this successful build.
Note that I created the PR - Windows - Functional Tests (Include Mode) to run only the GitCommandTests with the IncludeMode option so we don't make the existing functional tests longer. This build can be turned on for master after this PR completes.
One thing the tests are missing is any behavior where Git does an interaction outside the included cone. We should consider setting up a merge conflict outside the cone and confirm the behavior is not terrible. We can create specific functional tests for those types of cases.
Finally, I'm testing some more to see if we can add a second-level included folder, such as "GVFS/GVFS". It is likely that some other sub-folders of the GVFS folder need to be added for the tests to work. I'll provide that change as a separate commit.

In this commit, I converted the "GVFS" folder to "GVFS/GVFS" and "GVFS/GVFS.Common" and the tests passed.

/azp run

/azp run GitHub VFSForGit Mac Functional Tests


Feature Request - Check for image in asset bundle before going to network or fallback images

Edited to add usage example...
WHAT:  I would like to pull from the asset bundle first if the image is available, then try the network location.
WHY:  I have a set of stock images to use for a weekend performance in my assets/ folder but I still need the option to pull from the network.  Rather than set up an elaborate versioning system, I'd like to check the assets folder for the image, before trying to grab it from the network by using this package which I already employ.  This was the simplest solution I could come up with.
SOLUTION:  Modify class AdvancedNetworkImage in src/provider/flutter_advanced_networkimage.dart as shown below.  I tried to fork so I could send a pull request but my fork doesn't match what I was getting via 'packages get' (0.5.0)
class AdvancedNetworkImage extends ImageProvider<AdvancedNetworkImage> {
  AdvancedNetworkImage(
  this.url, {
  this.firstTryLocalAsset: '',

// .... AND ....

  final String firstTryLocalAsset;

Future<ui.Codec> _loadAsync(AdvancedNetworkImage key) async {
assert(key == this);

String uId = uid(key.url);
...
// Check to see if the image is available in the asset bundle before trying the network.
if (key.firstTryLocalAsset!=null) {
  ByteData imageData = await rootBundle.load(key.firstTryLocalAsset).catchError((e) {});
  if (imageData != null) {
    return await PaintingBinding.instance.instantiateImageCodec(imageData.buffer.asUint8List());
  }
}
...
if (useDiskCache) {
try {

Usage:
image: AdvancedNetworkImage(
  performer.photo,
  firstTryLocalAsset: 'assets/performers/' + photoName,
  useDiskCache: true,
  fallbackAssetImage: 'assets/performers/image_not_avail.png',
),

It is not a common usage, so I am going to close this.


docs: release 1.4.5

#198

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 90.37%. Comparing base (177143e) to head (a734726).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #201   +/-   ##
=======================================
  Coverage   90.37%   90.37%
=======================================
  Files          11       11
  Lines         457      457
  Branches       88       88
=======================================
  Hits          413      413
  Misses         39       39
  Partials        5        5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


value blaze is not a member of org.http4s.server

I'm hitting the above error on scala 3. Here is a minimal repro: https://github.com/psylinse/zio-scala-3-error
Sorry if I'm missing something obvious, I'm relatively new to scala/scala 3!

I believe the packages were slightly changed for consistency.
Try using import org.http4s.blaze.server.BlazeServerBuilder

Ah, that's it thank you!


9/29/2020 Publish

Docs Build status updates of commit 3f07b42:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

api/Microsoft.Azure.Management.DataFactories.Models.EntityStatus.PendingRecreation.yml
:x:Error

Details

:x:Error

Details

api/Microsoft.Azure.Management.DataFactories.Models.EntityStatus.PendingRecreation.yml

[Error-PublishToDHSFailed] Publishing of document 'api/Microsoft.Azure.Management.DataFactories.Models.EntityStatus.PendingRecreation.yml' to document hosting service failed with asset id: api/microsoft.azure.management.datafactories.models.entitystatus.pendingrecreation locale: en-us, depot name: Azure.azuredotnet, branch name: pr-en-us-1474. Error: A task was canceled.

[Error-BackendEngineExceptionError] An exception occurred during the build process. Please check the raw log and retry building your content again. If the issue persists, please open a ticket in https://SiteHelp and include the URL of publishing report as well as below information: Object reference not set to an instance of an object..

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Update snapshots for current master

Fix the current 🔴  CI in master to be 🍏 , due to an outdated merge of #585.

Codecov Report

Merging #627 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #627   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          64     64
  Lines         675    675
=====================================
  Hits          675    675

Continue to review full report at Codecov.

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


Bugfix/maxou/fix timeout serial

Bug fix, the delay doesn't work
There were a bug where the timeout is not respected, causing it to not work in some situation.
This line:
vTaskDelay(1 / portTICK_PERIOD_MS);
If FreeRTOS is set lower than 1000 HZ (1 ms per tick) it cause the calculation to return 0 so it doesn't have any meaningful delay.
Now it does with this fix.
If FreeRTOS is set a 100 HZ (10 ms per tick) with 1000 ms timeout, the loop will operate 100 times and create 100x10ms delay.
See: https://github.com/ESP32-Musings/OTA_update_STM32_using_ESP32/issues/4
Prescribed delay is not sufficient
I needed more than 8s to erase flash memory on my microcontroller so 5s is insufficient. Especially if the micro is not a new one.
Header too big to parse
Some modern browser have a tendency to produce ridiculously big HTTP GET header, I increased the webserver buffer size to repair this.

Can you please accept it so I can put this behind me :(


Consider adding upload and download operations on /data-objects endpoint

Feature / Question
There are read and write operations but there is no get/download and put/upload functionality for a data object. Did you decide that get and put are tasks of developers who will use the api? Or this was in you todo? Just wanted to highlight this fact.

indeed - same request as @olegkap

This is partially about where the HTTP API should sit in the stack.
If the HTTP API sits behind a server, then read/write become easy to manage. If a browser is talking directly to the HTTP API, then things become slightly more difficult because the web page / javascript has to handle it.
We're planning on relaxing the requirements so that read and write are easier to use from javascript.

One input for our possible usage context: in the first place we are thinking to use http-api as service for rirods, so read and write look part of that client's development process. But in the far future we are thinking to expose the api for parties interested in developing their local portal projects.

Excellent. We're certainly interested in making things better. Keep the feedback coming.
The next release will have improved support for reading and hopefully writing.

The read operation has been simplified. It now supports streaming like the C++ REST API.
We'll leave this open until we reach a decision about the write operation.

if write takes more time to work out, we can create a new issue so we can close this one for 0.2.0.

Handling write is definitely going to take some time.
Will open a new issue for that.

Created #208.
Will adjust this issue and close.


Does this actually need HDF5?

I can't find any mention of it in the source, but it's in REQUIRE.

Nevermind.  I found it. :P


Spring Config client not receiving decrypted config properties from config server.

I created a server.jks file and put it in resources directory in config server and added following properties in application.properties
encrypt.keyStore.location=classpath:/server.jks
encrypt.keyStore.password=${KEYSTORE_PASSWORD:mystore123}
#encrypt.keyStore.password=mystore123
encrypt.keyStore.alias=server
encrypt.keyStore.secret=mykey123

I have client specific myclient-application.properties which has security properties
security.user.name=admin
security.user.password={cipher}blahblahblah..

I created this password by calling encrypt endpoint.
And on Config client, I have common properties in application.properties and have bootstrap.properties. When I run config client I get following error.
java.lang.IllegalArgumentException: Could not resolve placeholder 'security.user.name' in string value "${security.user.name}"

Do I need to add any encrypt.key on config client and what will be that key. Please let me know what am I missing.

Is there an error on the config server? Can you decrypt that value using the /decrypt endpoint? Does it show up decrypted in the /myclient-application/default resource?

Sorry my bad, I didn't copy encrypted value properly. So now I just have server.jks file in config server, do I need to add anything on config client. According to documentation, encryption and decryption will be done on config server itself.

When I put encrypted values of these properties, Config Server gives error when I try to start it
encrypt.keyStore.password={cipher}AQB/AXaJqWsnIuYNtla/j5IpJbLDir2aJrmvdv7E8WlPs9GoV5TOxSHPzNlE3sxbCHfFgM10Zq47AcggJ0OjE4V4XwUO46Z7DdF7LHzXyNMPhZgR2Ek4LOz1h8xXTMsS5Ai9GFPA08aAfGvVd1eGypAFouMfDjbk/8eA6jQraXfAaIEdqlHaikm1940CRp8gn3xIyg0N6dveiU7yf+To3RgqUkvEBBcy9vI5/VNdZS5HtivD7bKq60ZL0d9+/p4SA1jOv/aCdkqdJZ2S49EJ5zWHC0hAPpxk0pM9raUDBB6Fk9yx1nAY8Yf8J6q489eJb4ldByG7qib+1dgfb1qIVYuuIYvUI45fxyN34TcAin5gfbd+ZU9L2yVROdxYji2LqIo=
encrypt.keyStore.alias=server
encrypt.keyStore.secret={cipher}AQAsAaSKSZwmsVetCuxkX5NmSx4I2o2vqMlD6ORRt9odMw5uAYOMBPjLtRC5NMC6QOYPVHEc70SAuvp2gzZFAGa07Nbq8jVV5nGfEuwIYwBJ8IduvtD7JHVCGly5GMrzINADMxgIHpVeg6nMbl+y2pXqBPnJsvxc/5ueyzIoUUIu5W8GfJeWHEl2IaUstkFKQwR8TaJTlArP7/iSI/Po6Z4qBnNwtcPH/2aAQzZ9ylci6U0eqSROeFCUI2ir+KeEGZwaqqVhACtdGSQiSE/HkmUibN9YnSN87DEDVPuJJjHFvo3SOmSlG9N5Blv2OKQN1g4kgSoFh33yi6t+C35623h/TkDBfYfx7+3RLbAwOnHgQpqcSQS/H4PQX9OD/iAmPO0=
I get following error, am I not suppose to encrypt these values
java.lang.IllegalStateException: Cannot decrypt: key=encrypt.keyStore.password

Indeed (it's turtles all the way down from there).

Yes when I give plain text values, then it works. Thank you very much..


Best way to implement a count query.

Hi,
Is there any elegant way to count records from a resource without getting all data from it? I'm thinking about a query like: /users/count or /users/totals, but in some way "restful".
Thanks! :)

Closing in favor of #261


Background Clip shorthand breaking IE8

No matter what flag I set clean-css adding the background clip property to the background shorthand.
This completely break in IE8.
background:url(../../images/site_chrome_bg.png) repeat-x padding-box #6295b9;
padding-box need to stay in it's own property to work in IE8. background-clip: padding-box;

Is it also the thing in IE8 mode?

Yes does this in IE8 compatibility mode too..which is strange.

Well, need to give it a try - we do similar thing for background-size already but I thought background-clip is fine in IE8.

Just run this through clean-css
.portlet header {
background: #6295b9 url('../../images/site_chrome_bg.png') repeat-x;
text-align: left;
border: 1px solid #cccccc;
border-bottom: 0;
font-weight: bold;
padding: 4px 6px;
margin: 0;
-moz-border-radius-topright: 4px;
-moz-border-radius-bottomright: 0;
-moz-border-radius-bottomleft: 0;
-moz-border-radius-topleft: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
border-top-left-radius: 4px;
-moz-background-clip: padding;
background-clip: padding-box;
}

:+1: thx - need to test it in IE too - in the meantime you can disable it entirely using --skip-shorthand-compacting.

So that works. Except now the space after the closing URL bracket isn't being written.
cleancss --compatibility *,+properties.spaceAfterClosingBrace --skip-shorthand-compacting -o models.css models.css

Can you try with cleancss --compatibility ie8 --skip-shorthand-compacting -o models.css models.css?

This is the output I get:
portlet header{background:url(../../images/site_chrome_bg.png) repeat-x #6295b9;text-align:left;border:1px solid #ccc;border-bottom:0;font-weight:700;padding:4px 6px;margin:0;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:4px;-moz-background-clip:padding;background-clip:padding-box}

Perfect. Thanks so  much!

:+1: I'll keep the issue open though to investigate background-clip on IE8.

@jaetea it's fixed in master now, will be a part of upcoming 3.3 release.
As a side note it also affects background-origin merging which will be addressed in #579.


gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.2"

Hello,
Trying get home bridge on i386 device
uname -a
Linux localhost 3.10.20-ga0b64e7-dirty #1 SMP PREEMPT Mon Sep 22 12:17:58 CST 2014 i686 GNU/Linux
gcc -v
gcc version 4.7.2 (Debian 4.7.2-5)
node -v
v.4.2.2
npm -v
2.14.7
Got this error when run : sudo npm install -g homebridge
of course npm run start says :
npm ERR! Linux 3.10.20-ga0b64e7-dirty
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "start"
npm ERR! node v4.2.2
npm ERR! npm  v2.14.7
npm ERR! missing script: start
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     https://github.com/npm/npm/issues
npm ERR! Please include the following file with any support request:
npm ERR!     /home/android/homebridge/npm-debug.log
How to solve please

Are you on a mac ? Could be a Xcode agreement thing. Otherwise, I got once this message it was due to Node version (Node Version Manager NVM can help on this)
Best

M'y config is a bit spécial...I'm using a linux emulator on an Android device intel proc, for an home automation with domoticz.It run wheezy i386 version.Will check NVMEnvoyé depuis mon mobile Huawei-------- Message original --------Objet : Re: [homebridge] gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.2" (#405)De : Pierre-Julien Cazaux À : nfarina/homebridge Cc : deennoo Are you on a mac ? Could be a Xcode agreement thing. Otherwise, I got once this message it was due to Node version (Node Version Manager NVM can help on this)
Best
—Reply to this email directly or view it on GitHub.

got a small succes here : NVM allow me to compil and run homebridge.
Now homebridge asking for config.json, great ! but homebridge directory is /home/android/.nvm/homebridge
i can"t acces to .nvm...can't see it on dir cmd

This same permission error is causing me problems as well. I am on a Raspberry Pi and have tried installing on both Jessie and Wheezy (making sure to use the correct compiler as stated in the Wiki), got the same errors with multiple versions of Node, and tried installing on my Mac as well - all give the same errors and after install am unable to run- i get a command not found error. I tried issuing the install command twice, the second time I got the config.son file not found error, however after placing a config.json file in the directory that was listed, I got a completely different error (this was using a config file that I had working on an old install).
Anyone have any ideas what is going on?

Have you tried installing homebridge with the --unsafe-perm option?  e.g.
sudo npm install -g --unsafe-perm homebridge

If npm detects it is running as root it drops to a non-privileged user which then doesn't have permissions to write to /root/.node-gyp.  The --unsafe-perm option stops it from changing user.
nvm doesn't have this problem when not using sudo because it stores everything under the current users' home directory.

Aching- This worked for me!! Thanks :+1:

sudo npm install -g --unsafe-perm homebridge

Thx to achingbrain, it worked for me, too!

I was trying to install noblejs modules. This really works for me and my RasPi2 man! Thanks.

Please run "sudo /opt/node/bin/npm install (Instead of npm install)"
Where /opt/node/bin/npm is the complete path of binary. This will resolved your issue.


Suggestion: Add an ability to swap default global version in the toolchain

Consider adding a feature that allows users to pick and use a specific version of Python from the toolchain as a global default
something like:
rye toolchain use<EMAIL_ADDRESS>

A global default in which way? For a python picked up outside of a virtualenv or as a default when creating new projects?

It picks up the default.toolchain.
mitsuhiko at cheetah in ~ exited 1
$ rye config --set default.toolchain=3.11

mitsuhiko at cheetah in ~
$ python
Python 3.11.6 (main, Oct  2 2023, 20:31:07) [Clang 16.0.3 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

mitsuhiko at cheetah in ~
$ rye config --set default.toolchain=3.12

mitsuhiko at cheetah in ~
$ python
Python 3.12.0 (main, Oct  2 2023, 20:56:14) [Clang 16.0.3 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Interesting. It doesn't work for me at all
rye config --set default.toolchain=3.11.5
python --version
Python 3.11.4

rye config --set default.toolchain=3.8.5
python --version
Python 3.11.4

rye config --set<EMAIL_ADDRESS>python --version
Python 3.11.4

system info:
OS Name:                   Microsoft Windows 11 Pro
OS Version:                10.0.22621 N/A Build 22621
PowerShell 7.3.7

Yeah, did that by changing the config file itself too, but it doesn't seem to work.

Also for sanity check python points to rye shim:
Get-Command python

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     python.exe                                         <IP_ADDRESS>    C:\Users\RomansPokrovskis\.rye\shims\python.exe

It sounds to me that the shim is not being used. Potentially a different Python overshadows it.

It is pointing to the shim and using the full path to the shim results in the same outcome as well.
System info:
OS Name: Pop!_OS
OS Version:  22.04 LTS

Hey,
thanks for Rye, I've recently started trying it;
I'm experiencing the same on Fedora 38; I checked and the ~/.rye/shims/python is a binary, where is the code that compiles to that binary in the project? Or is the actual python binary (from the downloaded install)?
I am new to rust, but tried to do some digging;
If its the actual binary, this lines in installer.rs struck me as "odd" since they don't do the whole symlinks check that bootstrap.rs does:
If it's in shim.rs as far as I understand, it defers to the get_python_version_request_from_pyenv_pin
Which in turn looks for a .python-version in the  &std::env::current_exe()  I don't know what that resolves to, but I couldn't find any such file in the ~/.rye folder (assuming that's where it's looking), I tried adding on in all the folders with the contents<EMAIL_ADDRESS>but rye kept defaulting to the system python. Also tried in the shell's pwd, without much luck.
I would assume that if if config.global_python() evaluates to something truthy we run the found version, from the ~/.rye/py folder?
$ rye config --get default.toolchain
3.12

$ rye toolchain list
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Hope that helps!
Cheers.

I have the exact same problem too.
$ rye config --get default.toolchain
3.12

$ which python
/home/jim/.rye/shims/python

but executing python gets the 3.10 REPL

It turns out you have to opt-in to have rye resolve to a rye-managed Python installation.
$ rye config --set-bool behavior.global-python=true
It is documented here.

I believe I already had that flag, but double checked anyway:
No change, sadly

I also noticed requires-python = ">= 3.11" in rye's config.toml but manipulating version in any way (or deleting the line) doesn't seem to do anything

Rye only picks up on it's own python versions if one of those two things are true:

you are in a python project (pyproject.toml)
you have global python shims enabled (rye config --set-bool behavior.global-python=true)

Is the latter not working for you or is it insufficient?

I'm closing this as resolved for now. If the current behavior (picking up .python-version) is not sufficient please let me know.


[JustWatchBridge] New bridge

Answer to #3027
This will retrieve new releases from justwatch for every available language. Movies, Series or both together.
I did not add a filter for the provider because there are too many and there is no sensible solution to multiselect apart from "let the user type it".
So I added the provider to the feed item so the user can filter in their reader.

Okay, now it works :) Always the linting.


[libpq:x64-linux] build failure

Host Environment

OS: CentOS 7
Compiler: GCC 8.3.1 (devtoolset-8)

To Reproduce
Steps to reproduce the behavior:
./vcpkg install libpq:x64-linux
Failure logs
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:141 (message):
    Command failed: /usr/bin/make V=1 -j 17 -f Makefile all
    Working Directory: /home/aaron/dev/vcpkg/buildtrees/libpq/x64-linux-dbg
    See logs for more information:
      /home/aaron/dev/vcpkg/buildtrees/libpq/build-x64-linux-dbg-out.log
      /home/aaron/dev/vcpkg/buildtrees/libpq/build-x64-linux-dbg-err.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_build_make.cmake:138 (vcpkg_execute_build_process)
  scripts/cmake/vcpkg_install_make.cmake:24 (vcpkg_build_make)
  ports/libpq/portfile.cmake:277 (vcpkg_install_make)
  scripts/ports.cmake:79 (include)

Error: Building package libpq:x64-linux failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with `./vcpkg update`, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
  Package: libpq:x64-linux
  Vcpkg version: 2020.06.15-unknownhash

Additionally, attach any relevant sections from the log files above.

build-x64-linux-dbg-err.log
build-x64-linux-dbg-out.log
Additional context
I attempted to play around with the "${MAKE}" command set in vcpkg_build_make.cmake:79 but I didn't have any luck getting this package to install.

@Neumann-A Could you please take a look?
Thanks.

I was able to get every port I needed to compile in Ubuntu 20.04, gcc v9.3.0 through my Hyper-V. I might try a fresh install of CentOS 7 (again) to verify I didn't screw something up.

I think our command line is not compatible with other versions of gcc, that caused this issue.

Are there any suggested fixes here I can look into? I am still having this issue. I'm still on CentOS 7 but I was able to upgrade to devtoolset-9 which comes with gcc version 9.3.1. Even if there is a manual workaround I could use would be nice. This has become a blocking issue for me.

Looks like this may have been indirectly fixed in a future commit. Now the problem is all of the broken builds that are currently present on master.
Go ahead and close this issue. Nothing more I can do.

Sorry for hear that, but we can't repro this issue : (

I have similar error too when installing libpq and libpqxx, and my solution is like command below
sudo apt update && sudo apt install -y zip unzip build-essential pkg-config
git clone https://github.com/Microsoft/vcpkg.git
mv vcpkg /opt/
sudo /opt/vcpkg/bootstrap-vcpkg.sh
sudo ln -s /opt/vcpkg/vcpkg /usr/local/bin/vcpkg
cd /opt/vcpkg && git pull
vcpkg install libpq

@evanhutomo Please report a new issue if the current version (15.3) fails to build. This issue was reported three years ago, and your "solution" does unrelated things.


Should use editor indent size

The lint indents the code with an indent of 4, regardless of what indent is set in the editor window.
Ideally, the standalone tool would honor the editorconfig settings.
The specific case I'm encountering is trying to set the indent to 2 but it keeps resetting it to 4.

I can plan to manage editorconfig someday, meanwhile you can override spacesPerIndentLevel of rule "Indentation" in a .groovylintrc.json file at the root of your repo || folder
{
    "extends": "recommended",
    "rules": {
        "Indentation": {
            "spacesPerIndentLevel": 2,
            "severity": "info"
        }
    }
}

For the vscode plugin, it should honor the indent size from the editor window.
Can you pass the indent size from the editor window to the tool?

For the moment there is now way to pass indent size as argument, but it shouldn't be very complicated.
There are 2 things I could do:

Update npm-groovy-lint to get indent size from .editorconfig and override the value defined in rules

2 .Get vscode settings Indent size and send it to npm-groovy-lint to override the value defined in rules
As VsCode autodetects indent size / style (tabs or space) on each file to override its own settings (somewhere where i can't seem to be able to get the value from the extension), solution 1 seems more clean... What is your opinion ?

Using vscode's indent value is the only real sane option for the vscode extension.
Otherwise people will be confused why vscode keeps indenting things one way and saving does it another way.
I think the API you use to get the  indent size and whether to use a tab or not is from FormattingOptions.

Hmmmm i don't want to override an indent size detected by VsCode with the value of VsCode default settings.
What I can do is add a GroovyLint VsCode setting "Force VsCode Indent Settings", and when u'll activate it , it will read the VsCode setting then send it to npm-groovy-lint
About tabs ... as CodeNarc Indentation rule doesn't support it, I don't plan to cover it for now ( but in the future it may be possible if I do replace tab by spaces before lint, then replace back spaces by tabs , but it would be a lot of time of work for a not very requested feature, so ... later ^^

I’m not skilled with the vscode API; I hoped it was for each window.
Sorry.
I agree that it should use the window settings, not the vscode default.
Sent with GitHawk

It is for each Window, but I didn''t find a way to retrieve such value using VsCode API
I asked the question... maybe there is , we'll see :)
https://github.com/microsoft/vscode-languageserver-node/issues/622

They replied ... its possible ! : )
I'll do that someday ^^

Published in 0.15.0 :)
As formatting options are provided only when we trigger a format (contextual menu or save if editor.formatOnSave is enabled), indent issues are not displayed on a document until that
@docwhat  Please reopen if you still see a problem :)