WhereIsAI/github-issue-similarity huggingface dataset:
Issue 1:
Symfony 2.6.5 version changed the way errors are displayed in the browser. Lately a lot of users are complaining about this new behavior: #14337, #14199, #1396, #14111, #14073.

Symfony 2.7 beta tried to solve this problem, but the result is not completely satisfactory.

To better understand the problem, check out the different error messages that you get when your controller uses the @Security annotation without importing its associated class.

Symfony 2.6.4

The error message is perfect.

Symfony 2.6.5 and 2.6.6

The error message is awful.

Symfony 2.7

You see 4 error messages instead of just 1. The good error is displayed at the bottom and the awful error is displayed first.

This behavior only happens in the browser. If you use Symfony 2.6.5 or 2.6.6 in the console, you get perfect error messages:

In my opinion this is a critical issue that should be fixed both for 2.6 and 2.7.

Issue 2:
I've recently encountered a strange issue with validation groups:

class Profile {
/**
* @Assert\NotBlank(message="NOT-BLANK-Default")
* @Assert\NotBlank(message="NOT-BLANK-Profile", groups={ "Profile" })
*/
public $firstName;
}

$profile = new Profile();
$errors = $validator->validate($profile, array('Profile'))

foreach($errors as $e) {
echo (string) $e;
}

Expected result would be:

Profile.firstName:
NOT-BLANK-Profile

However the actual result is:

Profile.firstName:
NOT-BLANK-Default
Profile.firstName:
NOT-BLANK-Profile

On the other hand, if we explictly define validation groups as array('Default', 'Profile') the result is:

Profile.firstName:
NOT-BLANK-Default
Profile.firstName:
NOT-BLANK-Default
Profile.firstName:
NOT-BLANK-Profile

It happens because Symfony\Component\Validator\Mapping\ClassMetadata impliclty adds Default validation group when it encounters a validation group that has the same as validated class name (w/o namespace). This behaviour is not documented, it causes hard to debug errors (including: duplicated error messages) and what's worst it changes validation logic.
Issue 1:
It seems the index constraint doesn't seem to constrain anymore... if it does, then I blame it being early in the morning.

Copying the code from Ryan's post here:

class Customer {
dummyProperty: string;
}

var map: { [email: string]: Customer; } = { };
map['foo@gmail.com'] = new Customer(); // OK
map[14] = new Customer(); // Not OK, 14 is not a string -- ACTUALLY, this compiles now
map['bar@hotmail.com'] = 'x'; // Not OK, x is not a customer

Playground

Apologies if this has already been raised, but I couldn't find a duplicate issue. Maybe this is now by design?

Issue 2:
As of change #2356, the following code gives the correct result in the batch compiler:

declare function f<T>(x: T, y: (p: T) => T, z: (p: T) => T): T;
f(0, x => null, x => x.blahblah);

Namely, we infer T to be number, and we get an error on blahblah.

However, there are a few things still wrong:

The language service does not show the correct result. It shows both x's to be number, but if you hover on f, you will see that it was instantiated to any, instead of number.

If you add another overload, the wrong type argument gets inferred:

declare function f<T>(x: T, y: (p: T) => T, z: (p: T) => T): T;
declare function f();
f(0, x => null, x => x.blahblah);

Now suddenly blahblah is not an error, and the second x is any.

In theory, if this overload is not assignable, but it has already fixed the type parameter T, and another overload comes along with a type parameter in the same position, that second type parameter will not get fixed. I don't have a good repro for this, but it is certainly a possibility in theory.

All of these issues happen because when a function expression parameter causes a type parameter to get fixed, it only does so if it is affected by the type of that type parameter. I believe the right thing here is that even if a function parameter does not align with the type parameter, it should still fix it. That way, it will fix the type parameter no matter which signature is being visited, or whether this signature has been visited before.

I consider this bug a followup to bugs #2127 and #2182.
Issue 1:
Bug report

Bug summary

The heatmap is now clipped improperly using imshow. The code works properly in 3.1.0 but not in 3.1.1. The bug could be easily reproduced using the categorical heatmap example on:

