8000 Merge pull request #9075 from scop/spelling · numpy/numpy@c11628a · GitHub
[go: up one dir, main page]

Skip to content

Commit c11628a

Browse files
authored
Merge pull request #9075 from scop/spelling
ENH: Spelling fixes
2 parents 23b0cf3 + ef56845 commit c11628a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+60
-60
lines changed

doc/Py3K.rst.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ keep in mind.
721721
warnings if they are initialized in the old way.
722722

723723
2) The compare slot has been made reserved in order to preserve binary
724-
compatibily while the tp_compare function went away. The tp_richcompare
724+
compatibility while the tp_compare function went away. The tp_richcompare
725725
function has replaced it and we need to use that slot instead. This will
726726
likely require modifications in the searchsorted functions and generic sorts
727727
that currently use the compare function.

doc/cdoc/Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ TYPEDEF_HIDES_STRUCT = NO
292292
# causing a significant performance penality.
293293
# If the system has enough physical memory increasing the cache will improve the
294294
# performance by keeping more symbols in memory. Note that the value works on
295-
# a logarithmic scale so increasing the size by one will rougly double the
295+
# a logarithmic scale so increasing the size by one will roughly double the
296296
# memory usage. The cache size is given by this formula:
297297
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
298298
# corresponding to a cache size of 2^16 = 65536 symbols

doc/f2py/HISTORY.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ Public Release 2.32.225-1419
601601
- "From sky" program group is created only if ``groupcounter<1``.
602602
See TODO.txt.
603603
- Added support for ``dimension(n:*)``, ``dimension(*:n)``. They are
604-
treated as ``dimesnion(*)`` by f2py.
604+
treated as ``dimension(*)`` by f2py.
605605
- Fixed parameter substitution (this fixes TODO item by Patrick
606606
LeGresley, 22 Aug 2001).
607607

doc/f2py/apps.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ \subsection{Example: wrapping C library \texttt{fftw}}
2323
fftw_destroy_plan(p);
2424
}
2525
\end{verbatim}
26-
and here follows the corresponding siganture file (created manually):
26+
and here follows the corresponding signature file (created manually):
2727
\begin{verbatim}
2828
!%f90
2929
! File: fftw.f90

doc/f2py/multiarray/fortran_array_from_pyobj.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ Main goal:
157157
==========
158158

159159
Our goal is to generate Python C/API functions py_fun and py_cun such
160-
that their usage in Python would be identical. The cruical part of
160+
that their usage in Python would be identical. The crucial part of
161161
their implementation are in functions that take a PyObject and
162162
return a PyArrayObject such that it is contiguous and its data pointer
163163
is suitable for passing on to the arguments of C or Fortran functions.

doc/f2py/multiarray/transpose.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ Times are in seconds, for a 900*904 matrix:
179179
380 NAG 467 disc copy
180180
1.03 1.14 .391 .177
181181

182-
Compare two vector algortihms, one I wrote and the second a matrix
182+
Compare two vector algorithms, one I wrote and the second a matrix
183183
copy:
184184

185185
My Alg Matrix copy

doc/f2py/multiarrays.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ so that the checks can be performed in the proper order.
8181
effect but they are not so safe and I will not discuss about them here).
8282

8383
Hint: If the array a should be a work array (as used frequently in
84-
Fortran) and you a too lazy (its good lazyness;) to provide it (in Python)
84+
Fortran) and you a too lazy (its good laziness;) to provide it (in Python)
8585
then you can define it as optional by ediding the signature:
8686
subroutine foo(l,m,n,a)
8787
integer :: l

doc/release/1.13.0-notes.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ versions.
268268

269269
NumPy may be built with relaxed stride checking debugging
270270
---------------------------------------------------------
271-
Setting NPY_RELAXED_STRIDES_DEBUG=1 in the enviroment when relaxed stride
271+
Setting NPY_RELAXED_STRIDES_DEBUG=1 in the environment when relaxed stride
272272
checking is enabled will cause NumPy to be compiled with the affected strides
273273
set to the maximum value of npy_intp in order to help detect invalid usage of
274274
the strides in downstream projects. When enabled, invalid usage often results

