[ENH] Temporary Python arguments prevent tail call optimization in cdef functions

Is your feature request related to a problem? Please describe.
Cython has TCO support due to compiling to C, but it is incomplete due to a slight snag in how it does reference counting.
cdef int loop_tail(s, int i, int nearTo):
    if i < nearTo: return loop_tail(s+0,i+1,nearTo)
    else: return s
cpdef int sequence_tailrec(int fron, int nearTo):
    return loop_tail(0,fron,nearTo)

The issue is that s + 0 creates a new object that only deallocates after the return. Here is the generated C code.
static int __pyx_f_7tailrec_loop_tail(PyObject *__pyx_v_s, int __pyx_v_i, int __pyx_v_nearTo) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("loop_tail", 0);

  /* "tailrec.pyx":2
 * cdef int loop_tail(s, int i, int nearTo):
 *     if i < nearTo: return loop_tail(s+0,i+1,nearTo)             # <<<<<<<<<<<<<<
 *     else: return s
 * cpdef int sequence_tailrec(int fron, int nearTo):
 */
  __pyx_t_1 = ((__pyx_v_i < __pyx_v_nearTo) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_s, __pyx_int_0, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_f_7tailrec_loop_tail(__pyx_t_2, (__pyx_v_i + 1), __pyx_v_nearTo);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "tailrec.pyx":3
 * cdef int loop_tail(s, int i, int nearTo):
 *     if i < nearTo: return loop_tail(s+0,i+1,nearTo)
 *     else: return s             # <<<<<<<<<<<<<<
 * cpdef int sequence_tailrec(int fron, int nearTo):
 *     return loop_tail(0,fron,nearTo)
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_s); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
  }

  /* "tailrec.pyx":1
 * cdef int loop_tail(s, int i, int nearTo):             # <<<<<<<<<<<<<<
 *     if i < nearTo: return loop_tail(s+0,i+1,nearTo)
 *     else: return s
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("tailrec.loop_tail", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

The problem in particular is...
     __pyx_r = __pyx_f_7tailrec_loop_tail(__pyx_t_2, (__pyx_v_i + 1), __pyx_v_nearTo);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

That second line where it decrements the reference after function return is not something the MSVC compiler can optimize out.
Describe the solution you'd like
In order to enable full TCO, Cython would need an alternative to the cdef method statement that has different ref counting semantics to the regular one. The new-style methods should be required to decref their method arguments on return, rather than just their local bindings.
For regular method calls not in the tail position that means that the object references would have to be incremented in advance in anticipation to get the equivalent behavior to the regular ones.
Additional context
cdef int loop_tail(int s, int i, int nearTo):
    if i < nearTo: return loop_tail(s+i,i+1,nearTo)
    else: return s
cpdef int sequence_tailrec(int fron, int nearTo):
    return loop_tail(0,fron,nearTo)

import pyximport
pyximport.install(language_level=3)
import tailrec
print(tailrec.sequence_tailrec(0,2_000_000_000))

On the int example it takes it a second to run to completion and print a number. Whereas if it overflows, it aborts without printing anything.
On the object example I use s+0 instead of s+i to eliminate the possibility of the overflow happening due to Python's unbounded ints.

You are asking for tail call optimisation after (probably) just creating a new Python object, allocating memory for it and initialising it?
I doubt that you would see any difference whatsoever in the runtime if that C level optimisation was applied to your code.

I doubt that you would see any difference whatsoever in the runtime if that C level optimisation was applied to your code.

Do you mean to say that on the toy example the performance will be dominated by the memory allocation? If that is so, I understand that. If TCO worked though, the program would not stack overflow regardless of the number of iterations.

You are asking for tail call optimisation after (probably) just creating a new Python object, allocating memory for it and initialising it?

I am pointing out that any new objects passed in a tail call effectively block TCO because they need to be decref'd after the method returns. For TCO to work, the method call needs to be the last and not followed by a decref.
For this to be the case, Cython needs an alternative construct to the usual cdef functions. This is what I am asking for.
If I were doing a C backend I could fulfil all of the requirements on the Spiral wishlist for it. I could do the same with Cython if I were to compile objects to pointers and do ref counting manually, but I do not know how to deal with exceptions. Exceptions would leave pointers hanging. So I have no choice, but to make a request.

I understand that the C stack limit can become an issue here, so yes, there is a case for TCO.
Just asking, but you are working on a code generator, right? Can't you explicitly generate a loop instead? (I understand that there might be scoping issues involved.)
Did you try changing the C code directly to see if your proposed generated code solves the issue for you?
Could you also try out (manually) if generating two functions, one that behaves as before and one that calls the first and decrefs the input arguments, achieves the desired optimisation if they call each other recursively? This could be done internally without adding new syntax.
Also, did you try it with different C compilers? I'd like to avoid adding a language feature (which would probably stick around forever) for something that is a limitation of a specific C compiler (which might be lifted in a future version).

Just asking, but you are working on a code generator, right?

Spiral is a fully fledged functional programming language. You can get it as an VS Code extension if you are interested. It has first class function, union types, pattern matching, type inference. The whole functional package and never before seen extras like join points.

Can't you explicitly generate a loop instead? (I understand that there might be scoping issues involved.)

Spiral does support while loops, but it does not support imperative features like break, continue and return so they are less flexible. It also does not support stack pointers. So when I do mutable variables, they are heap allocated instead as objects. For that reason, I'd like to avoid using while. Back in 2018 when I worked on the old Spiral, the only reason I put it in is because the Cuda compiler was buggy and could not optimize tail calls that returned tuples.
In a functional language TCO is useful as it provides an efficient way getting the equivalent functionality. It is easy to emulate nested loops, breaks and continues via tail calls. For simple loops, they are a way of avoiding allocating a heap mutable object. Once I got used to programming this way, I found that this style is safer as well.
Spiral does support macros, so imperative features like break, continue and return could be done using them. It would be hacky though.
Looking at it more deeply though, suppose the question you've asked is - why not have Spiral convert the tail calls into a loop instead of leaving it to the C compiler?
I've never really thought about it. I do not know much about TCO myself, but I don't think that it is possible to compile arbitrary tail calls into regular structured programming constructs. For simple ones it might be doable, but TCO is something that really should be left to the C compiler in my view. There are some techniques to get around the lack of TCO on platforms like the JVM. They are inefficient though as they involve using heap allocated stacks and closures. If the C compiler did not support TCO and I had to do it, I'd instead opt to compile to Assembly instead. Of course, this would be much harder than compiling to C.

Could you also try out (manually) if generating two functions, one that behaves as before and one that calls the first and decrefs the input arguments, achieves the desired optimization if they call each other recursively?

It is worth a try. I'll make some time to do it later.

This could be done internally without adding new syntax.

Ok, I see a guide here. I'll have to spend some time thinking about this, I do not understand how Cython's ref counting works in its entirety yet. I understand incref and decref, but that nanny and the other operations is not something I've looked into yet. Are there any more docs on this?
Related to this, I did try one thing.
cdef int loop_tail(int s, int i, int nearTo) except *:
    if i < nearTo: return loop_tail(s+i,i+1,nearTo)
    else: return s
cpdef int sequence_tailrec(int fron, int nearTo) except *:
    return loop_tail(0,fron,nearTo)

Adding except * to this breaks TCO. It is easy to see why that is. Because a check needs to be done after a call, that means the call itself cannot be done in the tail end position in the compiled code.

Also, did you try it with different C compilers? I'd like to avoid adding a language feature (which would probably stick around forever) for something that is a limitation of a specific C compiler (which might be lifted in a future version).

No, I did not. Only with MSVC. But I'd be very impressed if GCC or Clang end up being capable of this because it would require fundamentally changing the semantics of the compiled method.
The transformations MSVC are actually pretty impressive already because the function call in the compiled code does not at all happen in tail position. But the compiler can see that the bind to an intermediate and the goto jump are superfluous and is capable of optimizing them away.
Even without doing the tests you've inquired about, I am certain of the TCO breakage's cause, but I'd be interested to find out if modern C compilers are capable of optimizing all kinds of tail calling functions rather then just this simple one here.

Don't bother with the refnanny. It's not used outside of our test suite. You can just move the recursive call and the DECREF around.

from cpython.ref cimport PyObject, Py_INCREF, Py_DECREF, Py_CLEAR, Py_XDECREF, Py_XINCREF

cdef int loop_tail(s, int i, int nearTo):
    if i < nearTo:
        n = s + i
        Py_DECREF(s)
        return loop_tail(n,i+1,nearTo)
    else:
        # This is not correct and could push the ref count to 0.
        # I need a succinct way of decrefing if the ref count is greater than 1 here.
        # I know that I could use sys.getrefcount, but that would be inefficient and the temporaries introduced by it could ruin TCO.
        Py_DECREF(s)
        return s
cpdef int sequence_tailrec(int fron, int nearTo):
    s = 0
    Py_INCREF(s)
    return loop_tail(0,fron,nearTo)

Ok, I have the Py_DECREF(s) in the right place. But I do not know how to suppress the compiler from generating the code to decref n on the function exit. How should that be done? I know that del can suppress it, but Py_DECREF cannot.

Though I am sure about what is breaking TCO, I've been thinking about the Py_DECREF(s) in the else branch. Originally, I meant to write the above as...
cdef int loop_tail(s, int i, int nearTo):
    if i < nearTo:
        n = s + i
        Py_DECREF(s)
        return loop_tail(n,i+1,nearTo)
    else: return s

Then I realized it would not work, so I made the only fix that made sense which would be to decref if the ref count is greater than 1. But I am not sure whether that rule is sound either. The rule apply that kind of decref if the var is in an return statement and is a function arg seems like a huge hack. I do not know if it would be sound if applied more broadly rather than just on this toy example.
I think it should work, but it would be wiser to try it out for a while until I am sure.
Assuming you can show me how to suppress the compiler from decrefing on its own and how to do decref if greater than 1 efficiently, I'll actually have everything I need to implement what I need.
I do not actually need an alternative cdef statement to make TCO work, but the above two simple features instead. An alternative statement would just be there for interop with regular Cython code which does not incref the arguments before making the call. And even that actually isn't a problem since random code in the wild would not be calling Spiral's unnamed join points. Actual interop points could be compiled to have the usual semantics.

Assuming you can show me how to suppress the compiler from decrefing on its own

To stop Cython from generating it's own reference counting code you use variables of type PyObject*. You can cast these to and from Cython's object (e.g. x = <PyObject*>some_function_call(). The C representation is the same, but Cython doesn't interfere with PyObject* variables.

and how to do decref if greater than 1 efficiently

I don't think there's a built-in way of doing this. You probably just need to write an short (inline?) cdef function that does if Py_REFCNT(o) > 1: Py_DECREF(o)

def f():
    x = "object"
    # No incref due to it being in tail position.
    # Ref count of x: 1.
    g(x)
def g(x):
    a = 1,x
    # Ref count of x: 2
    b = 2,x
    # Ref count of x: 3
    decrefIfGtThan1(x)
    # Ref count of x: 2
    return a,b,x
a,b,x = f()
del a; del b
# Ref count of x: 0
# And yet it is still bound.

I figured out a counter example and here it is. There is a way to make this work, and that would be to shallow copy x before returning it in g. But I am uncomfortable with this approach due to its high churn. I am thinking ahead to how I would do ref counting in a potential C backend, and I am seeing that a copying rule would cause whole arrays to be duplicated before being disposed. Then to get around that flaw I'd have to design such an object structure to hold only the ref count and the pointer to the actual object. But then all object accesses would need to go through two layers of indirection rather than one.
This problem pales in comparison to the fact that shallow copying would only work for native memory and would not work with Python's side effecting disposal. Even if one object gets shallow copied before a return in order to make the ref count valid that still mean GPU memory would get released and file handles would get closed in the other.
How nasty. The current rules of Cython are much cleaner in comparison even if they block TCO.
I am considering closing this issue, but I'll linger on it for a while longer. I'll try asking around, but I am not hopeful about finding a solution to this.

I've figured out how this should work. As it turns out, my initial idea of just returning s in the else branch without refdecing was the right way to go.
 F# is used as a language just to highlight the text. Sorry that I am making you read all this.
let decref s : () = failwith "decrements the reference count"
let incref s : () = failwith "increments the reference count"
let cntref s : int64 = failwith "get the reference count"
let assert_reference_count obj (count : int64) : () = failwith "asserts the reference count"

let rec loop_tail s (i : int64) (nearTo : int64) =
    if i < nearTo then
        let n = s + 0
        assert_reference_count n 1
        decref(s)
        loop_tail n (i+1) nearTo
    else
        s

let test_loop_tail_false () =
    // Unlike in Python, because they are immutable the bindings do not affect the reference count.
    let s : int = 0 // Pretend int is an object here.
    assert_reference_count s 1

    incref s
    let a = loop_tail s 0 0 // Returns s
    assert_reference_count s 2
    assert_reference_count a 2

    incref s
    let b = loop_tail s 0 0 // Returns s
    assert_reference_count s 3
    assert_reference_count a 3
    assert_reference_count b 3

    incref s
    let c = loop_tail s 0 0 // Returns s. Since all of these are the same object, their reference counts are the same.
    assert_reference_count s 4
    assert_reference_count a 4
    assert_reference_count b 4
    assert_reference_count c 4

    // Exits the function. Decrefs s,a,b,c.
    decref s
    assert_reference_count s 3
    assert_reference_count a 3
    assert_reference_count b 3
    assert_reference_count c 3

    decref a
    assert_reference_count s 2
    assert_reference_count a 2
    assert_reference_count b 2
    assert_reference_count c 2

    decref b
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    decref c
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 0

let test_loop_tail_true () =
    // Unlike in Python, because they are immutable the bindings do not affect the reference count.
    let s : int = 0 // Pretend int is an object here.
    assert_reference_count s 1

    incref s
    let a = loop_tail s 0 1 // Visits the true branch once. Decrefs s and return the new object.
    assert_reference_count s 1
    assert_reference_count a 1

    incref s
    let b = loop_tail s 0 1 // Visits the true branch once. Decrefs s and return the new object.
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1

    incref s
    let c = loop_tail s 0 1 // Visits the true branch once. Decrefs s and return the new object.
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    // Exits the function. Decrefs s,a,b,c.
    decref s
    assert_reference_count s 0
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    decref a
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 1
    assert_reference_count c 1

    decref b
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 1

    decref c
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 0

This is how the reference counts should go. The important thing is that s,a,b,c are zeroed out the end of the test. I got way too hung up about decrefing the function arguments in the function itself, not realizing that much like for regular locals, freeing them becomes the responsibility of the new owner.

@da-woods
from cpython.ref cimport PyObject, Py_INCREF, Py_DECREF, Py_CLEAR, Py_XDECREF, Py_XINCREF
cdef loop_tail(s, int i, int nearTo):
    cdef PyObject * n
    if i < nearTo:
        n = <PyObject *> (s + 0)
        Py_DECREF(s)
        return loop_tail(<object> n,i+1,nearTo)
    else: return s

from cpython.ref cimport PyObject, Py_INCREF, Py_DECREF, Py_CLEAR, Py_XDECREF, Py_XINCREF
import sys
cdef loop_tail(s, int i, int nearTo):
    cdef PyObject * n
    if i < nearTo:
        n = <PyObject *> (s + 0)
           ^
------------------------------------------------------------

cython_experiments\test3\testm.pyx:6:12: Storing unsafe C derivative of temporary Python reference

With the proof in mind, hopefully exactly what I want to write should be clear here. Can I get a hand with this? I can't figure out how to write this as I keep getting weird type errors.

To be honest this is more complicated than I remembered. I came up with something like this:
from cpython.ref cimport PyObject, Py_DECREF, Py_INCREF

cdef inline PyObject* getPyObject(object o):
    Py_INCREF(o)  # Cython will always put a decref in on "o" so need to counteract it
    return <PyObject*>o

# In a separate function to keep all Python temp cleanup code out of loop_tail
cdef PyObject* splus0(PyObject* s) except NULL:
    return getPyObject(<object>s+0)

cdef PyObject* loop_tail(PyObject* s, int i, int nearTo) except NULL:
    cdef PyObject *n
    if i < nearTo:
        n = splus0(s)
        Py_DECREF(<object>s)
        return loop_tail(n, i+1, nearTo)
    else:
        return s

def run_loop_tail(s, i, nearTo):
    Py_INCREF(s)
    return <object>loop_tail(<PyObject*>s, i, nearTo)

Even so this gives me something like:
static PyObject *__pyx_f_6pyxobj_loop_tail(PyObject *__pyx_v_s, int __pyx_v_i, int __pyx_v_nearTo) {
  PyObject *__pyx_v_n;
  PyObject *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("loop_tail", 0);
  __pyx_t_1 = ((__pyx_v_i < __pyx_v_nearTo) != 0);
  if (__pyx_t_1) {
     __pyx_t_2 = __pyx_f_6pyxobj_splus0(__pyx_v_s); if (unlikely(__pyx_t_2 == ((PyObject *)NULL))) __PYX_ERR(0, 13, __pyx_L1_error)
    __pyx_v_n = __pyx_t_2;
    Py_DECREF(((PyObject *)__pyx_v_s));
    __pyx_t_2 = __pyx_f_6pyxobj_loop_tail(__pyx_v_n, (__pyx_v_i + 1), __pyx_v_nearTo); if (unlikely(__pyx_t_2 == ((PyObject *)NULL))) __PYX_ERR(0, 15, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }
  /*else*/ {
    __pyx_r = __pyx_v_s;
    goto __pyx_L0;
  }
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyxobj.loop_tail", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