https://matplotlib.org/gallery/images_contours_and_fields/image_annotated_heatmap.html

Note that the image of the example on the website is also clipped.

See the same page in 3.1.0 as a comparison.

https://matplotlib.org/3.1.0/gallery/images_contours_and_fields/image_annotated_heatmap.html

Code for reproduction

# Paste your code here
#
#
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# sphinx_gallery_thumbnail_number = 2

vegetables = ["cucumber", "tomato", "lettuce", "asparagus",
"potato", "wheat", "barley"]
farmers = ["Farmer Joe", "Upland Bros.", "Smith Gardening",
"Agrifun", "Organiculture", "BioGoods Ltd.", "Cornylee Corp."]

harvest = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0],
[2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
[1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
[0.6, 0.0, 0.3, 0.0, 3.1, 0.0, 0.0],
[0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
[1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
[0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])

fig, ax = plt.subplots()
im = ax.imshow(harvest)

# We want to show all ticks...
ax.set_xticks(np.arange(len(farmers)))
ax.set_yticks(np.arange(len(vegetables)))
# ... and label them with the respective list entries
ax.set_xticklabels(farmers)
ax.set_yticklabels(vegetables)

# Rotate the tick labels and set their alignment.
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
rotation_mode="anchor")

# Loop over data dimensions and create text annotations.
for i in range(len(vegetables)):
for j in range(len(farmers)):
text = ax.text(j, i, harvest[i, j],
ha="center", va="center", color="w")

ax.set_title("Harvest of local farmers (in tons/year)")
fig.tight_layout()
plt.show()

Actual outcome

Matplotlib version

Matplotlib version: 3.1.1

Python version: 3.6.8

Issue 2:
Bug report

Bug summary

The very top and bottom of the heatmaps are getting truncated to 1/2 height in version 3.1.1. This does not happen for version 3.0.3.

This is the code from a Jupyter Notebook

import matplotlib
import pandas as pd
import numpy as np
import seaborn as sb
%pylab inline

print(matplotlib.__version__)
print(sb.__version__)

grid = pd.DataFrame(np.arange(9).reshape((3,3))/10)
fig, ax = subplots(1, 1, figsize=(5, 5))

sb.heatmap(grid, annot=True, fmt=".0f", ax=ax, cmap='RdBu', vmin=0, vmax=1, cbar=True);

Actual outcome

Populating the interactive namespace from numpy and matplotlib
3.1.1
0.9.0

Matplotlib version

Operating system: Ubuntu Linux

Matplotlib version: 3.1.1

Matplotlib backend: module://ipykernel.pylab.backend_inline

Python version: 3.6

Jupyter version (if applicable): 4.4.0

Other libraries:
Issue 1:
A small, complete example of the issue

>>> series = pd.Series({'a':3, 'b':7, 'c':np.inf, 'd':6})
>>> series.argmax() # should be c
'b'
>>> series.idxmax() # should be c
'b'
>>> series.max() # this works properly
inf
>>> series.index[np.argmax(np.array(series))] # this work-around works
'c'

Expected Output

>>> series = pd.Series({'a':3, 'b':7, 'c':np.inf, 'd':6})
>>> series.argmax()
'c'
>>> series.idxmax()
'c'

Output of pd.show_versions()

# Paste the output here pd.show_versions() here
```python
>>> pd.show_versions()

INSTALLED VERSIONS

commit: None

python: 3.5.2.final.0

python-bits: 64

OS: Darwin

OS-release: 15.6.0

machine: x86_64

processor: i386

byteorder: little

LC_ALL: None

LANG: en_US.UTF-8

LOCALE: en_US.UTF-8

pandas: 0.19.0

nose: 1.3.7

pip: 8.1.2

setuptools: 23.0.0

Cython: 0.24

numpy: 1.11.2

scipy: 0.18.1

statsmodels: 0.6.1

xarray: None

IPython: 4.2.0

sphinx: 1.4.1

patsy: 0.4.1

dateutil: 2.5.3

pytz: 2016.7

blosc: None

bottleneck: 1.1.0

tables: 3.2.2

numexpr: 2.6.0

matplotlib: 1.5.1

openpyxl: 2.3.2

xlrd: 1.0.0

xlwt: 1.1.2

xlsxwriter: 0.9.2

lxml: 3.6.0

bs4: 4.4.1

html5lib: None

httplib2: 0.9.2

apiclient: None

sqlalchemy: 1.0.13

pymysql: None

psycopg2: 2.6.2 (dt dec pq3 ext lo64)

jinja2: 2.8

boto: 2.40.0

pandas_datareader: None

</details>

Issue 2:
Code Sample, a copy-pastable example if possible

In [3]: s = pd.Series([1, 2, np.inf])

In [4]: s.argmax()
Out[4]: 1

In [5]: s.argmax(skipna=False)
Out[5]: nan

Expected Output

2 in both cases.

output of pd.show_versions()

In [6]: pd.show_versions()

INSTALLED VERSIONS
------------------
commit: a63bd12529ff309d957d714825b1753d0e02b7fa
python: 3.5.1.final.0
python-bits: 64
OS: Linux
OS-release: 4.5.0-2-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: it_IT.utf8
LOCALE: it_IT.UTF-8

pandas: 0.18.1+174.ga63bd12
nose: 1.3.7
pip: 1.5.6
setuptools: 18.4
Cython: 0.23.4
numpy: 1.10.4
scipy: 0.16.0
statsmodels: 0.8.0.dev0+111ddc0
xarray: None
IPython: 5.0.0.dev
sphinx: 1.3.1
patsy: 0.3.0-dev
dateutil: 2.2
pytz: 2012c
blosc: None
bottleneck: 1.1.0dev
tables: 3.2.2
numexpr: 2.5
matplotlib: 1.5.1
openpyxl: None
xlrd: 0.9.4
xlwt: 1.1.2
xlsxwriter: 0.7.3
lxml: None
bs4: 4.4.0
html5lib: 0.999
httplib2: 0.9.1
apiclient: 1.5.0
sqlalchemy: 1.0.11
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.38.0
pandas_datareader: 0.2.1
Issue 1:
return {
…state,
msg: action.value
};

my jsconfig.js:

{
"compilerOptions": {
"target": “ES7”,
"module": “es6”,
"experimentalDecorators": true
}
}

anything else i forget to set?

Issue 2:
… and I can't turn it off by setting javascript.validate.enable false.

Perhaps this is a soft documentation bug: the release notes proudly mention experimentalObjectRestSpread but then say:

Support for ObjectRestSpread is not yet provided by Salsa but it is on the roadmap (see microsoft/TypeScript#2103).

… which is confusing and misleading.

It's confusing because the stand-out tone of core dev responses to that issue is "not until TC39 moves it to stage 3; bother them, not us", which is much less optimistic than the Feb 2016 release notes or the TypeScript Roadmap itself.

It's misleading because it fails to describe the impact of "support… not yet provided" as error messages you can't make go away. If there's some way to make them go away, please describe it in that part of the release notes. If not, I don't think it's too strong to outright advise users of object spread properties to delay upgrading.

Without a work-around, this kills code for me, as I now have to dig for the real errors amongst a few dozen erroneous:

Property assignment expected.

Argument expression expected.

Declaration or statement expected.

I trust a workaround is possible, as code is not erroring in JSX.
Issue 1:
Summary of the new feature/enhancement

I'm using Vim as default editor on Linux, also doing some job on multiple vim windows. As you know, Vim uses Ctrl-W to switch between its window, but it also causes closing tab on microsoft terminal. Would you please remove Ctrl-W from default keybindings?

Thank you!

Proposed technical implementation details (optional)

Issue 2:
Environment

Windows build number: [run "ver" at a command prompt]
Windows Terminal version (if applicable):

Any other software?

Steps to reproduce

Expected behavior

Actual behavior
Issue 1:
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):

Yes

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):

Ubuntu 16.04

TensorFlow installed from (source or binary):

binary(By pip)

TensorFlow version (use command below):

1.4.1

Python version:

3.5.2

Bazel version (if compiling from source):

GCC/Compiler version (if compiling from source):

CUDA/cuDNN version:

8.0.61/6.0.21

GPU model and memory:

GTX 1080 Ti, 11172MiB

Exact command to reproduce:

python main.py

Describe the problem

I train my RFCN by tensorflow. My project need very high speed. So I use the profile and I find that non_max_suppression is on CPU? Is there a GPU version?I think if you calculate all pairs of boxes IOU first, then just for-loop once will ultimately boost speed, there have some trick in it, just see the source code in https://github.com/rbgirshick/py-faster-rcnn/tree/master/lib/nms. I think cuda version of NMS is faster than CPU version.

Issue 2:
It appears that tf.image.non_max_suppression currently takes about 200ms for about 8000 boxes, runs on a single CPU thread and doesn't have a GPU implementation.

Environment info

Operating System:

Ubuntu 16.04

Installed version of CUDA and cuDNN:

(please attach the output of ls -l /path/to/cuda/lib/libcud*):

8.0, 5.1.5

If installed from binary pip package, provide:

A link to the pip package you installed:

The output from python -c "import tensorflow; print(tensorflow.__version__)".

0.12.0-rc1
Issue 1:
I'm currently using the tsconfig file in our project and I want to have two of them one that outputs es5 and one that outputs es6. Things are working great until I try and target es6 and run into the issue where I'm supplying a definition file for ES6-Promises.

[TsProject] Compiling Project Files...
[TsProject] c:/Code/Exceptionless.JavaScript/node_modules/typescript/bin/lib.es6.d.ts(4727,11): error TS2300: Duplicate identifier 'Promise'.
[TsProject] c:/Code/Exceptionless.JavaScript/node_modules/typescript/bin/lib.es6.d.ts(4812,13): error TS2300: Duplicate identifier 'Promise'.
[TsProject] typings/es6-promise/es6-promise.d.ts(10,15): error TS2300: Duplicate identifier 'Promise'.
[TsProject] typings/es6-promise/es6-promise.d.ts(40,16): error TS2300: Duplicate identifier 'Promise'.
[TsProject] typings/es6-promise/es6-promise.d.ts(70,2): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead.
[TsProject] Build completed with errors. Outputs generated.
[12:17:44] Finished 'typescript' after 2.76 s

Issue 2:
If you implement (so not extend) a class that has protected methods, you always get an error (typically used for a mix-in like pattern)

Either you implement the method, but then the compiler complaints that you are not actually a subclass and therefor cannot implement a protected method. If you however omit the method and than the compiler complaints you are missing a method.

Quick sample to illustrate:

class A {
protected hello() {}
}

class B implements A {
// protected hello() {}
}

One possible solution would be the compiler should ignore protected (and private) properties when implementing a class, only seeing the public properties as part of the externally exposed interface of a class.
Issue 1:
Challenge Waypoint: Passing Values to Functions with Arguments has an issue.

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36.

Please describe how to reproduce this issue, and include links to screenshots if possible.

My code:

// Example
function ourFunction(a, b) {
console.log(a - b);
}
ourFunction(10, 5); // Outputs 5

// Only change code below this line.

function myFunction(a, b){
console.log(a + b);
}
myFunction(2, 3);

myFunction() works fine in Chrome's dev tools.

Issue 2:
Challenge Waypoint: Passing Values to Functions with Arguments has an issue.

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36.

Running tests outputs RangeError: Maximum call stack size exceeded and no tests pass.

My code:

// Example
function ourFunction(a, b) {
console.log(a - b);
}
ourFunction(10, 5); // Outputs 5

// Only change code below this line.

function myFunction(c, d){
console.log(c + d);
}
myFunction(2, 3);
Issue 1:
As discussed in #1549, utils.check_arrays() does not check the shape or ndim of input arrays. However, the docstring suggests that it should: "Checks whether all objects in arrays have the same shape or length."

To me, I think what we need is to break check_arrays() into several sub-functions or maybe a class:

Check sparse / dense

Check dtype

Check first dimension

Check all dimensions

Issue 2:
This issue is about agreeing on what to do about common tests for estimators that support the Array API.

There are two things we need to test for every estimator for which we add Array API support:

does it work with a selection of Array API implementations. I think testing with numpy.array_api, pytorch (CPU) as default and pytoch (GPU) and cupy when a GPU is available would be good and cover most bases.

do the results change when a Array API namespace is used compared to a vanilla Numpy array

There is a 2.5 point as well: different dtypes (float64, float32, float16 (when supported)). Not sure what to do about that in terms of common test.

is there something else we should test in the common tests?

Implementation wise I think it would be good to add a estimator tag that we can use to mark estimators that support Array API. Something like "array_api_support": True?

Then I'd add one test that checks if the result of vanilla Numpy match the results of numpy.array_api (to cover (2)). And then maybe two more common tests. One to check that numpy.array_api and pytorch (CPU) work and another one for the GPU based tests in (1)? I'm wondering if having some code duplication between tests for (1) is worth it in terms of making the tests easier to read compared to trying to do it all via parametrisation.

Depending on how far #26243, #26315, #22554, #25956 are we should also clean up the tests that check this that were added in those PRs.

What do you think @ogrisel @thomasjpfan ?
Issue 1:
💻

Would you like to work on this feature?

What problem are you trying to solve?

TypeScript 4.7 Beta ships with in and out modifiers for type parameters on type declarations.

type Getter<out T> = () => T;

type Setter<in T> = (value: T) => void;

interface State<in out T> {
get: () => T;
set: (value: T) => void;
}

TypeScript developers using Babel will need to support this syntax.

These in and out modifiers can only be placed on type parameter declarations for

type aliases

interface declarations

class declarations

possibly class expressions

It is possible to have in, out, and in out. Duplicates are not allowed, and in must always come before out.

Describe the solution you'd like

For the next minor version of Babel, we may want to implement this feature.

Describe alternatives you've considered

There are alternative compilers, but that would not be ideal for Babel users.

Documentation, Adoption, Migration Strategy

No response

Issue 2:
💻

Would you like to work on a fix?

How are you using Babel?

Other (Next.js, Gatsby, vue-cli, ...)

Input code

function foo(...[x]) {
var x = 1
}

/repl.js: Duplicate declaration "x"

Configuration file name

No response

Configuration

https://babeljs.io/repl#?browsers=chrome%2033&build=&builtIns=false&corejs=3.6&spec=false&loose=false&code_lz=GYVwdgxgLglg9mABMOcAUA6LBtAHgXQEpEBvAKEQDcBDAJ0V0QF5EBGMgXyA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=env&prettier=false&targets=&version=7.16.9&externalPlugins=&assumptions=%7B%7D

Current and expected behavior

Current :error

expected : no error

Environment

.

Possible solution

No response

Additional context

.
Issue 1:
In [1]: import pandas, numpy

In [2]: df = pandas.DataFrame(numpy.random.random((100000, 4)))

In [3]: %timeit df.loc[55555]
10000 loops, best of 3: 118 µs per loop

In [4]: %timeit df.loc[[55555]]
1000 loops, best of 3: 324 µs per loop

... makes sense to me.

In [5]: df.index = list(range(99999)) + [55555]

In [6]: %timeit df.loc[55555]
100 loops, best of 3: 4.04 ms per loop

In [7]: %timeit df.loc[[55555]]
100 loops, best of 3: 16.8 ms per loop

Non-unique index, slower (the second call probably has to scan all the index): still makes sense to me. Sorting should improve things...

In [8]: df.sort(inplace=True)

In [9]: %timeit df.loc[55555]
1000 loops, best of 3: 239 µs per loop

In [10]: %timeit df.loc[[55555]]
100 loops, best of 3: 17.2 ms per loop

... here I'm lost: why this huge difference? The difference is even larger (3 orders of magnitude) in a real database I am working on. Clearly,

In [12]: df.loc[[55555]] == df.loc[55555]
Out[12]:
0 1 2 3
55555 True True True True
55555 True True True True

(As a sidenote: the reason why I'm doing calls such as df.loc[[a_label]] is that df.loc[a_label] will return sometimes a Series, sometimes a DataFrame. I currently solve this by using df.loc[df.index == a_label], which is however ~3x slower than df.loc[a_label] - but much faster than the above df.loc[[a_label]].)

Issue 2:
Code example:

File test.csv:

,a,a,b
0,1,2,3
1,4,5,6

Python code:

import pandas as pd
df = pd.read_csv("test.csv")
df.columns.values

Gives ['a', 'a.1', 'b' ] and not, as documented ['a.0', 'a.1', 'b']

Problem description

The documentation states that names will be specified as ‘X.0’...’X.N’, but in fact the names become 'X','X.1',...'X.N'

So in contrast to what the documentation says, the duplicate column-name is not changed at the first occurrence and only subsequent occurrences get a number appended.

Expected Output

Either change the code to mangle the first duplicate column name, or simply fix the documentation.

Output of pd.show_versions()

INSTALLED VERSIONS

commit: None

python: 3.6.3.final.0

python-bits: 64

OS: Linux

OS-release: 4.14.11-200.fc26.x86_64

machine: x86_64

processor: x86_64

byteorder: little

LC_ALL: None

LANG: en_US.UTF-8

LOCALE: en_US.UTF-8

pandas: 0.22.0

pytest: 3.3.1

pip: 9.0.1

setuptools: 36.6.0

Cython: None

numpy: 1.14.0

scipy: 0.19.1

pyarrow: None

xarray: None

IPython: 6.2.1

sphinx: 1.5.5

patsy: None

dateutil: 2.6.1

pytz: 2017.3

blosc: None

bottleneck: 1.2.1

tables: 3.3.0

numexpr: 2.6.1

feather: None

matplotlib: 2.1.1

openpyxl: None

xlrd: 1.0.0

xlwt: 1.1.2

xlsxwriter: None

lxml: None

bs4: 4.6.0

html5lib: 1.0b10

sqlalchemy: 1.1.13

pymysql: None

psycopg2: 2.6.2 (dt dec pq3 ext lo64)

jinja2: 2.9.6

s3fs: None

fastparquet: None

pandas_gbq: None

pandas_datareader: None
Issue 1:
I have searched the issues of this repository and believe that this is not a duplicate.

I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.7.3

Operating System version: xxx

Java version: xxx

Steps to reproduce this issue

xxx

xxx

xxx

Pls. provide [GitHub address] to reproduce this issue.

Expected Result

What do you expected from the above steps？

dubbo应该强依赖1.20yaml

Actual Result

What actually happens?

If there is an exception, please attach the exception trace:

Just put your stack trace here!

Issue 2:
consume端发送URL时，怎么给URL添加自定义参数？

查阅官方文档，发现有个“信息交换扩展（exchanger）”貌似可以实现在发送的URL里添加自定义参数。

但，网上没有相关自定义扩展的案例，不知道如何实现？

我期望的是：

consume端，在发送URL时，携带sessionId一起发送，http请求。（求解）

provider端，配有Spring Session的请求拦截器，通过URL获取到sessionId，以达到session共享的目的。（这部分已经扩展，可以从Cookie和URL里拦截请求获取sessionId）

信息交换扩展

扩展说明

基于传输层之上，实现 Request-Response 信息交换语义。

扩展接口

com.alibaba.dubbo.remoting.exchange.Exchanger

com.alibaba.dubbo.remoting.exchange.ExchangeServer

com.alibaba.dubbo.remoting.exchange.ExchangeClient

扩展配置

<dubbo:protocol exchanger="xxx" />

<dubbo:provider exchanger="xxx" />

已知扩展

com.alibaba.dubbo.remoting.exchange.exchanger.HeaderExchanger