doc/source/f2py/signature-file.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ Other statements:
284284
module`` block then the second multiline block is inserted
285285
after the definition of external routines.
286286

287-
When used inside ``<routine singature>``, then given C code will
287+
When used inside ``<routine signature>``, then given C code will
288288
be inserted to the corresponding wrapper function just after
289289
declaring variables but before any C statements. So, ``usercode``
290290
follow-up can contain both declarations and C statements.

doc/source/reference/arrays.dtypes.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ Built-in Python types
186186
================ ===============
187187

188188
Note that ``str`` refers to either null terminated bytes or unicode strings
189-
depending on the Python version. In code targetting both Python 2 and 3
189+
depending on the Python version. In code targeting both Python 2 and 3
190190
``np.unicode_`` should be used as a dtype for strings.
191191
See :ref:`Note on string types<string-dtype-note>`.
192192

doc/source/reference/c-api.ufunc.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ Functions
200200
or :c:data:`Py_None`. The callable object will only be used if
201201
:c:data:`UFUNC_ERR_CALL` is set as the desired error checking
202202
method. This routine manages the GIL and is safe to call even
203-
after releasing the GIL. If an error in the IEEE-compatibile
203+
after releasing the GIL. If an error in the IEEE-compatible
204204
hardware is determined a -1 is returned, otherwise a 0 is
205205
returned.
206206

doc/source/reference/ufuncs.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ Casting Rules
177177
.. note::
178178

179179
In NumPy 1.6.0, a type promotion API was created to encapsulate the
180-
mechansim for determining output types. See the functions
180+
mechanism for determining output types. See the functions
181181
:func:`result_type`, :func:`promote_types`, and
182182
:func:`min_scalar_type` for more details.
183183