Which doesn't look like the sort of thing that'd be readily tail-call optimized (and if I try it with a large enough `nearTo` then I get a segmentation fault, suggesting it probably isn't optimized).

Having tried it I think you'll really struggle to persuade Cython to generate code in the format you want. I don't really know what to suggest.

@da-woods You got very close to the solution. The reason why it is stack overflowing is because of that except NULL in cdef PyObject* loop_tail(PyObject* s, int i, int nearTo) except NULL:. That exception check has to come after the return in the generated code, so of course TCO cannot work. When written like cdef PyObject* loop_tail(PyObject* s, int i, int nearTo): it should work.

from cpython.ref cimport PyObject, Py_DECREF, Py_INCREF

cdef inline PyObject* getPyObject(object o):
    Py_INCREF(o)  # Cython will always put a decref in on "o" so need to counteract it
    return <PyObject*>o

# In a separate function to keep all Python temp cleanup code out of loop_tail
cdef PyObject* splus0(PyObject* s) except NULL:
    return getPyObject(<object>s+0)

cdef PyObject* loop_tail(PyObject* s, int i, int nearTo):
    cdef PyObject *n
    if i < nearTo:
        n = splus0(s)
        Py_DECREF(<object>s)
        return loop_tail(n, i+1, nearTo)
    else:
        return s

def run_loop_tail(s, i, nearTo):
    # When in tail-end position, s should not be incref'd.
    return <object>loop_tail(<PyObject*>s, i, nearTo)

def main(): return run_loop_tail(0,0,1_000_000_000)

This works for me, thank you @da-woods . As the comment says, under my ref counting scheme, args should not be incref'd in tail calls.
Thanks to this experience I realized that the way I thought Cython was doing ref counting was not right.
@scoder You said that...

I'd like to avoid adding a language feature (which would probably stick around forever) for something that is a limitation of a specific C compiler (which might be lifted in a future version).

As a counter point that this is not a limitation of the C compiler consider the identity function cdef id(x): return x.
/* "testm.pyx":41
 * #     print(sys.getrefcount(s)) # 1
 *
 * cdef id(x): return x             # <<<<<<<<<<<<<<
 *
 * def main():
 */

static PyObject *__pyx_f_5testm_id(PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("id", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_r = __pyx_v_x;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

Note the __Pyx_INCREF(__pyx_v_x);. It increfs the argument before returning it.
In F#-styled pseudocode, this would be the same as writing.
let id x =
    incref x
    x

Under my own ref counting proposal this would be done without the incref
let id x = x

Now way can one be optimized to be the other. For comparison, here is how the loop_tail would be written in pseudocode. This is the scheme Cython uses currently.
let decref s : unit = failwith "decrements the reference count"
let incref s : unit = failwith "increments the reference count"
let cntref s : int64 = failwith "get the reference count"
let assert_reference_count obj (count : int) : unit = failwith "asserts the reference count"

let rec loop_tail' s i nearTo =
    if i < nearTo then
        let n = s + 0
        assert_reference_count n 1
        let r = loop_tail' n (i+1) nearTo
        decref n
        r
    else
        incref s
        s

let test_loop_tail_false () =
    let s : int = 0 // Pretend int is an object here.
    assert_reference_count s 1

    let a = loop_tail' s 0 0 // Increfs s and returns it
    assert_reference_count s 2
    assert_reference_count a 2

    let b = loop_tail' s 0 0 // Increfs s and returns it
    assert_reference_count s 3
    assert_reference_count a 3
    assert_reference_count b 3

    let c = loop_tail' s 0 0 // Increfs s and returns it
    assert_reference_count s 4
    assert_reference_count a 4
    assert_reference_count b 4
    assert_reference_count c 4

    // Exits the function. Decrefs s,a,b,c.
    decref s
    assert_reference_count s 3
    assert_reference_count a 3
    assert_reference_count b 3
    assert_reference_count c 3

    decref a
    assert_reference_count s 2
    assert_reference_count a 2
    assert_reference_count b 2
    assert_reference_count c 2

    decref b
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    decref c
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 0

let test_loop_tail_true () =
    // Unlike in Python, because they are immutable the bindings do not affect the reference count.
    let s : int = 0 // Pretend int is an object here.
    assert_reference_count s 1

    let a = loop_tail' s 0 1 // Visits the true branch once creating a new object. Incref's it on the next iteration, and then decrefs it before the return.
    assert_reference_count s 1
    assert_reference_count a 1

    let b = loop_tail' s 0 1 // Visits the true branch once creating a new object. Incref's it on the next iteration, and then decrefs it before the return.
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1

    let c = loop_tail' s 0 1 // Visits the true branch once creating a new object. Incref's it on the next iteration, and then decrefs it before the return.
    assert_reference_count s 1
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    // Exits the function. Decrefs s,a,b,c.
    decref s
    assert_reference_count s 0
    assert_reference_count a 1
    assert_reference_count b 1
    assert_reference_count c 1

    decref a
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 1
    assert_reference_count c 1

    decref b
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 1

    decref c
    assert_reference_count s 0
    assert_reference_count a 0
    assert_reference_count b 0
    assert_reference_count c 0

Not a limitation of the compiler. Hopefully all of this should serve as proof why a different ref counting scheme would need Cython's language support.
I only figured out last night that the fun args being returned are being incref'd. This is part of the reason why I got confused about my own proposal until I thought it through more in depth. Under my incorrect mental model of the standard scheme, I expected that def id(x): return x would just return the arg without changing the ref count.

I only figured out last night that the fun args being returned are being incref'd

I don't think I got it. Why is that an issue?

I don't think I got it. Why is that an issue?

It isn't. It is is just some background info on my thought process.
At any rate, hopefully I have made my case for why a different way of doing ref counting would be necessary in order to enable TCO. For myself, I feel that coming to an understanding of ref counting has been a great benefit. I'll probably do a C backend at some point and being able to move beyond manual memory management will be a great gain in capability.


nodeDragThreshold delay selection unexpectedly

Describe the Bug
If I set nodeDragThreshold to a positive number, the selection delayed unexpectedly, single click event can't trigger selection (both selected in node prop and onSelectionChange) anymore. Is this expected?
Your Example Website or App
https://codesandbox.io/s/quiet-snow-f53wt4?file=/CustomNode.jsx:1407-1485
Steps to Reproduce the Bug or Issue
click the custom node, then drag the custom node.
Expected behavior
selection can be triggered by click event
Screenshots or Videos
No response
Platform

OS: Linux
Browser: Chrome
Version: 117.0.5938.92

Additional context
No response

🧐 what is happening here? And why is this only an issue for custom nodes? I will check it! In the meantime you can set  selectNodesOnDrag={false} as a workaround.

Thanks! This is fixed in 11.9.3


[Feature]: Customize Text / Code

Describe the Request
An Option to change the text and code, for example the coordinates code is "%.3f  %.5f %.5f" , so an ability to change that. like the minihud mod does:
Screenshots

Modloader Type
No response
Modloader Version
No response
Additional Context
No response

format*

Closing in favor of #55


Dangerously close to reinventing the wheel

Hey Andrii (@pasichDev),
Might as well say this now, in these early stages, than say it later when you've invested too much time in this architecture.
With a router(/dispatcher), a semblance of controllers and a very rudimentary layout/templating system, we are now in the middle of SlimPHP's territory.
So my arguments are these:

Granted, you don't need a framework for this, but by using one you don't have to create and test the boilerplate code for the basics.
At the moment, your code is functional but lacks any ways of testing it via automation, the Continuous Integration of the CI/CD pair.

Yes, you can curse me and throw a fit of rage, cuz in essence this would be another re-write :frowning_face:
Hence me creating this issue now, so we can discuss this possible change of path.
Hint: This should be a discussion and I think you should open that area on the Project settings :smiley:
Have you ever done any work using the SlimPHP framework?
At the moment, SlimPHP is the most light weight of all the PHP frameworks, usually used for very simple projects or for rapid prototyping of a possible more complex one.
What are your thoughts on this subject?
Cheers,
Gus

https://www.slimframework.com/
https://github.com/slimphp

hi @gcarreno , I opened the discussion
https://github.com/pasichDev/noso-faucet/discussions/25


updateOverrides with provider.overrideWith does not seem to work

Describe the bug
ProviderContainer.updateOverrides does not seem to work with overrideWith (with neither sync not async provider)
To Reproduce
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  final myProvider1 = Provider((a) => "provider 1");
  final myProvider2 = Provider((a) => "provider 2");

  test('test', () async {
    final container = ProviderContainer(
      overrides: [
        myProvider1.overrideWithValue("override 1"),
        myProvider2.overrideWith((_) => "override 1")
      ],
    );

    var value1 = container.read(myProvider1);
    var value2 = container.read(myProvider2);
    expect(value1, "override 1");
    expect(value2, "override 1");

    container.updateOverrides([
      myProvider1.overrideWithValue("override 2"),
      myProvider2.overrideWith((_) => "override 2"),
    ]);

    await container.pump();
    value1 =  container.read(myProvider1);
    value2 =  container.read(myProvider2);
    expect(value1, "override 2");
    expect(value2, "override 2"); // does not pass
  });
}

Expected behavior
overrideWith should work with updateOverrides
Tester with latest riverpod 2.6.1

That is the expected behaviour.  The goal of overrideWith is to offer a behaviour similar to that of a "global" provider ; including the cache behaviour.
At the same time, we cannot detect if the callback passed was meaningfully changed or not.
ProviderScope called updateOverrides whenever the widget rebuilds. But in the context of Flutter, that's mean overrideWith would receive a new callback everytimes.
This would kill overrideWith's ability to cache values.


Allow IRpcClient creation with custom HttpClient

Status
Type
⚠ Core Change
Issue

Ready
Refactor
Yes
#230

Problem
See #230
Solution
Added optional HttpClient argument to the end of ClientFactory.GetClient methods.
Added overloaded versions of GetClient methods to provide backwards compatibility with libraries and existing code that invoked GetClient without naming optional arguments.

Fixed issue #230 and created 0.4.12


Type annotate apistar.exceptions

kwargs could probably be annotated more concrete than Any, eg. Union[str, dict, int] (since that are the currently only possible kwargs in APIException), however this raises the following errors:
apistar/exceptions.py:31: error: Argument 2 to "__init__" of "APIException" has incompatible type **Dict[str, Union[str, Dict[Any, Any], int]]; expected "Union[str, Dict[Any, Any]]"
apistar/exceptions.py:31: error: Argument 2 to "__init__" of "APIException" has incompatible type **Dict[str, Union[str, Dict[Any, Any], int]]; expected "int"

This seems related to an issue with mypy: https://github.com/python/mypy/issues/1969
That's why I went with Any for the kwargs. I hope this is helpful 😊
Related issue #87

Great 👍 .
For annotated functions/methods, I reckon we should also move to this style consistently:
def foo(self,
             something: Stuu
             another: Annotation) -> Blah

But welcome to tackle that separately.

This doesn't look so nice when there's only one argument, in my opinion. What you wanna do in this case?
def foo(self,
        something: Stuu) -> Blah:

Slightly undecided. Possibly do it for all annotated signatures always, or possibly don't worry about short ones.


Support x86 windows

Add trampolines for x86 windows.
Closes https://github.com/astral-sh/uv/issues/3660.

I've confirmed that this works with portable 32-bit python 3.12 and an i686-pc-windows-msvc build, though on a 64-bit windows.


Dependency error with Unity 2020.3.14f1

The package caused a dependency issue with Unity 2020.3.14f1 because it requires a minimum HDRP version of 11.0.0.
The  maximum HDRP package version that can be installed in this Unity version is 10.5.1.
This leads to a dependency error and in my case it uninstalled the HDRP package completely.

Ah yes indeed, I'll update the package json file as soon as I can

Sorry I've just seen your PR, if you put the min version to 10.1.0 (first non-preview 10.x version of HDRP) I can merge your PR

Sry I misread your version compatibility table. I missed the X's.
I changed the version requirement to 10.1.0.

Thanks for the PR!


cri-containerd load image failed

When I load an image with the command bellow:
cri-containerd load pause.tar

an error occurd:
Error: failed to load image: rpc error: code = Unknown desc = failed to import image: create docker manifest: layer "3a260e652b2585d5feaaf04ae480827caeba0adbc77fb84cfc6427302063cb05/layer.tar" not found

It works well with Docker.
The circtl vision:
Version:  0.1.0
RuntimeName:  cri-containerd
RuntimeVersion:  1.0.0-beta.1
RuntimeApiVersion:  0.0.0

@hmtai How do you create the pause.tar.
I tried with k8s.gcr.io/pause-amd64:3.1, and it works for me:
$ sudo ctrcri --address=/run/containerd/containerd.sock load pause.tar
Loaded image: k8s.gcr.io/pause-amd64:3.1

Works here...
mike@mike-VirtualBox:~/go/src/github.com/containerd/cri-containerd$ sudo docker pull k8s.gcr.io/pause-amd64:3.1
3.1: Pulling from pause-amd64
67ddbfb20a22: Pull complete
Digest: sha256:59eec8837a4d942cc19a52b8c09ea75121acc38114a2c68b98983ce9356b8610
Status: Downloaded newer image for k8s.gcr.io/pause-amd64:3.1
mike@mike-VirtualBox:~/go/src/github.com/containerd/cri-containerd$ sudo docker save k8s.gcr.io/pause-amd64:3.1 > pause.tar
mike@mike-VirtualBox:~/go/src/github.com/containerd/cri-containerd$ ls pause.tar
pause.tar
mike@mike-VirtualBox:~/go/src/github.com/containerd/cri-containerd$ sudo ctrcri load pause.tar
Loaded image: k8s.gcr.io/pause-amd64:3.1

@Random-Liu I use docker save .I can not find the command ctrcri.How to use ctrcri?
docker save  k8s.gcr.io/pause-amd64:3.0 -o my-pause.tar

@Random-Liu @mikebrow cri-containerd load can not load the image which has link image layer?

@hmtai What do you mean by "link image layer?

@hmtai Yeah, symlink file is skipped https://github.com/containerd/cri-containerd/blob/master/pkg/containerd/importer/importer.go#L104.
I think it is for security consideration. @AkihiroSuda
Why 648a008b041c2bed7d854226dfa4a40476222c9b081a879e74b0b6bcc7578e13/layer.tar is a symlink to ../768d4f50f65f00831244703e57f64134771289e3de919a576441c9140e037ea2/layer.tar...

docker save will create symlink for some layers https://github.com/moby/moby/blob/master/image/tarexport/save.go#L378-L385, we may not skip the symlink file?

We should fix this.


unicase with phf_map

First, there is no unicase_support feature.
So test_unicase and test_unicase_alt are disabled.
And if we try to run them, compilation fails:
$ cargo test --all-features
error: unsupported key expression
   --> phf_macros/tests/test.rs:245:13
    |
245 |             UniCase("FOO") => 10,
    |             ^^^^^^^^^^^^^^

error: unsupported key expression
   --> phf_macros/tests/test.rs:258:13
    |
258 |             unicase::UniCase("FOO") => 10,
    |             ^^^^^^^^^^^^^^^^^^^^^^^

error[E0423]: expected function, found struct `UniCase`
   --> phf_macros/tests/test.rs:248:39
    |
248 |         assert!(Some(&10) == MAP.get(&UniCase("FOo")));
    |                                       ^^^^^^^ constructor is not visible here due to private fields
...

I would like to make this map case insensitive.
Thanks.

I thought unicase wes added in #82?

@pickfire unicase was added and then removed.

Isn't it in dev dependencies? https://github.com/sfackler/rust-phf/pull/184/files#diff-e433d09e473f440e39bebfdeff5377dcR29

Here's what I got when I try to compile:
error: unsupported key expression
  --> src/line.rs:75:5
   |
75 |     UniCase::new(".INC") => Statement::Include,
   |     ^^^^^^^^^^^^^^^^^^^^
   |
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

and when trying with Ascii which has a const new() constructor:
error: unsupported key expression
  --> src/line.rs:75:5
   |
75 |     Ascii::new(".INC") => Statement::Include,
   |     ^^^^^^^^^^^^^^^^^^
   |
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `Ascii<&str>: PhfHash` is not satisfied
   --> src/line.rs:150:16
    |
150 |     STATEMENTS.get(&Ascii::new(statement)).cloned()
    |                ^^^ the trait `PhfHash` is not implemented for `Ascii<&str>`

The unicase_support feature was re-added by #209.


Write a C program to print numbers from 1 to n

Description
Write a C program to print numbers from 1 to n
Input  : 5
Output : 1 2 3 4 5

How to contribute

Save the solution in PrintNumbersFrom1ToN.c file
Add PrintNumbersFrom1ToN.c file in program/print-numbers-from-1-to-n folder

!assign


change the way of RU report

Enhancement
For now, tiflash report RU usage to prometheus. Should report to PD/GAC just like tidb/tikv.
Detail:

when tiflash config of enable_resource_control is true, report RU usage to PD/GAC using LAC::consumeResource(), and background thread of LAC will report it to PD/GAC
when tiflash config of enable_resource_control is false, report RU usage to PD/GAC using PD GRPC API directly.

No need to add switcher. And RU report will be included in LAC::consumeResource, so no need to add another path for reporting RU.


Error: Failed to resolve entry for package "@ark-ui/vue".

Getting errors with Nuxt:

Component:
<script setup lang="ts">
import {
  Tooltip,
  TooltipContent,
  TooltipPositioner,
  TooltipTrigger,
} from '@ark-ui/vue'

defineProps<{
  icon: string
  label: string
  description?: string
}>()
</script>

<template>
  <Tooltip flex items-center text-label text-xs>
    <TooltipTrigger>
      <Icon :name="icon" label-icon mr-1 /> {{ label }}
    </TooltipTrigger>
    <TooltipPositioner>
      <TooltipContent>{{ description }}</TooltipContent>
    </TooltipPositioner>
  </Tooltip>
</template>

Thanks for reporting the issue. What version do you use? Can you provide a sandbox?

Nuxt 3.4.1
@ark-ui/vue 0.0.0-rc-20221106094212
Here's a simple Stackblitz with the error:
https://stackblitz.com/edit/nuxt-ark-ui-failed-to-resolve

There was an issue in this old version from 2022. Please use the latest version: https://stackblitz.com/edit/nuxt-ark-ui-failed-to-resolve-ifmdwq

Thanks, works 🙏🏽
The one from my repro was the one I got with pnpm i @ark-ui/vue. Would be great to publish that working one maybe.

We filed a 0.1.0 release today. :)

Amazing!


Spark Connector sends FloatArray as String

Describe the bug
I am using node2vec to generate graph embeddings for my graph. I use the following code and it works fine - it successfully saves the embeddings in the graph stored in neo4j under 'topological embeddings' property name
gds.node2vec.write(graph, writeProperty='topological_embeddings)

But when I am reading the graph in the next step when conducting dimensionality reduction (df corresponds to a spark dataframe with nodes and topological embeddings as cols):
df = df.withColumn("features", array_to_vector('topological_embeddings))

I get the following error:
pyspark.errors.exceptions.captured.AnalysisException: [UNSUPPORTED_DESERIALIZER.DATA_TYPE_MISMATCH] The deserializer is not supported: need a(n) "ARRAY" field but got "STRING".

This is not happening when I use GraphSage and write the embeddings in the following format
model, attr =  gds.beta.graphsage.train(graph)
model = gds.model.get('topological_embeddings')
model.predict_write(graph, writeProperty='topological_embeddings')

Have you experienced anything like this? seems like the .write() function in the python client saves the embeddings as strings?
graphdatascience library version:
GDS plugin version: 2.7.0
Python version: 3.11
Neo4j version: 5.21.0
Operating system: macOS

Hello @piotrkan,
Thanks for reporting this. I've tried to reproduce this with your reproducer, but what I get back is always an array<double> with pyspark;
DataFrame[<id>: bigint, <labels>: array<string>, topological_embedding: array<double>, name: string]

with similar results with spark through JVM;
root
 |-- <id>: long (nullable = false)
 |-- <labels>: array (nullable = true)
 |    |-- element: string (containsNull = true)
 |-- topological_embedding: array (nullable = true)
 |    |-- element: double (containsNull = true)
 |-- name: string (nullable = true)

I have one theory though. Is it possible that you have a property named topological_embedding in your graph which is typed as a string? Spark connector derives schema information by performing a sampling, so that's a possible option in my opinion. If that's the case, I suggest you to define your schema beforehand as shown in here.
I'll keep the issue open for a few days until I hear back from you.

Closing this as we've not heard back from you. Feel free to re-open if the above suggestion did not work for you.


Add VCS info panel as a third-party panel

I released third-party panel django-rebug-toolbar-vcs-info which enables to displays VCS information on the debug toolbar.
https://github.com/giginet/django-debug-toolbar-vcs-info
So I added it to the official document.
Please check it if you would like.

Thanks!


Firebase hosting support

It would be great if we can support hosting on Firebase. If we already support that, it would be great if you can show me how, or link me some reference that I can find out how to do it by myself.
Thanks !

Dealt with in #105


Exclude test files from glob pattern

See https://github.com/nuxt/nuxt/issues/20404.

This is a very good issue - thanks for pointing it out.
I feel this change may make the provided options more complex for developers and it gets used in their configuration. The module does provide an option to provide content as a function to override it, but that's still some work required from developers.
Do you think that maybe adding a separate glob string to the list may be useful? Something like:
`!${srcDir}/**/*.{spec,test}.*` // mind the ! at the start

@ineshbose @Atinux sorry for late response, just came back from a weekend trip. Yea sure, the solution you @ineshbose provided is way more clean and readable.
@Atinux just updated the docs.

Will make a release once we fix the tests

@maartenvanhunsel @Atinux why removing app.config from parsed files ?

@Atinux @ineshbose just had time to test if the error still occurred and unfortunately it is.
Seems ${srcDir}/components/**/*.{vue,js,ts} is causing the error. ${srcDir}/components/**/!(*.{test,spec}).{vue,js,ts} is solving this.
See reproduction with updated Nuxt tailwind version: https://stackblitz.com/edit/github-huekcx-ch2uja?file=nuxt.config.ts
Any thoughts?

@maartenvanhunsel thanks for reporting back; I did have minor hesitations with that, and your new glob seems to be working better. So if we generalise it to other directories and extensions, would this work? (Stackblitz is acting weird for me to test changes)
  `${srcDir}/**/!(*.{test,spec}).*`

Please feel free to open a new PR btw!

@ineshbose I've already tested a lot of glob patterns but couldn't make it work with the exclude glob pattern. ${srcDir}/components/**/*.{vue,js,ts} is still causing the error.

Oh, you meant that the glob is a modification to the first string rather than appending. Let's investigate further then!

You're very right.
I'm unable to think of how to solve this without modifying the existing content paths - but then they may get complicated. The added glob is not really helping (and in my case seems to be increasing the load for JIT).
Moreover, there are also more cases like *.{stories,story}.* that may need to be covered if we are to exclude such files from content configuration.
My thinking is to put the configuration to be done by developers in this case (since the module already provides content overriding option) and modify the documentation for it with an example for this; because there may be many ways that developers organise their test files (like if it were in a test/ directory, this wouldn't be an issue).
export default {
  content (contentDefaults) {
    return [
       ...contentDefaults,
       // contentDefaults.map(c => c.endsWith('/**/*.{vue,js,ts}') ? c..replace('/**/*.{vue,js,ts}', '/**/!(*.{test,spec}).{vue,js,ts}') : c),
       contentDefaults[0].replace('/**/*.{vue,js,ts}', '/**/!(*.{test,spec}).{vue,js,ts}'),
    ]
  }
}

What do you say @maartenvanhunsel ? While I'd love the module to consider ignoring tests out the box, it may be counter-intuitive for maintainability (although Atinux is the one who will call the shots 😄).
Please do share if an ideal solution comes to mind.

@ineshbose that's exactly my workaround I'm already using haha ;)
This workaround is perfect to me, however it will take time to investigate for new people who encounter this errors because the logs are not very clear.

Coming back to this PR after the content paths provided by the module are more dynamic and in-line with the nuxt.config, I wonder if we can add in https://nuxt.com/docs/api/nuxt-config#ignore globs to be ignored.


Client-How to communicate with the server using tls-psk encryption mode?

Describe your question
I have a project that needs to communicate with an existing MQTT server.
The MQTT server uses tls-psk encryption.
I set the. WithTls () method directly and throw an exception "Win32Exception: Because of the different algorithms, the client and server can not communicate" when calling the. ConnectAsync () method.
I hope experts can help me. Thank you very much.
Which project is your bug related to?

Client

Which version of MQTTnet are you using and which platform is the client running on (UWP, .NetCore, .NetFramwork, Xamarin, ...)?

Which version of MQTTnet are you using and which platform is the client running on (UWP, .NetCore, .NetFramwork, Xamarin, ...)?

.NetCore

.NetCore version: 3.0
Preview 7?

I'm not yet sure whether this is supported yet. @chkr1011 Do you have details here?

.NetCore version: 3.0
Preview 7?

I'm not yet sure whether this is supported yet. @chkr1011 Do you have details here?

.NetCore version: 3.0-Preview 7
But what I want to consult is how to set the client encryption mode to tls-psk.
The server partner gave me information for connection validation:
Host: tcp://172.18.xxx.xxx:8xxxx
User name: Java Publishxxxxx
Password: XXXXXXXX
Pskid: hFxasjBiMWaSaxxxxxx
PskString: pupkNACiqzk2kTwxxxxx
I don't know how to set the parameters "pskid" and "pskString" in MqttClient.

I don't know how to set the parameters "pskid" and "pskString" in MqttClient.

Yes, I did understand that. I don't know if this is even supported yet. This is something, @chkr1011 (I'm not into the code that deep yet) needs to answer. He is the owner and also main developer here ;)

I don't know how to set the parameters "pskid" and "pskString" in MqttClient.

Yes, I did understand that. I don't know if this is even supported yet. This is something, @chkr1011 (I'm not into the code that deep yet) needs to answer. He is the owner and also main developer here ;)

