Deprecations#
Policy#
If the behavior of the library has to be changed, a deprecation cycle must be followed to warn users.
A deprecation cycle is not necessary when:
adding a new function, or
adding a new keyword argument to the end of a function signature, or
fixing buggy behavior
A deprecation cycle is necessary for any breaking API change, meaning a change where the function, invoked with the same arguments, would return a different result after the change. This includes:
changing the order of arguments or keyword arguments, or
adding arguments or keyword arguments to a function, or
changing the name of a function, class, method, etc., or
moving a function, class, etc. to a different module, or
changing the default value of a function’s arguments.
Usually, our policy is to put in place a deprecation cycle over two minor releases (e.g., if a deprecation warning appears in 2.3, then the functionality should be removed in 2.5). For major releases we usually require that all deprecations have at least a 1-release deprecation cycle (e.g., if 3.0 occurs after 2.5, then all removed functionality in 3.0 should be deprecated in 2.5).
Note that these 1- and 2-release deprecation cycles for major and minor releases is not a strict rule and in some cases, the developers can agree on a different procedure upon justification (like when we can’t detect the change, or it involves moving or deleting an entire function for example).
Todo#
Make sure to review networkx/conftest.py
after removing deprecated code.
Version 3.0#
In
readwrite/gml.py
removeliteral_stringizer
and related tests.In
readwrite/gml.py
removeliteral_destringizer
and related tests.In
utils/misc.py
removeis_string_like
and related tests.In
utils/misc.py
removemake_str
and related tests.In
utils/misc.py
removeis_iterator
.In
utils/misc.py
removeiterable
.In
utils/misc.py
removeis_list_of_ints
.In
utils/misc.py
removeconsume
.In
utils/misc.py
removedefault_opener
.In
utils/misc.py
removeempty_generator
.Remove
utils/contextmanagers.py
and related tests.In
drawing/nx_agraph.py
removedisplay_pygraphviz
and related tests.In
algorithms/chordal.py
replacechordal_graph_cliques
with_chordal_graph_cliques
.In
algorithms/centrality/betweenness_centrality_subset.py
removebetweenness_centrality_source
.In
algorithms/centrality/betweenness.py
removeedge_betweeness
.In
algorithms/community_modularity_max.py
remove old name_naive_greedy_modularity_communities
.In
linalg/algebraicconnectivity.py
remove_CholeskySolver
and related code.In
convert_matrix.py
removeto_numpy_matrix
andfrom_numpy_matrix
.In
readwrite/json_graph/cytoscape.py
, change function signature forcytoscape_graph
andcytoscape_data
to replace theattrs
keyword. argument with explicitname
andident
keyword args.In
readwrite/json_graph/tree.py
, removeattrs
kwarg fromtree_graph
andtree_data
.Undo changes related to the removal of
pyyaml
. Remove the__getattr__
definitions fromnetworkx/__init__.py
,networkx/readwrite/__init__.py
andnetworkx/readwrite/nx_yaml.py
and removenetworkx/readwrite/tests/test_getattr_nxyaml_removal.py
Remove
readwrite/gpickle.py
and related tests.Remove
readwrite/nx_shp.py
and related tests (add info in alternatives).Remove
copy
method in the coreview Filtered-related classes and related tests.In
algorithms/link_analysis/pagerank_alg.py
replacepagerank
withpagerank_scipy
.In
algorithms/link_analysis/pagerank_alg.py
renamepagerank_numpy
as_pagerank_numpy
.In
convert_matrix.py
removeorder
kwarg fromto_pandas_edgelist
and docstringRemove
readwrite/json_graph/jit.py
and related tests.In
utils/misc.py
removegenerate_unique_node
and related tests.In
algorithms/link_analysis/hits_alg.py
removehub_matrix
andauthority_matrix
In
algorithms/link_analysis/hits_alg.py
, removehits_numpy
andhist_scipy
.In
classes
remove theordered
module and the fourOrdered
classes defined therein.In
utils/decorators.py
removepreserve_random_state
.In
algorithms/community/quality.py
removecoverage
andperformance
.Remove
testing
.In
linalg/graphmatrix.py
removeadj_matrix
.In
algorithms/similarity.py
replacesimrank_similarity
withsimrank_similarity_numpy
.In
algorithms/assortativity/mixing.py
removenumeric_mixing_matrix
.In
algorithms/assortativity/connectivity.py
removek_nearest_neighbors
.In
utils/decorators.py
removerandom_state
.In
algorithms/operators/binary.py
removename
kwarg fromunion
and docstring.In
generators/geometric.py
removeeuclidean
and tests.In
algorithms/node_classification/
removehmn.py
,lgc.py
, andutils.py
after moving the functions defined therein into the newly creatednode_classification.py
module, which will replace the current package.In
algorithms/link_analysis/pagerank_alg.py
, remove thenp.asmatrix
wrappers on the return values ofgoogle_matrix
and remove the associated FutureWarning.In
convert_matrix.py
removefrom_scipy_sparse_matrix
andto_scipy_sparse_matrix
.In
linalg/attrmatrix.py
remove the FutureWarning, update the return type by removingnp.asmatrix
, and update the docstring to reflect that the function returns anumpy.ndarray
instance.In
generators/small.py
removemake_small_graph
andmake_small_undirected_graph
.In
convert_matrix.py
removeto_numpy_recarray
.In
classes/function.py
removeinfo
.In
algorithms/community/modularity_max.py
, remove the deprecatedn_communities
parameter from thegreedy_modularity_communities
function.In
algorithms/distance_measures.py
removeextrema_bounding
.In
utils/misc.py
removedict_to_numpy_array1
anddict_to_numpy_array2
.In
utils/misc.py
removeto_tuple
.In
algorithms/matching.py
, remove parametermaxcardinality
frommin_weight_matching
.In
drawing/nx_pydot.py
, change PendingDeprecationWarning to DeprecationWarning.
Version 3.2#
In
generators/directed.py
remove thecreate_using
keyword argument for thescale_free_graph
function.Remove pydot functionality
drawing/nx_pydot.py
, if pydot is still not being maintained. See #5723In
readwrite/json_graph/node_link.py
remove theattrs` keyword code and docstring in ``node_link_data
andnode_link_graph
. Also the associated tests.