doc/source/user/numpy-for-matlab-users.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ There are pros and cons to using both:
162162
- ``:)`` ``A*B`` is matrix multiplication, so more convenient for
163163
linear algebra.
164164
- ``<:(`` Element-wise multiplication requires calling a function,
165-
``multipy(A,B)``.
165+
``multiply(A,B)``.
166166
- ``<:(`` The use of operator overloading is a bit illogical: ``*``
167167
does not work elementwise but ``/`` does.
168168

numpy/core/_internal.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def _array_descr(descriptor):
132132
# Note that the name numpy.core._internal._reconstruct is embedded in
133133
# pickles of ndarrays made with NumPy before release 1.0
134134
# so don't remove the name here, or you'll
135-
# break backward compatibilty.
135+
# break backward compatibility.
136136
def _reconstruct(subtype, shape, dtype):
137137
return ndarray.__new__(subtype, shape, dtype)
138138

numpy/core/einsumfunc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def _find_contraction(positions, input_sets, output_set):
4646
"""
4747
Finds the contraction for a given set of input and output sets.
4848
49-
Paramaters
49+
Parameters
5050
----------
5151
positions : iterable
5252
Integer positions of terms used in the contraction.
@@ -108,7 +108,7 @@ def _optimal_path(input_sets, output_set, idx_dict, memory_limit):
108108
on ``memory_limit`` and returns the lowest cost path. This algorithm
109109
scales factorial with respect to the elements in the list ``input_sets``.
110110
111-
Paramaters
111+
Parameters
112112
----------
113113
input_sets : list
114114
List of sets that represent the lhs side of the einsum subscript
@@ -187,7 +187,7 @@ def _greedy_path(input_sets, output_set, idx_dict, memory_limit):
187187
``memory_limit``. This algorithm scales cubically with respect to the
188188
number of elements in the list ``input_sets``.
189189
190-
Paramaters
190+
Parameters
191191
----------
192192
input_sets : list
193193
List of sets that represent the lhs side of the einsum subscript

numpy/core/include/numpy/ufuncobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ typedef int (PyUFunc_TypeResolutionFunc)(
7878
*
7979
* ufunc: The ufunc object.
8080
* dtypes: An array which has been populated with dtypes,
81-
* in most cases by the type resolution funciton
81+
* in most cases by the type resolution function
8282
* for the same ufunc.
8383
* fixed_strides: For each input/output, either the stride that
8484
* will be used every time the function is called

numpy/core/machar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class MachAr(object):
3030
eps : float
3131
Floating-point number ``beta**machep`` (floating point precision)
3232
negep : int
33-
Exponent of the smallest power of `ibeta` that, substracted
33+
Exponent of the smallest power of `ibeta` that, subtracted
3434
from 1.0, gives something different from 1.0.
3535
epsneg : float
3636
Floating-point number ``beta**negep``.

numpy/core/src/multiarray/convert_datatype.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1530,7 +1530,7 @@ static int min_scalar_type_num(char *valueptr, int type_num,
15301530
}
15311531
/*
15321532
* The code to demote complex to float is disabled for now,
1533-
* as forcing complex by adding 0j is probably desireable.
1533+
* as forcing complex by adding 0j is probably desirable.
15341534
*/
15351535
case NPY_CFLOAT: {
15361536
/*

numpy/core/src/multiarray/ctors.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ _update_descr_and_dimensions(PyArray_Descr **des, npy_intp *newdims,
280280
npy_intp *mystrides;
281281

282282
mystrides = newstrides + oldnd;
283-
/* Make new strides -- alwasy C-contiguous */
283+
/* Make new strides -- always C-contiguous */
284284
tempsize = (*des)->elsize;
285285
for (i = numnew - 1; i >= 0; i--) {
286286
mystrides[i] = tempsize;

numpy/core/src/multiarray/datetime_busdaycal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ normalize_holidays_list(npy_holidayslist *holidays, npy_bool *weekmask)
234234
/* Sort the dates */
235235
qsort(dates, count, sizeof(npy_datetime), &qsort_datetime_compare);
236236

237-
/* Sweep throught the array, eliminating unnecessary values */
237+
/* Sweep through the array, eliminating unnecessary values */
238238
trimcount = 0;
239239
for (i = 0; i < count; ++i) {
240240
npy_datetime date = dates[i];

numpy/core/src/multiarray/getset.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ array_nbytes_get(PyArrayObject *self)
429429
* Also needing change: strides, itemsize
430430
*
431431
* Either itemsize is exactly the same or the array is single-segment
432-
* (contiguous or fortran) with compatibile dimensions The shape and strides
432+
* (contiguous or fortran) with compatible dimensions The shape and strides
433433
* will be adjusted in that case as well.
434434
*/
435435
static int

numpy/core/src/multiarray/hashdescr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ static int _array_descr_walk(PyArray_Descr* descr, PyObject *l)
253253
}
254254

255255
/*
256-
* Return 0 if successfull
256+
* Return 0 if successful
257257
*/
258258
static int _PyArray_DescrHashImp(PyArray_Descr *descr, npy_hash_t *hash)
259259
{

numpy/core/src/multiarray/iterators.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ iter_ass_subscript(PyArrayIterObject *self, PyObject *ind, PyObject *val)
911911
type = PyArray_DESCR(self->ao);
912912

913913
/*
914-
* Check for Boolean -- this is first becasue
914+
* Check for Boolean -- this is first because
915915
* Bool is a subclass of Int
916916
*/
917917
if (PyBool_Check(ind)) {

numpy/core/src/multiarray/mapping.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3305,7 +3305,7 @@ arraymapiter_dealloc(PyArrayMapIterObject *mit)
33053305
* The mapiter object must be created new each time. It does not work
33063306
* to bind to a new array, and continue.
33073307
*
3308-
* This was the orginal intention, but currently that does not work.
3308+
* This was the original intention, but currently that does not work.
33093309
* Do not expose the MapIter_Type to Python.
33103310
*
33113311
* The original mapiter(indexobj); mapiter.bind(a); idea is now fully

numpy/core/src/multiarray/multiarraymodule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3557,7 +3557,7 @@ compare_chararrays(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
35573557
char *cmp_str;
35583558
Py_ssize_t strlength;
35593559
PyObject *res = NULL;
3560-
static char msg[] = "comparision must be '==', '!=', '<', '>', '<=', '>='";
3560+
static char msg[] = "comparison must be '==', '!=', '<', '>', '<=', '>='";
35613561
static char *kwlist[] = {"a1", "a2", "cmp", "rstrip", NULL};
35623562

35633563
if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOs#O&:compare_chararrays",

numpy/core/src/multiarray/shape.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ PyArray_Newshape(PyArrayObject *self, PyArray_Dims *newdims,
294294

295295

296296

297-
/* For back-ward compatability -- Not recommended */
297+
/* For backward compatibility -- Not recommended */
298298

299299
/*NUMPY_API
300300
* Reshape

numpy/core/src/private/lowlevel_strided_loops.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ PyArray_GetDTypeTransferFunction(int aligned,
214214
/*
215215
* This is identical to PyArray_GetDTypeTransferFunction, but returns a
216216
* transfer function which also takes a mask as a parameter. The mask is used
217-
* to determine which values to copy, and data is transfered exactly when
217+
* to determine which values to copy, and data is transferred exactly when
218218
* mask[i*mask_stride] is true.
219219
*
220220
* If move_references is true, values which are not copied to the
@@ -286,7 +286,7 @@ PyArray_CastRawArrays(npy_intp count,
286286
* count:
287287
* How many elements to transfer
288288
* src_itemsize:
289-
* How big each element is. If transfering between elements of different
289+
* How big each element is. If transferring between elements of different
290290
* sizes, for example a casting operation, the 'stransfer' function
291291
* should be specialized for that, in which case 'stransfer' will use
292292
* this parameter as the source item size.

numpy/core/src/umath/ufunc_object.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ PyUFunc_handlefperr(int errmask, PyObject *errobj, int retstatus, int *first)
223223
NPY_NO_EXPORT int
224224
PyUFunc_checkfperr(int errmask, PyObject *errobj, int *first)
225225
{
226-
/* clearing is done for backward compatiblity */
226+
/* clearing is done for backward compatibility */
227227
int retstatus = npy_clear_floatstatus();
228228

229229
return PyUFunc_handlefperr(errmask, errobj, retstatus, first);

numpy/core/tests/test_einsum.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ def test_einsum_fixedstridebug(self):
643643

644644
def test_einsum_fixed_collapsingbug(self):
645645
# Issue #5147.
646-
# The bug only occured when output argument of einssum was used.
646+
# The bug only occurred when output argument of einssum was used.
647647
x = np.random.normal(0, 1, (5, 5, 5, 5))
648648
y1 = np.zeros((5, 5))
649649
np.einsum('aabb->ab', x, out=y1)

numpy/core/tests/test_multiarray.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4270,7 +4270,7 @@ def test_none_shape(self):
42704270
x.resize()
42714271
assert_array_equal(x, np.eye(3))
42724272

4273-
def test_invalid_arguements(self):
4273+
def test_invalid_arguments(self):
42744274
self.assertRaises(TypeError, np.eye(3).resize, 'hi')
42754275
self.assertRaises(ValueError, np.eye(3).resize, -1)
42764276
self.assertRaises(TypeError, np.eye(3).resize, order=1)

numpy/core/tests/test_nditer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1386,7 +1386,7 @@ def test_iter_allocate_output_itorder():
13861386
assert_equal(i.operands[1].dtype, np.dtype('f4'))
13871387

13881388
def test_iter_allocate_output_opaxes():
1389-
# Specifing op_axes should work
1389+
# Specifying op_axes should work
13901390

13911391
a = arange(24, dtype='i4').reshape(2, 3, 4)
13921392
i = nditer([None, a], [], [['writeonly', 'allocate'], ['readonly']],

numpy/f2py/src/fortranobjec 97AE t.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ fortran_setattr(PyFortranObject *fp, char *name, PyObject *v) {
370370
Py_DECREF(arr);
371371
}
372372
} else return (fp->defs[i].func==NULL?-1:0);
373-
return 0; /* succesful */
373+
return 0; /* successful */
374374
}
375375
if (fp->dict == NULL) {
376376
fp->dict = PyDict_New();

numpy/lib/_datasource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444

4545
# Using a class instead of a module-level dictionary
46-
# to reduce the inital 'import numpy' overhead by
46+
# to reduce the initial 'import numpy' overhead by
4747
# deferring the import of bz2 and gzip until needed
4848

4949
# TODO: .zip support, .tar support?

numpy/lib/function_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1607,7 +1607,7 @@ def gradient(f, *varargs, **kwargs):
16071607
16081608
Notes
16091609
-----
1610-
Assuming that :math:`f\\in C^{3}` (i.e., :math:`f` has at least 3 continous
1610+
Assuming that :math:`f\\in C^{3}` (i.e., :math:`f` has at least 3 continuous
16111611
derivatives) and let be :math:`h_{*}` a non homogeneous stepsize, the
16121612
spacing the finite difference coefficients are computed by minimising
16131613
the consistency error :math:`\\eta_{i}`:

numpy/lib/index_tricks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def __getitem__(self, key):
254254
if not isinstance(key, tuple):
255255
key = (key,)
256256

257-
# copy attributes, since they can be overriden in the first argument
257+
# copy attributes, since they can be overridden in the first argument
258258
trans1d = self.trans1d
259259
ndmin = self.ndmin
260260
matrix = self.matrix

numpy/lib/info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
polyint Integrate polynomial
104104
polyder Differentiate polynomial
105105
polyadd Add polynomials
106-
polysub Substract polynomials
106+
polysub Subtract polynomials
107107
polymul Multiply polynomials
108108
polydiv Divide polynomials
109109
polyval Evaluate polynomial at given argument

numpy/lib/shape_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def apply_over_axes(func, a, axes):
186186
Notes
187187
------
188188
This function is equivalent to tuple axis arguments to reorderable ufuncs
189-
with keepdims=True. Tuple axis arguments to ufuncs have been availabe since
189+
with keepdims=True. Tuple axis arguments to ufuncs have been available since
190190
version 1.7.0.
191191
192192
Examples

numpy/lib/tests/test_function_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,7 +2787,7 @@ def test_axis(self):
27872787
interpolation="higher").shape, (3, 3, 5, 6))
27882788

27892789
def test_scalar_q(self):
2790-
# test for no empty dimensions for compatiblity with old percentile
2790+
# test for no empty dimensions for compatibility with old percentile
27912791
x = np.arange(12).reshape(3, 4)
27922792
assert_equal(np.percentile(x, 50), 5.5)
27932793
self.assertTrue(np.isscalar(np.percentile(x, 50)))
@@ -2808,7 +2808,7 @@ def test_scalar_q(self):
28082808
assert_equal(np.percentile(x, 50, axis=1, out=out), r1)
28092809
assert_equal(out, r1)
28102810

2811-
# test for no empty dimensions for compatiblity with old percentile
2811+
# test for no empty dimensions for compatibility with old percentile
28122812
x = np.arange(12).reshape(3, 4)
28132813
assert_equal(np.percentile(x, 50, interpolation='lower'), 5.)
28142814
self.assertTrue(np.isscalar(np.percentile(x, 50)))

numpy/lib/tests/test_stride_tricks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ def test_writeable():
407407
_, result = broadcast_arrays(0, original)
408408
assert_equal(result.flags.writeable, False)
409409

410-
# regresssion test for GH6491
410+
# regression test for GH6491
411411
shape = (2,)
412412
strides = [0]
413413
tricky_array = as_strided(np.array(0), shape, strides)

numpy/lib/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def who(vardict=None):
339339
#-----------------------------------------------------------------------------
340340

341341

342-
# NOTE: pydoc defines a help function which works simliarly to this
342+
# NOTE: pydoc defines a help function which works similarly to this
343343
# except it uses a pager to take over the screen.
344344

345345
# combine name and arguments and split to multiple lines of width

0 commit comments

Comments
 (0)
0