Well, thank you for your answer.

Based on the content of MqttClientTlsOptions.cs I assume that TLS-PSK encryption is not supported by MQTTnet.

This library makes use of the TLS stream from .net. So if a particular feature is not available in these implementations we also do not support it. This library exposes all APIs from the TLS stream which are available. If there is something missing I assume we cannot do much to solve this issue.


HED Validation Evidence: ERROR: [HED_PLACEHOLDER_INVALID]

What happened?
Hello,
I try to run the fmriprep command (see below), but it always stops immediately due to some error in the BIDS validation with bids validator 1.8.0.
I get this message in the log: [ERR] The validation on this HED string returned an error. (code: 104 - HED_ERROR), I attached a longer long section below.
I tried to validate the HED conformity of my events.json file with this tool: https://hedtools.ucsd.edu/hed/sidecar, which gives me no error.
So I assume that there must be something wrong with the fmriprep implementation of the latest version.
Could you check this or let me know if you see another reason why this would happen?
Thank you!
What command did you use?
nohup fmriprep-docker --no-tty /nfs/DMT_HAR_MED_mri_data/BIDS/Pilotdata /nfs/DMT_HAR_MED_mri_data/BIDS/Pilotdata/derivatives/fmriprep participant --participant-label 03 --me-output-echos --use-aroma --skull-strip-t1w force --fs-license-file /opt/freesurfer-license.txt --write-graph > run.log

What version of fMRIPrep are you running?
22.0.2
How are you running fMRIPrep?
Docker
Is your data BIDS valid?
Yes
Are you reusing any previously computed results?
No
Please copy and paste any relevant log output.
cat run.log
<EMAIL_ADDRESS>
	1: [ERR] The validation on this HED string returned an error. (code: 104 - HED_ERROR)
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/emotional_non-tom" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/emotional_tom" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/neutral_non-tom" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/neutral_tom" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/8.0.0" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/1" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/2" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/3" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/4" is missing a required placeholder.
		./task-empatom_events.json
			Evidence: ERROR: [HED_PLACEHOLDER_INVALID] HED value string "Label/0" is missing a required placeholder.
		... and 32 more files having this issue (Use --verbose to see them all).

	Please visit https://neurostars.org/search?q=HED_ERROR for existing conversations about this issue.

	1: [WARN] The Authors field of dataset_description.json should contain an array of fields - with one author per field. This was triggered based on the presence of only one author field. Please ignore if all contributors are already properly listed. (code: 102 - TOO_FEW_AUTHORS)

	Please visit https://neurostars.org/search?q=TOO_FEW_AUTHORS for existing conversations about this issue.

Additional information / screenshots
No response

Can you try out your data with the latest BIDS validator (https://bids-standard.github.io/bids-validator/) and see if it's still an issue? If so, we can open an issue in their repo https://github.com/bids-standard/bids-validator
For the meantime, you can bypass the validation step with the --skip-bids-validation flag

Thanks for the response. I tried, apparently there is something wrong with my HED annotation of the events.tsv and  events.json files. I really tried to figure out how HED works, but it seems very confusing. Is there a good elaborate example that shows a correct implementation?
Bypassing the validation works.
Thanks!

I don't know much on HED either, but have you validated the events with https://hedtools.ucsd.edu/hed/events (note this is a different validation than the sidecars https://hedtools.ucsd.edu/hed/sidecar)


Add Azure DevOps

Try adding Azure DevOps, with some more-advanced pipelining (multiple stages, etc.)

Codecov Report

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

@@            Coverage Diff            @@
##            master      #116   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           11        11
  Lines          589       589
=========================================
  Hits           589       589

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 4c14e69...db6974a. Read the comment docs.


Fixed issue #6558

Issue Reference
#6558
Description
Fixed CSS issue on booking product

@akathuria289
Nor working, please find the screenshot Here
please compile the file  run npm run prod

@akathuria289
This is  working fine, please find the screenshot Here

Done


re-order the vending machine example

I think this ordering makes more clear that developing total state machines in idris looks something like

represent the state with an enumerated type (or something more complicated)
represent a specification for state transitions using a GAD(D?)T of commands, with the types encoding pre- and post-conditions.
Implement handlers that attempt to run the corresponding commands but are total over the state, i.e. the handlers never cause the program to crash, and the handlers must satisfy the pre-conditions of all commands they invoke. Also, implement some sort of abstract event loop (machineLoop in this case).
implement a concrete interpreter (runMachine and run in this case).

and in particular emphasizes that the specification is almost completely distinct from the implementation, with the specification focused on conveying correctness through pre- and post-conditions and the implementation focusing on totality or handling failure cases or whatever.
Yes, it is distinct from the book, but whatever.
Also, this is literally my first day with the idris book so let me know if I'm wildly off-base. Thanks so much for all this work! I'm really excited for the day when I can use idris, or something like it, in production.

also, can you comment about how this relates to Effects? Effects seems to take the pattern I mentioned in the original comment and formalize it, but as far as I can tell Effects is not gone over in the book.
I'd also like to know how you can deal with indexed state, e.g. your state is a mapping of usernames -> pull requests and you'd like to assert some pre-conditions in the commands like "is this user present (in the list/dictionary)" or "this user has at least one pull request" or whatever, handling the failure cases in the handlers.


chore(main): release 1.3.0

:robot: I have created a release beep boop
1.3.0 (2024-07-17)
Features

adding script that resets version and changelog (#13) (b5d4e37)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Injsted/next-template/releases/tag/v1.3.0 :sunflower:


Updated link to Microsoft SQL Server backend.

Since this is a trivial documentation change, I have made the change directly against main. I have read the contribution guidelines and deemed a URL change basically as trivial as a typo and have therefore not opened a Trac ticket.
Microsoft took on the role of maintaining an adapter package for MS SQL server compatibility. The package on PyPI can be located at https://pypi.org/project/mssql-django/
Microsoft made a blog post announcing the version 1.0 general release of the adapter package on their tech community blog on 17-Aug-2021. As at the time of writing, they have released version 1.1.1
Microsoft's package started out as being a copy of the package currently mentioned in the docs. Warren, a Development Manager, at Microsoft first mentioned the support in this GitHub issue. This means that this package would supersede any cases where django-mssql-backend was used before.

@WayneLambert Thanks :+1: Welcome aboard :boat:


Orbot remains in state “Disabled” after upgrade to iOS 18.0

Nothing visible happens when pressing the “Start” button. Orbot (version 1.7.1, build 49) worked fine before the upgrade to iOS 18.0.

Precision: If you go to Settings => General => VPN & Device Management => VPN and switch there from the currently used VPN to Orbot, clicking on “Start” in Orbot works. Previously, the step in the settings was not necessary.

Weird. I finally updated my first device to iOS 18. (I admit, I'm reluctant, since Apple proved time and again, that the .0 versions are often very buggy.)
I could not reproduce such a behaviour with said version.
Anyway, I'll issue an update soon, built in Xcode 16 with a newer Tor. Maybe that helps you!

https://github.com/guardianproject/orbot-apple/releases/tag/v1.7.2


Flash only - not QSPI PSRAM

Sample runs with QSPI Flash - but not PSRAM

MTP SDIO or SD SPI only simplified example


Need aarch64 release, for both macOS and Linux

Is your feature request related to a problem? Please describe.
There is no release for aarch64 architecture
Describe the solution you'd like
Please release a package which is compiled for aarch64 architecture specially for linux (debian, arch). am64 releases includes binary plugins for IDA Pro, so they are also in amd64 release.

Note that the existing macOS package is a universal build that includes both AArch64 and AMD64 support. This is true for the IDA Pro plugins, the Binary Ninja plugins and the command-line differ.
For Linux, we can definitely build a version for AArch64, but to my knowledge, there is no version of IDA Pro that supports this natively. The situation is similar on Windows on ARM.

After installing font-robot on my linux aarch system, I can install the deb package with dpkg -i command.

no problem on bindiff itself
works on ghidra

as you also mentioned no ida on aarch system/
close #33


[Bug]: Cannot update Mattermost, Mattermost cannot be closed try again

Checks before filing an issue

[X] This issue doesn't reproduce on web browsers (such as in Chrome). If it does, issue reports go to the Mattermost Server repository.
[X] I have checked the issue tracker and have not found an issue that matches the one I'm filing.
[X] This issue is not a troubleshooting question. Troubleshooting questions go here: https://forum.mattermost.com/c/trouble-shoot/16.
[X] This issue is not a feature request. You can request features and make product suggestions here: https://mattermost.com/suggestions/.
[X] This issue reproduces on the most recent stable version, or the most recent prerelease version of the Mattermost Desktop App.
[X] I have read the contribution guidelines.

Mattermost Desktop Version
Version 5.5.1 commit: db8645b
Operating System
Windows 11 22H2
Mattermost Server Version
9.2.2 Build Number:<PHONE_NUMBER>
Steps to reproduce
Open Mattermost
Select option to restart and update, Mattermost will close then the setup window will apear and say it cannot be closed and to try again

Expected behavior
Program should update
Observed behavior
App cannot update
Log Output
[2023-12-15 11:17:04.478] [error] Logger Log level set to: info
[2023-12-15 11:17:04.822] [info]  [App.Config] config.autostart has been configured: true
[2023-12-15 11:17:04.962] [info]  [App.Config] config.autostart has been configured: true
[2023-12-15 11:17:05.854] [info]  [ServerDropdownView] init
[2023-12-15 11:17:05.909] [warn]  [i18nManager] Failed to set new language en-US
[2023-12-15 11:17:05.910] [warn]  [i18nManager] Failed to set new language US
[2023-12-15 11:17:06.036] [info]  [App.Config] config.autostart has been configured: true
[2023-12-15 11:17:06.204] [info]  [App.Config] config.autostart has been configured: true
[2023-12-15 11:17:07.007] [info]  [App.Config] config.autostart has been configured: true
[2023-12-15 11:17:10.814] [info]  [UpdateManager] Checking for update
[2023-12-15 11:17:12.072] [info]  [UpdateManager] Found version 5.6.0 (url: 5.6.0/mattermost-desktop-setup-5.6.0-win.exe)
[2023-12-15 11:17:12.074] [info]  [UpdateManager] New version available: 5.6.0
[2023-12-15 11:17:27.235] [info]  [UpdateManager] Downloading update from 5.6.0/mattermost-desktop-setup-5.6.0-win.exe
[2023-12-15 11:17:27.868] [info]  [UpdateManager] Update has already been downloaded to C:\Users\mserrano\AppData\Local\mattermost-desktop-updater\pending\mattermost-desktop-setup-5.6.0-win.exe).
[2023-12-15 11:17:27.872] [info]  [UpdateManager] Downloaded version 5.6.0
[2023-12-15 11:17:41.906] [info]  [UpdateManager] Install on explicit quitAndInstall
[2023-12-15 11:17:41.906] [info]  [UpdateManager] Install: isSilent: false, isForceRunAfter: true
[2023-12-15 11:17:41.976] [info]  [UpdateManager] Install on explicit quitAndInstall
[2023-12-15 11:17:41.977] [warn]  [UpdateManager] install call ignored: quitAndInstallCalled is set to true
[2023-12-15 11:17:41.997] [info]  [UpdateManager] Auto install update on quit
[2023-12-15 11:17:41.998] [info]  [UpdateManager] Install: isSilent: true, isForceRunAfter: false

Additional Information
Selecting cancel produces an error saying it can't uninstall old application files

@MikeSerrano96 It's possible that the application didn't close properly. This unfortunately happens on some machines.
Are you able to reproduce consistently?
It's also possible there's a permission issue happening here.
If this doesn't work I'd recommend downloading from GitHub and upgrading manually.


[Feature request] Use third party libraries

I've noted in the code that just symbols from libm and libc is available. Would be nice to use third party libraries with some command line option.
For now I've hard coded another library in the sources, added libSDL2.so in my case, and was able to run a game coded in C with mir!

I have on my to do list to add -L and -l options to c2m and correspondingly to c2mir.h interface.  I'll try to do this it earlier than I planned.

I've noticed that this was implemented in https://github.com/vnmakarov/mir/commit/9616fa8b2c1cba8a48d5b0fde475ce8dd48c4b5b
Thanks!

I've noticed that this was implemented in 9616fa8
Thanks!

Sorry,  I did not write you about this because I am still thinking to implement explicitly given libraries (e.g.  libxxx.so) besides ones given by option -l (e.g. -lxxx).


Reimplememts draft command in cicero-cli

Closes #797
Reimplememts draft command in cicero-cli
Changes

Add draft command to args
Use template-engine to render in target format.

Remaining tasks
-[ ] Add tests (taken from old code). The test run is currently failing because of low test coverage
-[ ] Review command flags (utcOffset, offline, format, warning etc.). Some may no longer be necessary/possible.
-[ ] Review the default target (markdown). Right now, the output includes in-lined JSON objects. I remember a bug around this, but I can't find a reference (@dselman ?). Example output:
 Late Delivery and Penalty. In case of delayed delivery except for Force Majeure cases, the Seller shall pay to the Buyer for every {"$class":"org.accordproject.time@0.3.0.Duration","amount":9,"unit":"days"} of delay penalty amounting to 7.0% of the total value of the Equipment whose delivery has been delayed. Any fractional part of a days is to be considered a full days. The total amount of penalty shall not however, exceed 2.0% of the total value of the Equipment involved in late delivery. If the delay is more than {"$class":"org.accordproject.time@0.3.0.Duration","amount":2,"unit":"weeks"}, the Buyer is entitled to terminate this Contract.

Author Checklist

[x] Ensure you provide a DCO sign-off for your commits using the --signoff option of git commit.
[ ] Vital features and changes captured in unit and/or integration tests
[ ] Commits messages follow AP format
[ ] Extend the documentation, if necessary
[ ] Merging to master from fork:branchname

The JSON output is expected for complex types that don't have specific draft code baked in (eg MometaryAmount). We used to inline the space separated fields which was a hack and not localisation friendly. The template should render the fields of the Duration or we could bake in Duration drafting but we would need VOC support for enum values as well as an "as" formatting string.


Show utc time in history view

I mean to have something like toLocalizedTime that we have in Plone that handles the showing internally

Why do we want to show the UTC time as a tooltip? It would help to show the date in full format, but I don't think that using UTC will help here.

@iRohitSingh we need to show the client's browser local time.

@sneridagh When we see the history version locally it shows the local time of user but when we deployed the site on server it is only providing the UTC time. We are using the same component everywhere at it works perfectly fine. In folder content view also the time is localized even in server but in history version view it is not showing the local time.
I investigated and found out that there is slight difference between the response of restapi. In folder content there is additional information which is there which is missing in history '+' information which is missing in history view response.
history restapi response.

foldercontent item response.

Closing this, the source of the problem is the history endpoint, who is not returning a TZ'd date.


SN-EN baseline with Noam Scheduling

This is a baseline for Noam scheduling. This ran for 2 epochs. For future work, we will run it for 100 epochs on the local machine. Will also try larger models. Noam scheduling proved to be better than Platueue for Shona to English.

Thank you @juliakreutzer! I have added the results in the mentioned link.
With best regards.


jetson-agx-orin: Add support for Jetson AGX Orin

This adds support for tegra234 Jetson Orin
Signed-off-by: Roberto Gutierrez<EMAIL_ADDRESS>

Hey @robertogs2
Thanks for the PR.
FYI, I started reviewing the PR and doing some testing.
Will keep you updated

@robertogs2

@robertogs2
I installed tegra-firmware manually into my Jetson-orin-agx which fixes nvpmodel.service
The NVIDIA Argus daemon systemd service still failing
Here is log from journald
root@jetson-agx-orin-devkit:~# journalctl -u nvargus-daemon --no-pager
Apr 19 01:53:18 jetson-agx-orin-devkit systemd[1]: Started NVIDIA Argus daemon.
Apr 19 01:53:18 jetson-agx-orin-devkit nvargus-daemon[522]: Opening channel /dev/nvhost-vic failed
Apr 19 01:53:18 jetson-agx-orin-devkit nvargus-daemon[522]: Couldn't create ddkvic Session: Cannot allocate memory
Apr 19 01:53:18 jetson-agx-orin-devkit nvargus-daemon[522]: nvbuf_utils: Could not create Default NvBufferSession
Apr 19 01:53:18 jetson-agx-orin-devkit systemd[1]: nvargus-daemon.service: Main process exited, code=exited, status=255/EXCEPTION
Apr 19 01:53:18 jetson-agx-orin-devkit systemd[1]: nvargus-daemon.service: Failed with result 'exit-code'.

Hey @ichergui @madisongh,
I applied the patch and the required changes. It seems like with all those modifications both daemons are working correctly now. Please verify that, thank you!


readthedocssinglehtmllocalmedia build gets killed

Details

Project URL: https://readthedocs.org/projects/kernel/
Build URL (if applicable): https://readthedocs.org/projects/kernel/builds/4044873/
Read the Docs username (if applicable): jani

Excepted Result
Build passes, duh. ;)
Actual Result
The build gets killed while building "readthedocssinglehtmllocalmedia" with code 137. I presume this is due to too much resources being used. I added quite a bit of documents to build.
python /home/docs/checkouts/readthedocs.org/user_builds/kernel/envs/sphinx-wip/bin/sphinx-build -T -b readthedocssinglehtmllocalmedia -d _build/doctrees-readthedocssinglehtmllocalmedia -D language=en . _build/localmedia
The "readthedocsdirhtml" build that I want and also the "json" build pass fine. I do not know what "readthedocssinglehtmllocalmedia" is needed for. Is there a way to skip that?
I'm experimenting with migrating the Linux Kernel Documentation to using Sphinx, and trying to ensure the build stays compatible with readthedocs. If there's no way to bypass the readthedocssinglehtmllocalmedia build, I'd appreciate more resources, if only during this experimenting and evaluation.

I also see this issue on some builds of Django's docs which are fairly large.

I'm also seeing this on my docs https://readthedocs.org/projects/mutation-testing-patterns/builds/. This started happening right after I switched to sphinx-rtd-theme. My docs collection isn't big, there are only a few files.
@timgraham, @jnikula guys I see your projects now build successfully. Did you change anything ?

@atodorov As this was for testing only, I just cut down the number of documents to make it pass.

I haven't changed anything for Django.

@jnikula the problem was that the building took more than 10 minutes and that it's the limit time for the celery task, so it gets killed. After you removing a couple of docs, it was built in less time so it passed. Check https://github.com/rtfd/readthedocs.org/issues/2591 for reference.
@atodorov I think your problem is because you are using an old version of Sphinx. Check this other issues: https://github.com/rtfd/readthedocs.org/issues?utf8=✓&q=is%3Aissue is%3Aopen traverse  that propose a solution by upgrading the Sphinx version.
I will close this issue as duplicated of #2591. Feel free to reopen if you consider.


racer does not work from commandline

Noob here!
Environment:
MacOSX El Capitan
racer 1.2.5 (installed with cargo)
rust from 7fc4df6d230f81537886f11c57483e0cb61f0948
$RUST_SRC_PATH = /Users/me/sources/rust/src
Expected:
racer complete std::io::B (should show some completions)
Actual:
ERROR:racer::core: read_file couldn't open "/Users/me/sources/rust/src/libstd/../libcore/src/lib.rs". Returning empty string
Looking into the 'libcore' directory, I see there is no 'src' directory in it. Am I doing something wrong?
I worked around this issue by symlinking 'src' back to 'libcore'. Is this the right thing to do?

You need the Rust sources on your local machine (in /Users/me/sources/rust/src as per your setup specified by the RUST_SRC_PATH variable). The easiest way to do this,
$ cd /Users/me/sources
$ git clone https://github.com/rust-lang/rust

Then re-run your example and it should work.

Hi @koyedele , hi @kbknapp. Actually I think this was a problem with racer's cargo.toml handling - it looks like the rust source recently added Cargo.toml files. see #511
Hopefully this is fixed in racer 1.2.6

Thanks @kbknapp and @phildawes!


BUG: Not properly sorted output for macs2

Describe the bug
/home/sande/snakemake-workflows/workflows/atac_seq/macs2/GSM2837495-danRer7.tmp.narrowPeak is not case-sensitive sorted at line 165730.  Please use "sort -k1,1 -k2,2n" with LC_COLLATE=C,  or bedSort and try again.
To Reproduce
Run the atac seq pipeline

In rule narrowpeak_bignarrowpeak

Not on my personal (ubuntu) computer, but happens on our gentoo server. I'll try again with bedSort, see if that resolves the issue

Not sure how to pipe to bedSort. @siebrenf  this is related to the export LC_ALL=us or sth.
When I switch to C everything still works on mb087:
https://unix.stackexchange.com/a/87748

export LC_ALL=C

Reopening since this fails for multiqc & click:
RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult https://click.palletsprojects.com/en/7.x/python3/ for mitigation steps.

This system lists a couple of UTF-8 supporting locales that
you can pick from.  The following suitable locales were
discovered: en_US.utf8


APE-Ti 6M backbone but using EVA-02 9B?

Seeing the config file linked https://github.com/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitt_eva02_vlf_lsj1024_cp_16x4_1080k_mdl.py
Why is it using models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt? isnt that the largest EVA?
And what do you refer to by "6Million" backbone?

We only use the text tower in  models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt as language model.
And the ViT-Ti backbone is imported in this line.

I see, thanks


kwargs typings are broken

I tried to give typings to my kwargs, following this comment:
https://github.com/microsoft/pylance-release/issues/2541#issuecomment-1448576066
But - It produced this bug for me:
In the case that my TypedDict is nested - it wouldn't auto-complete the fields of the inner TypedDict, if not all fields of OuterDict are given:

@rchiodo


Experiment with different backends (Emacs Lisp, Perl)

Idea from http://joeyh.name/blog/entry/please_build_a_haskell_to_perl_compiler/

Spring cleaning. Lack of activity, it's unlikely that this will happen.


Attempting to add Darwin Core vocabulary - error

Hi, we are attempting to add Darwin Core metadata for a Hydra project we are working on here at Indiana University.  My addition to the vocab.yml file is as follows:
dwc:
class_name: DWC
uri: http://rs.tdwg.org/dwc/terms/
source: http://rs.tdwg.org/dwc/rdf/dwcterms.rdf
The error when running the rake task to generate the DWC vocab file is: "root must be a proxy not a NilClass". I'm sure I'm just missing something fundamental here but I'm not sure what it is.

I get the same thing -- it could be a bug in rdf-rdfxml? @no-reply @barmintor @terrellt
root must be a proxy not a NilClass
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-rdfxml-1.1.3/lib/rdf/rdfxml/reader.rb:186:in `each_statement'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/mixin/writable.rb:129:in `insert_statements'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/mixin/mutable.rb:53:in `block in load'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-rdfxml-1.1.3/lib/rdf/rdfxml/reader.rb:165:in `call'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-rdfxml-1.1.3/lib/rdf/rdfxml/reader.rb:165:in `block in initialize'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/reader.rb:207:in `instance_eval'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/reader.rb:207:in `initialize'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-rdfxml-1.1.3/lib/rdf/rdfxml/reader.rb:140:in `initialize'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/reader.rb:148:in `new'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/reader.rb:148:in `block in open'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/util/file.rb:170:in `open_file'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/reader.rb:136:in `open'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/mixin/mutable.rb:43:in `load'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/model/graph.rb:75:in `block in load'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/model/graph.rb:125:in `call'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/model/graph.rb:125:in `initialize'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/model/graph.rb:74:in `new'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/model/graph.rb:74:in `load'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/vocab.rb:319:in `load'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/gems/rdf-1.1.9/lib/rdf/cli/vocab-loader.rb:141:in `run'
/Users/dc/github/projecthydra-labs/rdf-vocab/lib/rdf-vocab.rb:18:in `generate'
/Users/dc/github/projecthydra-labs/rdf-vocab/lib/rdf-vocab/tasks/vocab.rake:14:in `block (3 levels) in <top (required)>'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/bin/ruby_executable_hooks:15:in `eval'
/Users/dc/.rvm/gems/ruby-2.1.2@rdf-vocab/bin/ruby_executable_hooks:15:in `<main>'

Looks like a malformed doctype in http://rs.tdwg.org/dwc/rdf/dwcterms.rdf:
<!DOCTYPE rdf:RDF [

@jcoyne That's weird - W3C validator parsed it fine.

okay, firefox is telling me Bogus doctype. Stray doctype

I don't think DOCTYPE is the issue; it may be a change in Nokogiri. It calls ::Nokogiri::XML.parse with the document IO, base URI and 'utf-8', and results in returning an empty document. If run with a string, by reading the document, it works fine, or if 'utf-8' isn't passed.
File a big on http://github.com/ruby-rdf/rdf-rdfxml/issues and I'll investigate further.

Thanks, @gkellogg!

Thanks all for the quick responses! I will wait for the changes to trickle down to production code and then try again.

@jhallida there is a workaround for this. The issue appears to be due to the byte-order-mark in the file. If you download the darwin core file locally and remove the BOM prefix, you can run the following command:
vocab-fetch --module-name RDF::Vocab --class-name DWC --uri http://rs.tdwg.org/dwc/terms/ --source dwcterms.rdf > lib/rdf-vocab/vocab/dwc.rb

@dchandekstark what would you think of repeating this process locally in order to get the DWC vocabulary into this module? It would mean that
rake vocab:dwc

would not succeed, but the vocabulary would be present.

Hm, can we push this back to @gkellogg and ruby-rdf/rdf-rdfxml#35 ?

If there's a problem with the file such that it can't be deserialized without modification, there's nothing to be done in RDF.rb. In such cases, I usipually make a local modified copy and use that as the source. Unless you can correct the source, or determine that there's a butpg in the reader, I can't think of anything else.

If it really is tripping on the BOM in an otherwise correctly-encoded UTF8
stream, there's a trick in Ruby 1.9:
File.open(path,"r:bom|utf-8")
Not sure if it persisted into Ruby 2.
On Fri, Mar 6, 2015 at 1:09 AM, Gregg Kellogg<EMAIL_ADDRESS>wrote:

If there's a problem with the file such that it can't be deserialized
without modification, there's nothing to be done in RDF.rb. In such cases,
I usipually make a local modified copy and use that as the source. Unless
you can correct the source, or determine that there's a butpg in the
reader, I can't think of anything else.
—
Reply to this email directly or view it on GitHub
https://github.com/projecthydra-labs/rdf-vocab/issues/35#issuecomment-77511889
.

Thanks, @gkellogg and @barmintor. I'm not familiar with the phenomenon, so just kicked it around.
So, I think @jhallida has a workaround. Before adding the vocab to rdf-vocab, perhaps we should contact the DWC folks about this issue.  Maybe they'll issue a fix.  If that doesn't happen, I suppose we could create a place to put source files for cases like this one (the config entry could point to the path relative to that directory). @acoburn ?


typoModify the default value of Stale rowset cleanup policy

Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


Remove version: Jackett.Jackett version 0.21.1537

404 - release deleted
Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/Jackett/Jackett/releases/download/v0.21.1537/Jackett.Installer.Windows.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 918)


npm failing to install all dependencies

Hi,
I've cloned frontend bootstrap and am trying to run npm install. Which is unsuccessful, I added a log below. Can you point me to a solution?
This is the same on windows and on mac.
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat '/Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/eazy-logger/node_modules/opt-merger/node_modules/lodash/lodash.js'
npm ERR! If you need help, you may report this entire log,
npm ERR! including the npm and node versions, at:
npm ERR!     http://github.com/npm/npm/issues
npm ERR! System Darwin 14.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/christiaanstegeman/Documents/frontend-bootstrap
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! path /Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/eazy-logger/node_modules/opt-merger/node_modules/lodash/lodash.js
npm ERR! fstream_path /Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/eazy-logger/node_modules/opt-merger/node_modules/lodash/lodash.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat '/Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/socket.io/node_modules/socket.io-parser/bg.gif'
npm ERR! If you need help, you may report this entire log,
npm ERR! including the npm and node versions, at:
npm ERR!     http://github.com/npm/npm/issues
npm ERR! System Darwin 14.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/christiaanstegeman/Documents/frontend-bootstrap
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! path /Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/socket.io/node_modules/socket.io-parser/bg.gif
npm ERR! fstream_path /Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/socket.io/node_modules/socket.io-parser/bg.gif
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)

<EMAIL_ADDRESS>install /Users/christiaanstegeman/Documents/frontend-bootstrap/node_modules/browser-sync/node_modules/socket.io/node_modules/engine.io/node_modules/ws
(node-gyp rebuild 2> builderror.log) || (exit 0)

Error: ENOENT, lstat '[...]/node_modules/browser-sync/node_modules/eazy-logger/node_modules/opt-merger/node_modules/lodash/lodash.js'

It seems lodash is failing to install.
Does the problem persist with updated versions of Node.js and NPM? Latest Node.js 0.10 branch is 0.10.38 and NPM is 2.10.0. Updating Node.js needs a download, updating npm is as easy as npm i npm -g.
Another question; does it also fail when you try to run npm i browser-sync in an entirely other directory? And how about npm i ws in another directory? And npm i lodash? I'd like to know the offending package.
I can't reproduce this myself, tested on Node v0.10.26 and NPM v1.4.3 on Windows and on OSX with Node v0.10.38 and NPM 2.10.0.

I updated node and npm to the latest versions you mentioned on windows and on mac. Still not working. I'm going to try a different method tomorrow and update the outcome here.

@cstegeman does this problem still occur with the latest version. If not then this issue can be closed.

Don't know haven't tried it since then

@cstegeman can you do this so we can take action one this issue.

Seems to work almost:
After doing a clean checkout and running npm i:
[fsevents] Success: "/Users/cstegeman/Documents/Checkouts/frontend-bootstrap/node_modules/browser-sync/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v14-darwin-x64/fse.node" is installed via remote

<EMAIL_ADDRESS>postinstall /Users/cstegeman/Documents/Checkouts/frontend-bootstrap
node node_modules/gulp/bin/gulp.js githooks

{ [Error: ENOENT, no such file or directory '.env'] errno: -2, code: 'ENOENT', path: '.env', syscall: 'open' }
[16:13:49] Using gulpfile ~/Documents/Checkouts/frontend-bootstrap/gulpfile.js
[16:13:49] Starting 'githooks-clean'...
[16:13:49] Finished 'githooks-clean' after 26 ms
[16:13:49] Starting 'githooks'...
[16:13:49] Finished 'githooks' after 17 ms
<EMAIL_ADDRESS>node_modules/dotenv

After running gulp dev:
Snijbiet:frontend-bootstrap cstegeman$ gulp dev
{ [Error: ENOENT, no such file or directory '.env'] errno: -2, code: 'ENOENT', path: '.env', syscall: 'open' }
[16:24:25] Using gulpfile ~/Documents/Checkouts/frontend-bootstrap/gulpfile.js
[16:24:25] Starting 'clean'...
[16:24:25] Finished 'clean' after 2.39 ms
[16:24:25] Starting 'browsersync'...
[16:24:25] Finished 'browsersync' after 37 ms
[16:24:25] Starting 'html-compile'...
[16:24:25] Starting 'img-optimize'...
[16:24:25] Starting 'css-compile'...
[16:24:25] Starting 'css-compile-sass'...
[16:24:25] Starting 'css-copy-fonts'...
[16:24:25] Starting 'js-transpile'...
[16:24:25] Finished 'css-compile' after 18 ms
[16:24:25] Starting 'css-watch'...
[16:24:25] Finished 'css-watch' after 7.08 ms
[16:24:25] Finished 'css-copy-fonts' after 28 ms
[BS] Access URLs:
   Local: http://localhost:3000
External: http://<IP_ADDRESS>:3000

      UI: http://localhost:3001

UI External: http://<IP_ADDRESS>:3001
[BS] Serving files from: ./dist
[BS] 1 file changed (home.html)
[16:24:26] Finished 'html-compile' after 884 ms
[16:24:26] Starting 'html-watch'...
[16:24:26] Finished 'html-watch' after 1.88 ms
[16:24:26] gulp-imagemin: Minified 1 image (saved 3.43 kB - 5.9%)
[BS] 1 file changed (all.css)
[16:24:26] Finished 'css-compile-sass' after 1.36 s
[16:24:26] Finished 'img-optimize' after 1.4 s
[16:24:26] Starting 'img-watch'...
[16:24:26] Finished 'img-watch' after 1.7 ms
[BS] 30 files changed (main.js.map, main.js, conditioner.js.map, conditioner.js, require.js.map, require.js, connection.js.map, connection.js, element.js.map, element.js, media.js.map, media.js, pointer.js.map, pointer.js, window.js.map, window.js, Observer.js.map, Observer.js, Promise.js.map, Promise.js, contains.js.map, contains.js, extendClassOptions.js.map, extendClassOptions.js, matchesSelector.js.map, matchesSelector.js, mergeObjects.js.map, mergeObjects.js, Nav.js.map, Nav.js)
[16:24:27] Finished 'js-transpile' after 1.68 s
[16:24:27] Starting 'js-watch'...
[16:24:27] Finished 'js-watch' after 1.67 ms
[16:24:27] Starting 'dev'...
[16:24:27] Finished 'dev' after 4.92 μs

This error is caused because of a missing .env file @ericweerstra is working on a fix for this issue.

As @awolkers said, the missing .env file is a different issue, and it's also not blocking for installing the dependencies.


Fixed of overlapping of ripple effect.

Fixed overlapping of ripple effect on material stepper and material button.
If we set radius of those two elements to something bigger than their original radius and then we
set background to something darker we can see that ripple effect continues outside of the borders. This
should fix the issue since it creates a rounded variant of these elements and clips them from canvas.
Bug showcase On top you can see original version. Under is fixed version.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: zZBrigadierZz sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Sophia Cheng Pull Request 190J

Added image to assets and bio to _staffers

@sophiacheng01 What kind of art did you teach? Was it drawing or painting?
I'm learning to use Procreate on my iPad, and that's been a fun journey.

I taught art to middle schoolers so it was mostly basic drawing skills but we tried to integrate some watercolor painting as well. I used to paint a lot of acrylic but after getting an iPad this year I've been exploring Procreate too. Although I'm not sure I'm using it to its best ability so if you have any tips let me know !

@sophiacheng01 I love watercolors, although, they can be so maddening, when they don't do what you have in mind. :-)
For getting more comfortable with Procreate (and a "watercolor" flavor), I really like Teela's tutorials: https://www.youtube.com/user/everytues.
I also enjoy the style and the artwork of Gal Shir: https://www.youtube.com/channel/UCA1ZyvPnZ1D-3xlpCM6-CrQ.
Let me know if you have any favorite resources/projects.

I'll definitely check those out ! I don't really have any procreate specific projects that I can think of off the top of my head, but I'll let you know if any come up :) I know a lot of artists use the Jingsketch brush pack, I haven't gotten it yet but I am strongly considering it.

I look forward to seeing which ones you end up trying out.


[Enhancement] Auto-generate high-level memory-safe binding between Dart and Rust via flutter_rust_bridge

Hi, thanks for the project! However, when testing it, I find that flatbuffers is sometimes not that easy to play with, and such serialization seems to be a bit slower than directly calling ffi. Therefore, maybe we can use flutter_rust_bridge to generate the binding code? It is high-level and memory-safe, so we can get the same feeling as flatbuffer (no need for manual memory allocate/free, etc), while having a better speed and usability.

Thank you and looking forward to it!


Propagate cvo error to geneva

Which issue this PR addresses:
Currently, if upgrade check fails it returns internal server error to Geneva. And SRE needs to go into RP logs to find out why.
This will help to debug faster skipping this step
What this PR does / why we need it:
Usual flow now:

Start upgrade
Internal Server Error
Check RP logs
Check CVO in most cases it is unhealthy because of "reasons".

This will help to skip 2-3 steps
Test plan for issue:
N/A
Is there any documentation that needs to be updated for this PR?
N/A

/azp run e2e


dracula for xfce4-terminal

Repo
https://github.com/Adjective-Object/dracula-xfce4-terminal
Screenshot

Any updates?

Hey, sorry, things have been crazy over the last few months, and I haven't dedicated the time I should have. I will get this taken care of this weekend, if not later today.
Thanks again!

Hi @Adjective-Object, I've gone ahead and created the repository for you at https://github.com/dracula/xfce4. If you could please submit a PR, it would be appreciated. Once it's been merged in, I'll add you as a member of the organization.
Thanks again for your contribution!

Sadly that @Adjective-Object didn't finish this :sob:

Whoops, looks like life got away from me too. I don't think I can make a pull against a repo unless it's registered as a fork of it, and I don't think I can fork an empty repo.
@nesl247 mind throwing a README into the repo so I can rebase my branch onto it?